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()