Condividi tramite


Navigazione tra attributi e nodi dello spazio dei nomi tramite XPathNavigator

La XPathNavigator classe fornisce due set di metodi di navigazione: il primo set, disponibile nell'argomento Spostamento dei set di nodi tramite XPathNavigator, viene utilizzato per esplorare i set di nodi in un oggetto XPathDocument o XmlDocument. Il secondo set, descritto in questo argomento, viene usato per navigare nodi di attributi e nodi di spazi dei nomi in un oggetto XPathDocument o XmlDocument.

Navigazione dei nodi attributo

Gli attributi sono proprietà di un elemento, non elementi figlio di un elemento. Questa distinzione è importante per i metodi della XPathNavigator classe utilizzata per navigare nodi di pari livello, padre e figlio.

Ad esempio, i MoveToPrevious metodi e MoveToNext non vengono usati per spostarsi da un elemento a un attributo o tra attributi. Gli attributi hanno invece metodi distinti di navigazione.

Di seguito sono riportati i metodi di spostamento degli attributi della XPathNavigator classe .

Quando il nodo corrente è un elemento, è possibile usare la HasAttributes proprietà per verificare se sono presenti attributi associati all'elemento . Dopo che è noto che un elemento ha attributi, sono disponibili più metodi per accedere agli attributi. Per recuperare un singolo attributo dall'elemento , utilizzare il GetAttribute metodo . Per spostare l'oggetto XPathNavigator in un attributo specifico, utilizzare il MoveToAttribute metodo . È anche possibile eseguire l'iterazione su ogni attributo di un elemento usando il MoveToFirstAttribute metodo , seguito da più chiamate al MoveToNextAttribute metodo .

Annotazioni

Quando l'oggetto XPathNavigator viene posizionato su un nodo attributo o su un nodo di spazio dei nomi, i metodi MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext e MoveToPrevious restituiscono sempre false e non hanno alcun effetto sulla posizione di XPathNavigator. Le eccezioni sono i MoveTometodi , MoveToParente MoveToRoot .

Navigazione dei nodi dello spazio dei nomi

Ogni elemento ha un set associato di nodi dello spazio dei nomi, uno per ogni prefisso dello spazio dei nomi distinto associato a un URI dello spazio dei nomi nell'ambito dell'elemento (incluso il prefisso XML associato allo http://www.w3.org/XML/1998/namespace spazio dei nomi, che viene dichiarato in modo implicito in ogni documento XML) e uno per lo spazio dei nomi predefinito se uno è nell'ambito dell'elemento. L'elemento è l'elemento padre di ognuno di questi nodi dello spazio dei nomi; Tuttavia, un nodo dello spazio dei nomi non è un elemento figlio del relativo elemento padre.

Come per gli attributi, i MoveToPrevious metodi e MoveToNext non vengono usati per spostarsi da un elemento a un nodo dello spazio dei nomi o tra nodi dello spazio dei nomi. I nodi dello spazio dei nomi hanno invece metodi distinti di navigazione.

Di seguito sono riportati i metodi di navigazione del namespace della classe XPathNavigator.

Esiste sempre almeno un nodo dello spazio dei nomi nell'ambito di qualsiasi elemento in un documento XML. Si tratta del nodo dello spazio dei nomi con il prefisso xml e l'URI dello spazio dei nomi http://www.w3.org/XML/1998/namespace. Per recuperare un URI dello spazio dei nomi nell'ambito dato un prefisso specifico, utilizzare il metodo GetNamespace. Per spostare l'oggetto XPathNavigator in un nodo dello spazio dei nomi specifico, usare il MoveToNamespace metodo . È possibile iterare su ciascun nodo dello spazio dei nomi che rientra nell'ambito di un elemento utilizzando il metodo MoveToFirstNamespace seguito da più chiamate al metodo MoveToNextNamespace.

Annotazioni

Quando l'oggetto XPathNavigator viene posizionato su un nodo attributo o su un nodo di spazio dei nomi, i metodi MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext e MoveToPrevious restituiscono sempre false e non hanno alcun effetto sulla posizione di XPathNavigator. Le eccezioni sono i MoveTometodi , MoveToParente MoveToRoot .

Enumerazione XPathNamespaceScope

Quando si esplorano i nodi dello spazio dei nomi, i metodi MoveToFirstNamespace e MoveToNextNamespace possono essere chiamati con un parametro XPathNamespaceScope. Questi metodi si comportano in modo diverso rispetto alle rispettive controparti chiamate senza parametri. L'enumerazione XPathNamespaceScope ha valori di All, ExcludeXmlo Local.

Negli esempi seguenti vengono illustrati i namespace restituiti dai metodi MoveToFirstNamespace e MoveToNextNamespace in vari ambiti di un documento XML.

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

La sequenza dello spazio dei nomi (lo spazio dei nomi su cui XPathNavigator è posizionato dopo la chiamata al metodo MoveToFirstNamespace seguita da una serie di chiamate al metodo MoveToNextNamespace) è la seguente.

  • Quando posizionato su element2: xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com", e xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • Quando posizionato su element1: xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com", e xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • Quando posizionato su root: xmlns:xml="http://www.w3.org/XML/1998/namespace".

Annotazioni

La XPathNavigator classe restituisce nodi dello spazio dei nomi in ordine inverso del documento. Pertanto, MoveToFirstNamespace essenzialmente passa all'ultimo nodo dello spazio dei nomi nell'ambito corrente.

I seguenti esempi mostrano quali spazi dei nomi vengono restituiti dai metodi MoveToFirstNamespace e MoveToNextNamespace con l'enumerazione XPathNamespaceScope specificata a vari livelli in un documento 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>  

Se posizionato in child2, la sequenza dello spazio dei nomi (lo spazio dei nomi XPathNavigator su cui viene posizionato dopo aver chiamato il MoveToFirstNamespace metodo seguito da una serie di chiamate al MoveToNextNamespace metodo) è il seguente.

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

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

Annotazioni

La XPathNavigator classe restituisce nodi dello spazio dei nomi in ordine inverso del documento. Pertanto, MoveToFirstNamespace essenzialmente passa all'ultimo nodo dello spazio dei nomi nell'ambito corrente.

Vedere anche