다음을 통해 공유


XPathNavigator를 사용하여 특성 및 네임스페이스 노드 탐색

클래스는 XPathNavigator 두 개의 탐색 메서드 집합을 제공합니다. 첫 번째 집합은 XPathNavigator를 사용하여 노드 집합 탐색 항목에 있으며 이 또는 XmlDocument 객체 내의 노드 집합을 탐색하는 데 사용됩니다. 이 항목에서 설명된 두 번째 집합은 또는 XPathDocument 개체 안의 XmlDocument를 탐색하는 데 사용됩니다.

특성 노드 탐색

특성은 요소의 자식이 아니라 요소의 속성입니다. 형제 노드, 부모 및 자식 노드를 탐색하는 데 사용되는 클래스의 XPathNavigator 메서드 때문에 이러한 구분이 중요합니다.

예를 들어 MoveToPrevious 요소에서 특성으로 또는 특성 간을 탐색하는 데는 메서드와 MoveToNext 메서드를 사용하지 않습니다. 대신 특성에는 고유한 탐색 방법이 있습니다.

다음은 클래스의 특성 탐색 메서드입니다 XPathNavigator .

현재 노드가 요소인 경우 속성을 사용하여 HasAttributes 요소와 연결된 특성이 있는지 확인할 수 있습니다. 요소에 특성이 있다는 것을 알고 나면 특성에 액세스하는 여러 메서드가 있습니다. 요소에서 단일 특성을 검색하려면 메서드를 GetAttribute 사용합니다. 특정 특성에 XPathNavigator를 이동하려면 MoveToAttribute 메서드를 사용하십시오. 요소의 각 속성을 반복하기 위해 MoveToFirstAttribute 메서드를 사용한 후 여러 번 MoveToNextAttribute 메서드를 호출할 수도 있습니다.

비고

개체가 XPathNavigator 특성 또는 네임스페이스 노드MoveToChild에 배치되면 MoveToChild, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext, MoveToPreviousfalse 메서드는 항상 XPathNavigator을 반환하고 위치에는 영향을 주지 않습니다. 예외는 , MoveToMoveToParent 메서드입니다MoveToRoot.

네임스페이스 노드 탐색

각 요소에는 요소 범위의 네임스페이스 URI에 바인딩된 각 고유 네임스페이스 접두사(모든 XML 문서에서 암시적으로 선언되는 네임스페이스에 바인딩된 http://www.w3.org/XML/1998/namespace XML 접두사 포함)와 요소 범위에 있는 경우 기본 네임스페이스에 대해 하나씩 연결된 네임스페이스 노드 집합이 있습니다. 요소는 이러한 각 네임스페이스 노드의 부모입니다. 그러나 네임스페이스 노드는 부모 요소의 자식이 아닙니다.

특히 속성과 마찬가지로, MoveToPrevious 메서드와 MoveToNext 메서드는 요소에서 네임스페이스 노드로 또는 네임스페이스 노드 간에 이동하는 데 사용되지 않습니다. 대신 네임스페이스 노드에는 고유한 탐색 방법이 있습니다.

다음은 클래스의 네임스페이스 탐색 메서드입니다 XPathNavigator .

XML 문서의 모든 요소에 대한 범위에는 항상 하나 이상의 네임스페이스 노드가 있습니다. 이 네임스페이스 노드는 접두사 xml 및 네임스페이스 URI http://www.w3.org/XML/1998/namespace를 포함합니다. 특정 접두사로 지정된 범위에서 네임스페이스 URI를 검색하려면 이 메서드를 GetNamespace 사용합니다. XPathNavigator 개체를 특정 네임스페이스 노드로 이동하려면 MoveToNamespace 메서드를 사용하세요. 요소 범위의 각 네임스페이스 노드를 반복하려면 MoveToFirstNamespace 메서드를 사용한 후 여러 차례 MoveToNextNamespace 메서드를 호출할 수 있습니다.

비고

개체가 XPathNavigator 특성 또는 네임스페이스 노드MoveToChild에 배치되면 MoveToChild, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext, MoveToPreviousfalse 메서드는 항상 XPathNavigator을 반환하고 위치에는 영향을 주지 않습니다. 예외는 , MoveToMoveToParent 메서드입니다MoveToRoot.

XPathNamespaceScope 열거형

네임스페이스 노드를 탐색할 때 매개 변수를 MoveToFirstNamespace 사용하여 메서드를 MoveToNextNamespaceXPathNamespaceScope 호출할 수 있습니다. 이러한 메서드는 매개 변수 없이 호출된 메서드와 다르게 동작합니다. 열거형 XPathNamespaceScope에는 값 All, ExcludeXml, 또는 Local가 있습니다.

다음 예제에서는 MoveToFirstNamespaceMoveToNextNamespace 메서드가 XML 문서의 다양한 범위에서 반환하는 네임스페이스를 보여 줍니다.

<root>  
    <element1 xmlns="http://www.contoso.com" xmlns:books="http://www.contoso.com/books">  
        <element2 />  
    </element1>  
</root>  

네임스페이스 시퀀스(메서드 XPathNavigator를 호출한 후 네임스페이스 MoveToFirstNamespace에 배치된 다음 메서드 MoveToNextNamespace에 대한 일련의 호출)는 다음과 같습니다.

  • element2위에 있을 때: xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com", 및 xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • element1위에 있을 때: xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com", 및 xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • 위치에 배치되는 root경우: xmlns:xml="http://www.w3.org/XML/1998/namespace".

비고

클래스는 XPathNavigator 네임스페이스 노드를 역방향 문서 순서로 반환합니다. 따라서 MoveToFirstNamespace 기본적으로 현재 범위의 마지막 네임스페이스 노드로 이동합니다.

다음 예제에서는 XML 문서의 다양한 범위에 지정된 MoveToFirstNamespace 열거형에 따라 MoveToNextNamespace 메서드와 XPathNamespaceScope 메서드가 반환하는 네임스페이스를 보여줍니다.

<root xmlns="http://www.contoso.com" xmlns:a="http://www.contoso.com/a" xmlns:b="http://www.contoso.com/b">  
    <child1 xmlns="" xmlns:a="urn:a">  
        <child2 xmlns:c="urn:c" />  
    </child1>  
</root>  

child2에 위치할 때, 네임스페이스 시퀀스는 다음과 같습니다: XPathNavigator 메서드를 호출한 다음, MoveToFirstNamespace에 위치한 네임스페이스 및 MoveToNextNamespace 메서드에 대한 일련의 호출 후.

  • All: xmlns:c="urn:c", xmlns:a="urn:a", xmlns="", xmlns:b="http://www.contoso.com/b", xmlns:a="http://www.contoso.com/a", xmlns="http://www.contoso.com"xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • ExcludeXml: xmlns:c="urn:c", xmlns:a="urn:a", xmlns="", xmlns:b="http://www.contoso.com/b", xmlns:a="http://www.contoso.com/a"xmlns="http://www.contoso.com".

  • Local: xmlns:c="urn:c".

비고

클래스는 XPathNavigator 네임스페이스 노드를 역방향 문서 순서로 반환합니다. 따라서 MoveToFirstNamespace 기본적으로 현재 범위의 마지막 네임스페이스 노드로 이동합니다.

참고하십시오