Sdílet prostřednictvím


Navigace atributových a jmenných prostorových uzlů 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ů jmenného prostoru v XPathDocument nebo XmlDocument objektu.

Navigace v uzlu atributu

Atributy jsou vlastnosti elementu, nejsou potomky elementu. Toto rozlišení je důležité, protože metody XPathNavigator třídy používané k navigaci souběžné, 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 navigace atributů třídy XPathNavigator.

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 uzel atributu nebo oboru názvů metody MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext a MoveToPrevious vždy vrací false a nemají žádný vliv na pozici XPathNavigator. Výjimky jsou MoveTo, MoveToParenta MoveToRoot metody.

Navigace uzlů v názevovém oboru

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. Prvek je nadřazený každého z těchto uzlů oboru názvů; uzel oboru názvů však není potomkem svého nadřazeného prvku.

Stejně jako u atributů se metody MoveToPrevious a MoveToNext 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ů jedinečné metody navigace.

Namespace navigační metody třídy XPathNavigator jsou následující.

V rámci scopu je vždy alespoň jeden uzel oboru názvů pro jakýkoli prvek v dokumentu XML. Toto je uzel oboru názvů, který má předponu xml a identifikátor URI http://www.w3.org/XML/1998/namespace oboru názvů. Pokud chcete načíst URI oboru názvů pro danou předponu, použijte metodu GetNamespace. K přesunutí objektu XPathNavigator do určitého uzlu oboru názvů použijte metodu MoveToNamespace . Můžete také procházet každý uzel oboru názvů ve vztahu k prvku pomocí metody MoveToFirstNamespace, a poté více násobnými voláními metody MoveToNextNamespace.

Poznámka:

Při umístění objektu XPathNavigator na uzel atributu nebo oboru názvů metody MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext a MoveToPrevious vždy vrací false a nemají žádný vliv na pozici XPathNavigator. Výjimky jsou MoveTo, MoveToParenta MoveToRoot metody.

Výčet XPathNamespaceScope

Při navigaci v uzlech oboru názvů lze použít metody MoveToFirstNamespace a MoveToNextNamespace, které lze volat s parametrem XPathNamespaceScope. Tyto metody se chovají jinak než jejich protějšky zavolané 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 kterém je XPathNavigator umístěn po volání metody MoveToFirstNamespace, následovaná sérií volání metody MoveToNextNamespace) je následující.

  • Při umístění na element2: xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com"a xmlns: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"a xmlns: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 jmenného prostoru v aktuálním oboru.

Následující příklady ukazují, jaké obory názvů vrací metody MoveToFirstNamespace a MoveToNextNamespace při použití výčtu XPathNamespaceScope v různých rozsazích 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 je sekvence oborů názvů (obor názvů, na kterém je XPathNavigator umístěn po zavolání metody MoveToFirstNamespace následované sérií volání metody MoveToNextNamespace) 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", a 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"a xmlns="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 jmenného prostoru v aktuálním oboru.

Viz také