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 属性和这个方法一起使用。 |