Nawigacja po atrybutach i przestrzeni nazw węzła przy użyciu klasy XPathNavigator

Klasa XPathNavigator udostępnia dwa zestawy metod nawigacji, pierwszy zestaw znajdujący się w temacie Nawigacji zestawu węzłów przy użyciu XPathNavigator , są używane do nawigowania po zestawach węzłów w obiekcie XPathDocument lub XmlDocument . Drugi zestaw, opisany w tym temacie, służy do nawigowania po węzłach atrybutu i przestrzeni nazw w XPathDocument obiekcie lub XmlDocument .

Nawigacja w węźle atrybutu

Atrybuty to właściwości elementu, a nie elementów podrzędnych elementu. To rozróżnienie jest ważne ze względu na metody klasy używanej do nawigowania po węzłach równorzędnych XPathNavigator , nadrzędnych i podrzędnych.

Na przykład MoveToPrevious metody i MoveToNext nie są używane do przechodzenia z elementu do atrybutu lub między atrybutami. Zamiast tego atrybuty mają różne metody nawigacji.

Poniżej przedstawiono metody nawigacji atrybutów XPathNavigator klasy.

Gdy bieżący węzeł jest elementem, możesz użyć HasAttributes właściwości , aby sprawdzić, czy istnieją jakieś atrybuty skojarzone z elementem. Gdy wiadomo, że element ma atrybuty, istnieje wiele metod uzyskiwania dostępu do atrybutów. Aby pobrać pojedynczy atrybut z elementu, użyj GetAttribute metody . Aby przenieść element XPathNavigator do określonego atrybutu MoveToAttribute , użyj metody . Można również iterować każdy atrybut elementu przy użyciu MoveToFirstAttribute metody , a następnie wiele wywołań metody MoveToNextAttribute .

Uwaga

Gdy obiekt jest umieszczony na atrybucie XPathNavigator lub węźle przestrzeni nazw, MoveToChildmetody , MoveToFirst, MoveToFirstChild, MoveToNextMoveToFollowingMoveToId, i MoveToPrevious zawsze zwracają falsewartość , i nie mają wpływu na położenie obiektu XPathNavigator. Wyjątki to MoveTometody , MoveToParenti MoveToRoot .

Nawigacja węzła przestrzeni nazw

Każdy element ma skojarzony zestaw węzłów przestrzeni nazw, jeden dla każdego odrębnego prefiksu przestrzeni nazw, który jest powiązany z identyfikatorem URI przestrzeni nazw w zakresie elementu (w tym prefiks XML powiązany z http://www.w3.org/XML/1998/namespace przestrzenią nazw, który jest niejawnie zadeklarowany w każdym dokumencie XML) i jeden dla domyślnej przestrzeni nazw, jeśli jeden jest w zakresie elementu. Element jest elementem nadrzędnym każdego z tych węzłów nazw; jednak węzła obszaru nazw nie jest elementem podrzędnym odpowiedniego elementu nadrzędnego.

Podobnie jak w przypadku atrybutów metody MoveToPrevious i MoveToNext nie są używane do przechodzenia z elementu do węzła przestrzeni nazw ani między węzłami przestrzeni nazw. Zamiast tego węzły przestrzeni nazw mają różne metody nawigacji.

Poniżej przedstawiono metody nawigacji przestrzeni nazw klasy XPathNavigator .

W zakresie każdego elementu w dokumencie XML zawsze istnieje co najmniej jeden węzeł przestrzeni nazw. Jest to węzeł przestrzeni nazw z prefiksem xml i identyfikatorem URI http://www.w3.org/XML/1998/namespaceprzestrzeni nazw. Aby pobrać identyfikator URI przestrzeni nazw w zakresie określonym prefiksem, użyj GetNamespace metody . Aby przenieść XPathNavigator obiekt do określonego węzła przestrzeni nazw, użyj MoveToNamespace metody . Można również iterować poszczególne węzły przestrzeni nazw w zakresie dla elementu przy użyciu MoveToFirstNamespace metody, po której następuje wiele wywołań MoveToNextNamespace metody .

Uwaga

Gdy obiekt jest umieszczony na atrybucie XPathNavigator lub węźle przestrzeni nazw, MoveToChildmetody , MoveToFirst, MoveToFirstChild, MoveToNextMoveToFollowingMoveToId, i MoveToPrevious zawsze zwracają falsewartość , i nie mają wpływu na położenie obiektu XPathNavigator. Wyjątki to MoveTometody , MoveToParenti MoveToRoot .

Wyliczenie XPathNamespaceScope

Podczas nawigowania po węzłach MoveToFirstNamespace przestrzeni nazw metody i MoveToNextNamespace mogą być wywoływane za pomocą parametru XPathNamespaceScope . Metody te zachowują się inaczej niż ich odpowiedniki nazywane bez parametrów. Wyliczenie XPathNamespaceScope ma wartości All, ExcludeXmllub Local.

W poniższych przykładach pokazano, jakie przestrzenie nazw są zwracane przez MoveToFirstNamespace metody i MoveToNextNamespace w różnych zakresach w dokumencie XML.

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

Sekwencja przestrzeni nazw (przestrzeń nazw, którą XPathNavigator znajduje się po wywołaniu MoveToFirstNamespace metody, po której następuje seria wywołań MoveToNextNamespace metody), jest następująca.

  • Po ustawieniu pozycji na : element2xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com"i xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • Po ustawieniu pozycji na : element1xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com"i xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • Po ustawieniu pozycji na :rootxmlns:xml="http://www.w3.org/XML/1998/namespace".

Uwaga

Klasa XPathNavigator zwraca węzły przestrzeni nazw w odwrotnej kolejności dokumentów. MoveToFirstNamespace W związku z tym zasadniczo przechodzi do ostatniego węzła przestrzeni nazw w bieżącym zakresie.

W poniższych przykładach pokazano, jakie przestrzenie nazw są zwracane przez MoveToFirstNamespace metody i MoveToNextNamespace z XPathNamespaceScope wyliczeniem określonym w różnych zakresach w dokumencie XML.

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

Po ustawieniu pozycji w child2obiekcie sekwencja przestrzeni nazw (przestrzeń nazw, którą XPathNavigator znajduje się po wywołaniu MoveToFirstNamespace metody, po której następuje seria wywołań MoveToNextNamespace metody), jest następująca.

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

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

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

Uwaga

Klasa XPathNavigator zwraca węzły przestrzeni nazw w odwrotnej kolejności dokumentów. MoveToFirstNamespace W związku z tym zasadniczo przechodzi do ostatniego węzła przestrzeni nazw w bieżącym zakresie.

Zobacz też