Compartir a través de


Seleccionar datos XML con XPathNavigator

La clase XPathNavigator incluye un conjunto de métodos que se utilizan para seleccionar un conjunto de nodos de un objeto XPathDocument o XmlDocument utilizando una expresión XPath. Una vez seleccionado, puede iterar por el conjunto de nodos seleccionado.

Métodos de selección de XPathNavigator

La clase XPathNavigator incluye un conjunto de métodos que se utilizan para seleccionar un conjunto de nodos de un objeto XPathDocument o XmlDocument utilizando una expresión XPath. La clase XPathNavigator también incluye un conjunto de métodos optimizados para seleccionar nodos antecesores, secundarios y descendientes más rápido que con una expresión XPath. El conjunto seleccionado de nodos se devuelve en un objeto XPathNodeIterator o un objeto XPathNavigator en el caso de haya un solo nodo seleccionado.

Selección de nodos con expresiones XPath

Para seleccionar un conjunto de nodos con una expresión XPath, utilice uno de los siguientes métodos de selección.

Cuando se llama a estos métodos, éstos devuelven un conjunto de nodos por los que puede navegar libremente utilizando un objeto XPathNodeIterator o un objeto XPathNavigator en el caso de que haya un solo nodo seleccionado.

La navegación por un objeto XPathNodeIterator no afecta a la posición del objeto XPathNavigator que se ha utilizado para crearlo. El objeto XPathNavigator que devuelven los métodos SelectSingleNode se sitúa en el único nodo devuelto y tampoco afecta a la posición del objeto XPathNavigator que se ha utilizado para crearlo.

En el siguiente ejemplo, se muestra la creación de un objeto XPathNavigator a partir de un objeto XPathDocument, el uso del método Select para seleccionar nodos en el objeto XPathDocument y el uso del objeto XPathNodeIterator para iterar por los nodos seleccionados.

Dim document As XPathDocument = New XPathDocument("books.xml")  
Dim navigator As XPathNavigator = document.CreateNavigator()  
Dim nodes As XPathNodeIterator = navigator.Select("/bookstore/book")  
  
While nodes.MoveNext()  
    Console.WriteLine(nodes.Current.Name)  
End While  
XPathDocument document = new XPathDocument("books.xml");  
XPathNavigator navigator = document.CreateNavigator();  
XPathNodeIterator nodes = navigator.Select("/bookstore/book");  
  
while(nodes.MoveNext())  
{  
    Console.WriteLine(nodes.Current.Name);  
}  

En el ejemplo se toma como entrada el archivo books.xml.

<?xml version="1.0" encoding="utf-8" ?> 
<bookstore>
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Métodos de selección optimizados

Los métodos SelectChildren, SelectAncestors y SelectDescendants de la clase XPathNavigator representan expresiones XPath que se utilizan habitualmente para recuperar nodos secundarios, descendientes y antecesores. Estos métodos tienen optimizado su rendimiento y son más rápidos que sus expresiones XPath correspondientes. Los métodos SelectChildren, SelectAncestors y SelectDescendants seleccionan nodos antecesores, secundarios y descendientes basándose en un valor XPathNodeType o el nombre local e identificador URI de espacio de nombres de los nodos que se van a seleccionar. Los nodos antecesores, secundarios y descendientes se devuelven en un objeto XPathNodeIterator.

Vea también