Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las consultas XPath distinguen los espacios de nombres de un documento XML y pueden utilizar prefijos de espacio de nombres para calificar nombres de atributos y elementos. Al calificar los nombres de atributos y elementos con un prefijo de espacio de nombres, se limitan los nodos que devuelve la consulta XPath a únicamente aquellos nodos que pertenecen a un espacio de nombres específico.
Por ejemplo, si el prefijo books
se asigna al espacio de nombres http://www.contoso.com/books
, la siguiente consulta /books:books/books:book
XPath selecciona solo esos book
elementos en el espacio de nombres http://www.contoso.com/books
.
The XmlNamespaceManager
Para usar espacios de nombres en una consulta XPath, un objeto derivado de la IXmlNamespaceResolver interfaz como la XmlNamespaceManager clase se construye con el URI del espacio de nombres y el prefijo que se van a incluir en la consulta XPath.
El XmlNamespaceManager objeto se puede usar en la consulta de cada una de las maneras siguientes.
El XmlNamespaceManager objeto está asociado a un objeto existente XPathExpression mediante el SetContext método del XPathExpression objeto . También puede compilar un nuevo XPathExpression objeto mediante el método estático Compile que toma una cadena que representa la expresión XPath y un XmlNamespaceManager objeto como parámetros y devuelve un nuevo XPathExpression objeto.
El XmlNamespaceManager propio objeto se pasa como parámetro a un método de clase aceptado XPathNavigator junto con una cadena que representa la expresión XPath.
A continuación se muestran los métodos de la XPathNavigator clase que aceptan un objeto derivado de la IXmlNamespaceResolver interfaz como parámetro.
Espacio de nombres predeterminado
En el siguiente documento XML, se utiliza el espacio de nombres predeterminado con un prefijo vacío para declarar el espacio de nombres http://www.contoso.com/books
.
<books xmlns="http://www.contoso.com/books">
<book>
<title>Title</title>
<author>Author Name</author>
<price>5.50</price>
</book>
</books>
XPath trata el prefijo vacío como el espacio de nombres null
. En otras palabras, en las consultas XPath solo se pueden usar prefijos que estén asignados a espacios de nombres. Esto significa que si desea consultar un espacio de nombres en un documento XML, incluso si es el espacio de nombres predeterminado, debe definir un prefijo para él.
Por ejemplo, sin definir un prefijo para el documento XML anterior, la consulta /books/book
XPath no devolvería ningún resultado.
Se debe utilizar un prefijo para evitar ambigüedades al consultar documentos que tienen algunos nodos que no están en un espacio de nombres y otros que están en un espacio de nombres predeterminado.
El código siguiente define un prefijo para el espacio de nombres predeterminado y selecciona todos los book
elementos del http://www.contoso.com/books
espacio de nombres.
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);
Consulte también
- XmlDocument
- XPathDocument
- XPathNavigator
- Procesar datos XML mediante el modelo de datos XPath
- Selección de datos XML mediante XPathNavigator
- Evaluación de expresiones XPath mediante XPathNavigator
- Coincidencia de nodos con XPathNavigator
- Tipos de nodo reconocidos con consultas XPath
- Expresiones XPath compiladas