Udostępnij za pomocą


Nawigacja w węzłach atrybutów i przestrzeni nazw za pomocą 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 nawigacji po węzłach atrybutu i przestrzeni nazw w obiekcie XPathDocument lub XmlDocument.

Nawigacja po węzłach atrybutów

Atrybuty to właściwości elementu, a nie jego elementy podrzędne. To rozróżnienie jest ważne ze względu na metody klasy XPathNavigator używane do nawigacji po węzłach równorzędnych, 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ć po każdym atrybucie elementu przy użyciu MoveToFirstAttribute i następnie wielu wywołań metody MoveToNextAttribute.

Uwaga / Notatka

Gdy obiekt jest umieszczony na atrybucie XPathNavigator lub węźle przestrzeni nazw, metody MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext i MoveToPrevious zawsze zwracają false i nie mają wpływu na położenie obiektu XPathNavigator. Wyjątki stanowią metody MoveTo, MoveToParent oraz MoveToRoot.

Nawigacja po węzłach 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 przestrzeni nazw; jednak węzeł przestrzeni nazw nie jest elementem podrzędnym jego 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/namespace. 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 zasięgu dla elementu, przy użyciu metody MoveToFirstNamespace, po czym następuje wiele wywołań metody MoveToNextNamespace.

Uwaga / Notatka

Gdy obiekt jest umieszczony na atrybucie XPathNavigator lub węźle przestrzeni nazw, metody MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext i MoveToPrevious zawsze zwracają false i nie mają wpływu na położenie obiektu XPathNavigator. Wyjątki stanowią metody MoveTo, MoveToParent oraz MoveToRoot.

Wyliczenie XPathNamespaceScope

Podczas nawigowania po węzłach przestrzeni nazw, metody MoveToFirstNamespace i MoveToNextNamespace mogą być wywoływane z parametrem 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 metody MoveToFirstNamespace 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 ustawia się po wywołaniu metody MoveToFirstNamespace, po czym następuje seria wywołań metody MoveToNextNamespace), jest następująca.

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

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

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

Uwaga / Notatka

Klasa XPathNavigator zwraca węzły przestrzeni nazw w odwrotnej kolejności dokumentów. Dlatego MoveToFirstNamespace zasadniczo przenosi się do ostatniego węzła przestrzeni nazw w bieżącym zakresie.

W poniższych przykładach pokazano, jakie przestrzenie nazw są zwracane przez metody MoveToFirstNamespace i MoveToNextNamespace, gdy używane są z wyliczeniem XPathNamespaceScope, 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 na child2, sekwencja przestrzeni nazw (przestrzeń nazw, na której XPathNavigator znajduje się po wywołaniu metody MoveToFirstNamespace, a następnie po serii wywołań metody MoveToNextNamespace) jest następująca.

  • 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", i 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", i xmlns="http://www.contoso.com".

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

Uwaga / Notatka

Klasa XPathNavigator zwraca węzły przestrzeni nazw w odwrotnej kolejności dokumentów. Dlatego MoveToFirstNamespace zasadniczo przenosi się do ostatniego węzła przestrzeni nazw w bieżącym zakresie.

Zobacz także