Cómo consultar XML con una expresión XPath mediante Visual C#

Para una versión de Microsoft Visual Basic .NET de este artículo, consulte 301220 .


Este artículo hace referencia al siguiente espacio de nombres de biblioteca de clases de Microsoft.NET Framework:

  • System.Xml.XPath

EN ESTA TAREA

Resumen

En este artículo se muestra cómo consultar un objeto XPathDocument con una expresión de XML Path Language (XPath) utilizando la clase XPathNavigator . XPath se utiliza mediante programación para evaluar expresiones y seleccionar nodos específicos de un documento.


Requisitos

La lista siguiente describe el hardware, software, infraestructura de red y service packs recomendados que necesita:

  • Visual C#
En este artículo se supone que está familiarizado con los temas siguientes:

  • Terminología XML
  • Crear y leer un archivo XML
  • Sintaxis de XPath

Cómo consultar XML con una expresión XPath

  1. Cree una nueva aplicación de consola de Visual C# en Visual Studio.

    Nota: este ejemplo utiliza un archivo denominado Books.xml. Puede crear su propio archivo Books.xml o puede utilizar el ejemplo que se incluye en Quickstarts con el Kit de desarrollo de Software (SDK). NET. Si no tiene los tutoriales instalados y no desea instalarlos, consulte la sección "Referencias" para el archivo Books.xml ubicación de descarga. Si tiene instalados los tutoriales, el archivo puede encontrarse en la carpeta siguiente:
    Programa Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
    Debe copiar el archivo en la carpeta \Bin\Debug, que se encuentra bajo la carpeta en la que creó este proyecto.
  2. Asegúrese de que el proyecto hace referencia el espacio de nombres System.Xml .
  3. Utilice la instrucción using de los espacios de nombres Xml y XPath para que no se le pida calificar declaraciones en esos espacios de nombres más adelante en el código. Debe utilizar la instrucción using antes que cualquier otra declaración, como sigue:
    using System.Xml;using System.Xml.XPath;

  4. Declare las variables apropiadas. Declare un objeto XPathDocument para mantener el documento XLM, un objeto XpathNavigator para evaluar expresiones XPath y un objeto XPathNodeIterator para recorrer en iteración los nodos seleccionados. Declare un objeto String para contener las expresiones XPath. Agregue el código de declaración en la función Main de Class1.
       XPathNavigator nav;   XPathDocument docNav;
    XPathNodeIterator NodeIter;
    String strExpression;

  5. Cargar un XPathDocument con el archivo de ejemplo Books.xml. La clase XPathDocument utiliza Extensible Stylesheet Language Transformations (XSLT) para proporcionar una memoria caché rápida y orientada al rendimiento para procesar documentos XML. Es similar a Document Object Model (DOM) de XML, pero está muy optimizada para procesar XSLT y el modelo de datos XPath.
        // Open the XML.    docNav = new XPathDocument(@"c:\books.xml");

  6. Cree un XPathNavigator desde el documento. El objeto XPathNavigator se utiliza para consultas de XPath de sólo lectura. Las consultas de XPath pueden devolver un valor resultante o muchos nodos.
         // Create a navigator to query with XPath.     nav = docNav.CreateNavigator();

  7. Cree una expresión XPath para encontrar el costo promedio de un libro. La expresión XPath devuelve un único valor. Para obtener información detallada sobre la sintaxis de XPath, vea "Sintaxis de XPath" en la sección "Referencias".
         // Find the average cost of a book.     // This expression uses standard XPath syntax.
    strExpression = "sum(/bookstore/book/price) div count(/bookstore/book/price)";

  8. Utilice el método Evaluate del objeto XPathNavigator para evaluar la expresión XPath. El método Evaluate devuelve los resultados de la expresión.
        // Use the Evaluate method to return the evaluated expression.    Console.WriteLine("The average cost of the books are {0}", nav.Evaluate(strExpression));
  9. Cree una expresión XPath para encontrar todos los libros que cuestan más de diez dólares. La expresión XPath devuelve sólo los nodos Title del origen XML.
        // Find the title of the books that are greater then $10.00.    strExpression = "/bookstore/book/title[../price>10.00]";

  10. Cree un XPathNodeIterator para los nodos que se seleccionan con el método Select de XPathNavigator. XPathNodeIterator representa un conjunto de nodos XPath y por lo tanto admite operaciones en este nodeset.
        // Select the node and place the results in an iterator.    NodeIter = nav.Select(strExpression);
  11. Utilizar XPathNodeIterator, que devolvió el método Select de XPathNavigatorpara desplazarse por los nodos seleccionados. En este caso, puede utilizar el método MoveNext de XPathNodeIterator para recorrer en iteración todos los nodos seleccionados.
      Console.WriteLine("List of expensive books:");  //Iterate through the results showing the element value.
    while (NodeIter.MoveNext())
    {
    Console.WriteLine("Book Title: {0}", NodeIter.Current.Value);
    };

  12. Utilice el método ReadLine para agregar una pausa al final de la consola para mostrar más fácilmente los resultados anteriores.
        // Pause    Console.ReadLine();

  13. Genere y ejecute su proyecto. Tenga en cuenta que los resultados se muestran en la ventana de la consola.

Solución de problemas

Cuando pruebe el código, puede recibir el mensaje de error de excepción siguiente:
Se ha producido una excepción no controlada del tipo 'System.Xml.XmlException' en System.xml.dll

Información adicional: error del sistema.
El error de excepción se produce en la siguiente línea de código:
docNav = new XPathDocument("c:\\books.xml");
El error de excepción se debe a una instrucción de procesamiento no válida. Por ejemplo, la instrucción de procesamiento puede contener espacios. El siguiente es un ejemplo de una instrucción de procesamiento no válida:
<?xml version='1.0' ?>
Para resolver la excepción, realice una de las siguientes acciones:
  • Corrija la instrucción de procesamiento no válida. El siguiente es un ejemplo de una instrucción de procesamiento válida:
    <?xml version='1.0'?>
    -O-
  • Quite la instrucción de procesamiento XML del archivo Books.xml.

Referencias

El siguiente archivo está disponible para su descarga desde el Centro de descarga de Microsoft:
Para obtener más información, visite los siguientes sitios Web de Microsoft:

Para obtener más información acerca de XPath, visite el siguiente sitio Web de World Wide Web Consortium (W3C):

XML Path Language (XPath)
Versión 1.0: W3C recomendación 16 de noviembre de 1999
http://www.w3.org/TR/1999/REC-xpath-19991116
Propiedades

Id. de artículo: 308333 - Última revisión: 22 ene. 2017 - Revisión: 1

Comentarios