XML DOM XPathResult 對象

XPath 查詢的結果。

XPathResult 對象

XPathResult 對象表示一個 XPath 表達式的值。該類型的對象由 Document.evaluate()XPathExpression.evaluate() 返回。XPath 查詢可以計算為字符串、數字、布爾值、節點以及節點的列表。XPath 實現可以以幾種不同的方式返回節點的列表,因此,這個對象為獲取一個 XPath 查詢的實際結果而定義了略為復雜的 API。

要使用一個 XPathResult,首先檢查 resultType 屬性。它將保存一個 XPathResult 常量。這個屬性的值告訴你需要使用哪個屬性和方法來確定結果值。調用不是為當前的 resultType 定義的方法或者讀取不是為它定義的屬性會導致異常。

IE 不支持 XPathResult API。要在 IE 中執行 XPath 查詢,參閱 Node.selectNodes()Node.selectSingleNode()

XPathResult 對象的常量

如下常量定義了一個 XPath 查詢可能返回的類型。XPathResult 對象的 resultType 屬性保存了這些值中的一個,用來指定對象保存何種結果。這些常量與 Document.evaluate() 和 XPathExpression.evaluate() 一起使用,用來指定期待的結果類型。

這些常量及其含義如下:

ANY_TYPE
把這個值傳遞給 Document.evaluate() 或 XPathExpression.evaluate() 來指定可接受的結果類型。屬性 resultType 并不設置這個值。
NUMBER_TYPE
numbervalue 保存結果。
STRING_TYPE
stringvalue 保存結果。
BOOLEAN_TYPE
booleanValue 保存結果。
UNORDERED_NODE_ITERATOR_TYPE
這個結果是節點的無序集合,可以通過重復調用 iterateNext() 直到返回 null 來依次訪問。在此迭代過程中,文檔必須不被修改。
ORDERED_NODE_ITERATOR_TYPE
結果是節點的列表,按照文檔中的屬性排列,可以通過重復調用 iterateNext() 直到返回 null 來依次訪問。在此迭代過程中,文檔必須不被修改。
UNORDERED_NODE_SNAPSHOT_TYPE
結果是一個隨機訪問的節點列表。snapshotLength 屬性指定了列表的長度,并且 snapshotItem() 方法返回指定下標的節點。節點可能和它們出現在文檔中的順序不一樣。既然這種結果是一個“快照”,因此即便文檔發生變化,它也有效。
ORDERED_NODE_SNAPSHOT_TYPE
這個結果是一個隨機訪問的節點列表,就像 UNORDERED_NODE_SNAPSHOT_TYPE,只不過這個列表是按照文檔中的順序排列的。
ANY_UNORDERED_NODE_TYPE
singleNodeValue 屬性引用和查詢匹配的一個節點,如果沒有匹配的節點則為 null。如果有多個節點和查詢匹配,singleNodeValue 可能是任何一個匹配節點。
FIRST_ORDERED_NODE_TYPE
singleNodeValue 保存了文檔中的第一個和查詢匹配的節點,如果沒有匹配的節點,則為 null。

XPathResult 對象的實例屬性

這里的很多屬性只有當 resultType 保存了一個特定的值時才有效。訪問并非為當前 resultType 定義的屬性會導致異常。

booleanValue
當 resultType 為 BOOLEAN_TYPE 時,保存結果值。
invalidIteratorState
如果 resultType 是 ITERATOR_TYPE 常量中的一個并且文檔已經修改,則為 true;它使迭代無效,因為結果已經返回。
numberValue
當 resultType 為 NUMBER_TYPE 時,保存結果值。
resultType
使用 XPath 查詢返回何種結果。它的值是前面列出等常量之一。這個屬性的值告訴你可以使用那些其他屬性和方法。
singleNodeValue
當 resultType 為 XPathResult.ANY_UNORDERED_NODE_TYPE 或 XPathResult.FIRST_UNORDERED_NODE_TYPE 時,保存結果值。
snapshotLength
當 resultType 為 UNORDERED_NODE_SNAPSHOT_TYPE 或 ORDERED_NODE_ITERATOR_TYPE 時,指定返回的節點數。和 snapshotItem() 聯合使用這一屬性。
stringValue
當 resultType 為 STRING_TYPE 時,保存結果值。

XPathResult 對象的方法

方法 描述
iterateNext() 如果 resultType 是 UNORDERED_NODE_ITERATOR_TYPE 或 ORDERED_NODE_ITERATOR_TYPE,使用這個一方法。
snapshotItem() 返回結果節點列表中指定下標的節點。這個方法只有在 resultType 是 UNORDERED_NODE_SNAPSHOT_TYPE 或 ORDERED_NODE_SNAPSHOT_TYPE 的時候才能使用。snapshotLength 屬性和這個方法一起使用。

相關頁面

Document.evaluate()XPathExpression.evaluate()