Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La classe XPathNavigator fournit deux ensembles de méthodes de navigation. Le premier, trouvé dans la rubrique Navigation dans la collection de nœuds à l’aide de XPathNavigator, permet de naviguer entre les collections de nœuds d'un objet XPathDocument ou XmlDocument. Le deuxième ensemble, décrit dans cette rubrique, est utilisé pour parcourir les nœuds d’attribut et d’espace de noms dans un objet XPathDocument ou XmlDocument.
Navigation des nœuds d’attribut
Les attributs sont des propriétés d’un élément, et non des enfants d’un élément. Cette distinction est importante, en raison des méthodes de la XPathNavigator classe utilisées pour naviguer entre les nœuds frères, parents et enfants.
Par exemple, les méthodes MoveToPrevious et MoveToNext ne sont pas utilisées pour naviguer d’un élément vers un attribut ou entre des attributs. Au lieu de cela, les attributs ont des méthodes distinctes de navigation.
Voici les méthodes de navigation d’attribut de la XPathNavigator classe.
Lorsque le nœud actuel est un élément, vous pouvez utiliser la HasAttributes propriété pour voir s’il existe des attributs associés à l’élément. Une fois qu’il est connu qu’un élément a des attributs, il existe plusieurs méthodes pour accéder aux attributs. Pour récupérer un attribut unique à partir de l’élément, utilisez la GetAttribute méthode. Pour déplacer l’attribut XPathNavigator vers un attribut particulier, utilisez la MoveToAttribute méthode. Vous pouvez également itérer sur chaque attribut d’un élément à l’aide de la MoveToFirstAttribute méthode, suivi de plusieurs appels à la MoveToNextAttribute méthode.
Remarque
Lorsque l’objet XPathNavigator est positionné sur un nœud d’attribut ou d’espace de noms, les méthodes MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext et MoveToPrevious retournent toujours false, et n'ont aucun effet sur la position du XPathNavigator. Les exceptions sont les méthodes MoveTo, MoveToParent et MoveToRoot.
Navigation entre les nœuds d'espace de noms
Chaque élément a un ensemble associé de nœuds d’espace de noms, un pour chaque préfixe d’espace de noms distinct lié à un URI d’espace de noms dans l’étendue de l’élément (y compris le préfixe XML lié à l’espace http://www.w3.org/XML/1998/namespace de noms, qui est implicitement déclaré dans chaque document XML) et un pour l’espace de noms par défaut si l’un est dans l’étendue de l’élément. L’élément est le parent de chacun de ces nœuds d’espace de noms ; toutefois, un nœud d’espace de noms n’est pas un enfant de son élément parent.
Comme pour les attributs, les méthodes MoveToPrevious et MoveToNext ne sont pas utilisées pour naviguer d’un élément vers un nœud d’espace de noms, ou entre des nœuds d’espace de noms. Au lieu de cela, les nœuds d’espace de noms ont des méthodes distinctes de navigation.
Voici les méthodes de navigation d’espace de noms de la XPathNavigator classe.
Il existe toujours au moins un nœud d’espace de noms dans le champ d'application de tout élément d’un document XML. Il s'agit du nœud d'espace de noms avec le préfixe xml et l'URI d'espace de noms http://www.w3.org/XML/1998/namespace. Pour extraire un URI d'espace de noms dans la portée d'un préfixe donné, utilisez la méthode GetNamespace. Pour déplacer l’objet XPathNavigator vers un nœud d’espace de noms particulier, utilisez la MoveToNamespace méthode. Vous pouvez également itérer sur chaque nœud d'espace de noms dans la portée d'un élément à l'aide de la méthode MoveToFirstNamespace, suivie par plusieurs appels à la méthode MoveToNextNamespace.
Remarque
Lorsque l’objet XPathNavigator est positionné sur un nœud d’attribut ou d’espace de noms, les méthodes MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext et MoveToPrevious retournent toujours false, et n'ont aucun effet sur la position du XPathNavigator. Les exceptions sont les méthodes MoveTo, MoveToParent et MoveToRoot.
Énumération XPathNamespaceScope
Lors de la navigation dans les nœuds d’espace de noms, les méthodes MoveToFirstNamespace et MoveToNextNamespace peuvent être appelées avec un paramètre XPathNamespaceScope. Ces méthodes se comportent différemment de celles de leurs équivalents appelés sans paramètres. L’énumération XPathNamespaceScope a des valeurs de All, ExcludeXmlou Local.
Les exemples suivants montrent quels espaces de noms sont retournés par les méthodes MoveToFirstNamespace et MoveToNextNamespace à différents niveaux dans un document XML.
<root>
<element1 xmlns="http://www.contoso.com" xmlns:books="http://www.contoso.com/books">
<element2 />
</element1>
</root>
La séquence d’espace de noms (l’espace de noms XPathNavigator est positionné après l’appel de la MoveToFirstNamespace méthode suivie d’une série d’appels à la MoveToNextNamespace méthode) est la suivante.
Lorsqu’il est positionné sur
element2:xmlns:books="http://www.contoso.com/books",xmlns="http://www.contoso.com"etxmlns:xml="http://www.w3.org/XML/1998/namespace".Lorsqu’il est positionné sur
element1:xmlns:books="http://www.contoso.com/books",xmlns="http://www.contoso.com"etxmlns:xml="http://www.w3.org/XML/1998/namespace".Lorsqu’il est positionné sur
root:xmlns:xml="http://www.w3.org/XML/1998/namespace".
Remarque
La classe XPathNavigator retourne des nœuds d’espace de noms dans l'ordre inverse du document. Par conséquent, la méthode MoveToFirstNamespace se déplace essentiellement vers le dernier nœud d'espace de noms de la portée actuelle.
Les exemples suivants indiquent les espaces de noms qui sont retournés par les méthodes MoveToFirstNamespace et MoveToNextNamespace avec l'énumération XPathNamespaceScope spécifiée dans différentes portées d'un document 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>
Lorsqu’il est positionné sur child2, la séquence d’espaces de noms (l’espace de noms sur lequel XPathNavigator est positionné après l’appel de la méthode MoveToFirstNamespace, suivi d’une série d’appels à la méthode MoveToNextNamespace) est la suivante.
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", etxmlns: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", etxmlns="http://www.contoso.com".Local:
xmlns:c="urn:c".
Remarque
La classe XPathNavigator retourne des nœuds d’espace de noms dans l'ordre inverse du document. Par conséquent, la méthode MoveToFirstNamespace se déplace essentiellement vers le dernier nœud d'espace de noms de la portée actuelle.