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.
Les requêtes XPath sont conscientes des espaces de noms dans un document XML et peuvent utiliser des préfixes d’espace de noms pour qualifier les noms d’éléments et d’attributs. Les noms d’éléments et d’attributs éligibles avec un préfixe d’espace de noms limitent les nœuds retournés par une requête XPath à ceux qui appartiennent à un espace de noms spécifique.
Par exemple, si le préfixe books est mappé à l’espace de noms http://www.contoso.com/books, la requête /books:books/books:book XPath suivante sélectionne uniquement ces book éléments dans l’espace de noms http://www.contoso.com/books.
The XmlNamespaceManager
Pour utiliser des espaces de noms dans une requête XPath, un objet dérivé de l'interface IXmlNamespaceResolver, tel que la classe XmlNamespaceManager, est construit avec l'URI de l'espace de noms et le préfixe à inclure dans la requête XPath.
L’objet XmlNamespaceManager peut être utilisé dans la requête de chacune des façons suivantes.
L’objet XmlNamespaceManager est associé à un objet existant XPathExpression à l’aide de la SetContext méthode de l’objet XPathExpression . Vous pouvez également compiler un nouvel XPathExpression objet à l’aide de la méthode statique Compile qui prend une chaîne représentant l’expression XPath et un XmlNamespaceManager objet en tant que paramètres et retourne un nouvel XPathExpression objet.
L’objet XmlNamespaceManager lui-même est passé en tant que paramètre à une méthode de classe acceptante XPathNavigator , ainsi qu’une chaîne représentant l’expression XPath.
Voici les méthodes de la XPathNavigator classe qui acceptent un objet dérivé de l’interface IXmlNamespaceResolver en tant que paramètre.
L'espace de noms par défaut
Dans le document XML qui suit, l’espace de noms par défaut avec un préfixe vide est utilisé pour déclarer l’espace http://www.contoso.com/books de noms.
<books xmlns="http://www.contoso.com/books">
<book>
<title>Title</title>
<author>Author Name</author>
<price>5.50</price>
</book>
</books>
XPath traite le préfixe vide comme l'espace de noms null. En d’autres termes, seuls les préfixes mappés aux espaces de noms peuvent être utilisés dans les requêtes XPath. Cela signifie que si vous souhaitez interroger un espace de noms dans un document XML, même s’il s’agit de l’espace de noms par défaut, vous devez définir un préfixe pour celui-ci.
Par exemple, sans définir de préfixe pour le document XML ci-dessus, la requête /books/book XPath ne retournerait aucun résultat.
Un préfixe doit être lié pour prévenir toute ambiguïté lors de l’interrogation de documents avec certains nœuds qui ne se trouvent pas dans un espace de noms, alors que d’autres sont dans un espace de noms par défaut.
Le code suivant définit un préfixe pour l’espace de noms par défaut et sélectionne tous les book éléments de l’espace http://www.contoso.com/books de noms.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim query As XPathExpression = navigator.Compile("/books:books/books:book")
Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("books", "http://www.contoso.com/books")
query.SetContext(manager)
Dim nodes As XPathNodeIterator = navigator.Select(query)
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathExpression query = navigator.Compile("/books:books/books:book");
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("books", "http://www.contoso.com/books");
query.SetContext(manager);
XPathNodeIterator nodes = navigator.Select(query);
Voir aussi
- XmlDocument
- XPathDocument
- XPathNavigator
- Traiter des données XML à l’aide du modèle de données XPath
- Sélectionner des données XML à l’aide de XPathNavigator
- Évaluer des expressions XPath à l’aide de XPathNavigator
- Correspondance de nœuds à l’aide de XPathNavigator
- Types de nœuds reconnus avec des requêtes XPath
- Expressions XPath compilées