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ą false
wartość , 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/namespace
przestrzeni 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ą false
wartość , 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 :
element2
xmlns:books="http://www.contoso.com/books"
,xmlns="http://www.contoso.com"
ixmlns:xml="http://www.w3.org/XML/1998/namespace"
.Po ustawieniu pozycji na :
element1
xmlns:books="http://www.contoso.com/books"
,xmlns="http://www.contoso.com"
ixmlns:xml="http://www.w3.org/XML/1998/namespace"
.Po ustawieniu pozycji na :
root
xmlns: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 child2
obiekcie 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"
, ixmlns="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ż
- XmlDocument
- XPathDocument
- XPathNavigator
- Przetwarzanie danych XML przy użyciu modelu danych XPath
- Nawigacja po zestawie węzłów przy użyciu klasy XPathNavigator
- Wyodrębnianie danych XML przy użyciu klasy XPathNavigator
- Uzyskiwanie dostępu do silnie typizowanych danych XML przy użyciu klasy XPathNavigator