Navigace v uzlu oborů názvů a atributů pomocí XPathNavigator
Třída XPathNavigator poskytuje dvě sady navigačních metod, první sadu, kterou najdete v tématu Navigace sady uzlů pomocí XPathNavigator , slouží k navigaci v sadách uzlů v objektu XPathDocument nebo XmlDocument objektu. Druhá sada popsaná v tomto tématu slouží k procházení atributů a uzlů oboru názvů v objektu nebo XmlDocument objektuXPathDocument.
Navigace v uzlu atributu
Atributy jsou vlastnosti elementu, nikoli podřízené elementu. Toto rozlišení je důležité, protože metody XPathNavigator třídy používané k navigaci na stejné úrovni, nadřazené a podřízené uzly.
Například MoveToPrevious a MoveToNext metody se nepoužívají k navigaci z elementu na atribut nebo mezi atributy. Místo toho mají atributy odlišné metody navigace.
Následují metody XPathNavigator navigace atributů třídy.
Pokud je aktuálním uzlem prvek, můžete pomocí HasAttributes vlastnosti zjistit, zda jsou k elementu přidruženy nějaké atributy. Jakmile je známo, že prvek má atributy, existuje více metod pro přístup k atributům. K načtení jednoho atributu z elementu použijte metodu GetAttribute . K přesunutí XPathNavigator na konkrétní atribut použijte metodu MoveToAttribute . Můžete také iterovat nad jednotlivými atributy elementu pomocí MoveToFirstAttribute metody, následované více voláními metody MoveToNextAttribute .
Poznámka:
Při umístění objektu XPathNavigator na atributu nebo uzlu oboru názvů , MoveToChildMoveToFirstChildMoveToFirst, MoveToFollowing, MoveToNextMoveToId, a MoveToPrevious metody vždy vrátit false
, a nemají žádný vliv na pozici .XPathNavigator Výjimky jsou MoveTo, MoveToParenta MoveToRoot metody.
Navigace uzlů oboru názvů
Každý prvek má přidruženou sadu uzlů oboru názvů, jednu pro každou odlišnou předponu oboru názvů, která je vázána na identifikátor URI oboru názvů v oboru pro element (včetně předpony XML vázané na http://www.w3.org/XML/1998/namespace
obor názvů, který je implicitně deklarován v každém dokumentu XML) a jeden pro výchozí obor názvů, pokud je v oboru pro element. Element je nadřazená každé z těchto názvů uzlů; uzel oboru názvů však není podřízených objektů svého nadřízeného elementu.
Stejně jako u atributů MoveToPreviousMoveToNext se metody a metody nepoužívají k navigaci z elementu na uzel oboru názvů nebo mezi uzly oboru názvů. Místo toho mají uzly oboru názvů různé metody navigace.
Níže jsou uvedené navigační metody XPathNavigator oboru názvů třídy.
V oboru je vždy alespoň jeden uzel oboru názvů pro libovolný prvek v dokumentu XML. Toto je uzel oboru názvů s předponou xml
a identifikátorem URI http://www.w3.org/XML/1998/namespace
oboru názvů . Pokud chcete načíst identifikátor URI oboru názvů s danou předponou, použijte metodu GetNamespace . K přesunutí objektu XPathNavigator do určitého uzlu oboru názvů použijte metodu MoveToNamespace . Můžete také iterovat nad každým uzlem oboru názvů v oboru pro prvek pomocí MoveToFirstNamespace metody následované více voláními MoveToNextNamespace metody.
Poznámka:
Při umístění objektu XPathNavigator na atributu nebo uzlu oboru názvů , MoveToChildMoveToFirstChildMoveToFirst, MoveToFollowing, MoveToNextMoveToId, a MoveToPrevious metody vždy vrátit false
, a nemají žádný vliv na pozici .XPathNavigator Výjimky jsou MoveTo, MoveToParenta MoveToRoot metody.
Výčet XPathNamespaceScope
Při navigaci v uzlech MoveToFirstNamespaceMoveToNextNamespace oboru názvů je možné volat pomocí parametru XPathNamespaceScope . Tyto metody se chovají jinak než jejich protějšky, které volají bez parametrů. Výčet XPathNamespaceScope obsahuje hodnoty All, ExcludeXmlnebo Local.
Následující příklady ukazují, jaké obory názvů vrací MoveToFirstNamespace a MoveToNextNamespace metody v různých oborech v dokumentu XML.
<root>
<element1 xmlns="http://www.contoso.com" xmlns:books="http://www.contoso.com/books">
<element2 />
</element1>
</root>
Sekvence oboru názvů (obor názvů, na XPathNavigator který je umístěn po volání MoveToFirstNamespace metody následované řadou volání MoveToNextNamespace metody) je následující.
Při umístění na
element2
:xmlns:books="http://www.contoso.com/books"
,xmlns="http://www.contoso.com"
axmlns:xml="http://www.w3.org/XML/1998/namespace"
.Při umístění na
element1
:xmlns:books="http://www.contoso.com/books"
,xmlns="http://www.contoso.com"
axmlns:xml="http://www.w3.org/XML/1998/namespace"
.Při umístění na
root
:xmlns:xml="http://www.w3.org/XML/1998/namespace".
Poznámka:
Třída XPathNavigator vrací uzly oboru názvů v obráceném pořadí dokumentů. MoveToFirstNamespace Proto se v podstatě přesune na poslední uzel oboru názvů v aktuálním oboru.
Následující příklady ukazují, jaké obory názvů vrací MoveToFirstNamespace a MoveToNextNamespace metody s výčtem zadaným XPathNamespaceScope v různých oborech v dokumentu 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>
Při umístění na child2
, pořadí oboru názvů (obor názvů XPathNavigator je umístěn po volání MoveToFirstNamespace metody následované řadou volání MoveToNextNamespace metody) je následující.
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"
, axmlns: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"
axmlns="http://www.contoso.com"
.Local:
xmlns:c="urn:c"
. .
Poznámka:
Třída XPathNavigator vrací uzly oboru názvů v obráceném pořadí dokumentů. MoveToFirstNamespace Proto se v podstatě přesune na poslední uzel oboru názvů v aktuálním oboru.