XPath 查詢的結(jié)果。
XML DOM XPathResult 對象
XPathResult 對象
XPathResult 對象表示一個 XPath 表達式的值。該類型的對象由 Document.evaluate() 和 XPathExpression.evaluate() 返回。XPath 查詢可以計算為字符串、數(shù)字、布爾值、節(jié)點以及節(jié)點的列表。XPath 實現(xiàn)可以以幾種不同的方式返回節(jié)點的列表,因此,這個對象為獲取一個 XPath 查詢的實際結(jié)果而定義了略為復雜的 API。
要使用一個 XPathResult,首先檢查 resultType 屬性。它將保存一個 XPathResult 常量。這個屬性的值告訴你需要使用哪個屬性和方法來確定結(jié)果值。調(diào)用不是為當前的 resultType 定義的方法或者讀取不是為它定義的屬性會導致異常。
IE 不支持 XPathResult API。要在 IE 中執(zhí)行 XPath 查詢,參閱 Node.selectNodes() 和 Node.selectSingleNode() 。
XPathResult 對象的常量
如下常量定義了一個 XPath 查詢可能返回的類型。XPathResult 對象的 resultType 屬性保存了這些值中的一個,用來指定對象保存何種結(jié)果。這些常量與 Document.evaluate() 和 XPathExpression.evaluate() 一起使用,用來指定期待的結(jié)果類型。
這些常量及其含義如下:
- ANY_TYPE
- 把這個值傳遞給 Document.evaluate() 或 XPathExpression.evaluate() 來指定可接受的結(jié)果類型。屬性 resultType 并不設(shè)置這個值。
- NUMBER_TYPE
- numbervalue 保存結(jié)果。
- STRING_TYPE
- stringvalue 保存結(jié)果。
- BOOLEAN_TYPE
- booleanValue 保存結(jié)果。
- UNORDERED_NODE_ITERATOR_TYPE
- 這個結(jié)果是節(jié)點的無序集合,可以通過重復調(diào)用 iterateNext() 直到返回 null 來依次訪問。在此迭代過程中,文檔必須不被修改。
- ORDERED_NODE_ITERATOR_TYPE
- 結(jié)果是節(jié)點的列表,按照文檔中的屬性排列,可以通過重復調(diào)用 iterateNext() 直到返回 null 來依次訪問。在此迭代過程中,文檔必須不被修改。
- UNORDERED_NODE_SNAPSHOT_TYPE
- 結(jié)果是一個隨機訪問的節(jié)點列表。snapshotLength 屬性指定了列表的長度,并且 snapshotItem() 方法返回指定下標的節(jié)點。節(jié)點可能和它們出現(xiàn)在文檔中的順序不一樣。既然這種結(jié)果是一個“快照”,因此即便文檔發(fā)生變化,它也有效。
- ORDERED_NODE_SNAPSHOT_TYPE
- 這個結(jié)果是一個隨機訪問的節(jié)點列表,就像 UNORDERED_NODE_SNAPSHOT_TYPE,只不過這個列表是按照文檔中的順序排列的。
- ANY_UNORDERED_NODE_TYPE
- singleNodeValue 屬性引用和查詢匹配的一個節(jié)點,如果沒有匹配的節(jié)點則為 null。如果有多個節(jié)點和查詢匹配,singleNodeValue 可能是任何一個匹配節(jié)點。
- FIRST_ORDERED_NODE_TYPE
- singleNodeValue 保存了文檔中的第一個和查詢匹配的節(jié)點,如果沒有匹配的節(jié)點,則為 null。
XPathResult 對象的實例屬性
這里的很多屬性只有當 resultType 保存了一個特定的值時才有效。訪問并非為當前 resultType 定義的屬性會導致異常。
- booleanValue
- 當 resultType 為 BOOLEAN_TYPE 時,保存結(jié)果值。
- invalidIteratorState
- 如果 resultType 是 ITERATOR_TYPE 常量中的一個并且文檔已經(jīng)修改,則為 true;它使迭代無效,因為結(jié)果已經(jīng)返回。
- numberValue
- 當 resultType 為 NUMBER_TYPE 時,保存結(jié)果值。
- resultType
- 使用 XPath 查詢返回何種結(jié)果。它的值是前面列出等常量之一。這個屬性的值告訴你可以使用那些其他屬性和方法。
- singleNodeValue
- 當 resultType 為 XPathResult.ANY_UNORDERED_NODE_TYPE 或 XPathResult.FIRST_UNORDERED_NODE_TYPE 時,保存結(jié)果值。
- snapshotLength
- 當 resultType 為 UNORDERED_NODE_SNAPSHOT_TYPE 或 ORDERED_NODE_ITERATOR_TYPE 時,指定返回的節(jié)點數(shù)。和 snapshotItem() 聯(lián)合使用這一屬性。
- stringValue
- 當 resultType 為 STRING_TYPE 時,保存結(jié)果值。
XPathResult 對象的方法
方法 | 描述 |
---|---|
iterateNext() | 如果 resultType 是 UNORDERED_NODE_ITERATOR_TYPE 或 ORDERED_NODE_ITERATOR_TYPE,使用這個一方法。 |
snapshotItem() | 返回結(jié)果節(jié)點列表中指定下標的節(jié)點。這個方法只有在 resultType 是 UNORDERED_NODE_SNAPSHOT_TYPE 或 ORDERED_NODE_SNAPSHOT_TYPE 的時候才能使用。snapshotLength 屬性和這個方法一起使用。 |
相關(guān)頁面
Document.evaluate() 和 XPathExpression.evaluate()
上一篇: XML DOM 解析器錯誤(Parser Errors) 下一篇: XML DOM XSLTProcessor 對象