다음을 통해 공유


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

XPathNavigator 클래스는 두 개의 탐색 메서드 집합을 제공합니다. XPathNavigator를 사용하여 노드 집합 탐색 항목에서 찾을 수 있는 첫 번째 집합은 XPathDocument 또는 XmlDocument 개체의 ‘노드 집합’을 탐색하는 데 사용합니다. 이 항목에서 설명하는 두 번째 집합은 XPathDocument 또는 XmlDocument 개체의 ‘특성 및 네임스페이스 노드’를 탐색하는 데 사용합니다.

특성 노드 탐색

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

예를 들어, MoveToPreviousMoveToNext 메서드는 요소와 특성 사이 또는 특성 간을 탐색하는 데 사용되지 않습니다. 대신 특성에는 구분되는 탐색 메서드가 있습니다.

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

현재 노드가 요소이면 HasAttributes 속성을 사용하여 해당 요소와 연관된 특성이 있는지 확인할 수 있습니다. 요소에 특성이 있다고 확인되면 특성에 액세스하기 위한 여러 메서드가 있는 것입니다. 요소에서 단일 특성을 검색하려면 GetAttribute 메서드를 사용합니다. XPathNavigator를 특정 특성으로 이동하려면 MoveToAttribute 메서드를 사용합니다. MoveToFirstAttribute 메서드를 사용하고 그 다음에 MoveToNextAttribute 메서드를 여러 번 호출하면 요소의 각 특성을 반복할 수 있습니다.

참고 항목

XPathNavigator 개체가 특성 또는 네임스페이스 노드에 위치하면 MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNextMoveToPrevious 메서드는 항상 false를 반환하고 XPathNavigator의 위치에는 영향을 주지 않습니다. 예외에는 MoveTo, MoveToParentMoveToRoot메서드가 있습니다.

네임스페이스 노드 탐색

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

특성과 마찬가지로 MoveToPreviousMoveToNext 메서드는 요소와 네임스페이스 노드 또는 네임스페이스 노드 간을 탐색하는 데 사용되지 않습니다. 대신 네임스페이스 노드에는 구분되는 탐색 메서드가 있습니다.

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

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

참고 항목

XPathNavigator 개체가 특성 또는 네임스페이스 노드에 위치하면 MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNextMoveToPrevious 메서드는 항상 false를 반환하고 XPathNavigator의 위치에는 영향을 주지 않습니다. 예외에는 MoveTo, MoveToParentMoveToRoot메서드가 있습니다.

XPathNamespaceScope 열거형

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

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

<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 열거형을 지정한 경우 MoveToNextNamespaceXPathNamespaceScope 메서드가 반환하는 네임스페이스를 보여 줍니다.

<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는 기본적으로 현재 범위의 마지막 네임스페이스 노드로 이동합니다.

참고 항목