Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

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

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 308333
Para obtener 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 la 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.

back to the top

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los service pack recomendados que se necesitarán:
  • Visual C#
En este artículo se supone que está familiarizado con los temas siguientes:
  • Terminología de XML
  • Crear y leer un archivo XML
  • Sintaxis de XPath
back to the top

Cómo consultar XML con una expresión XPath

  1. Crear 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 en el kit de desarrollo de software (SDK) .NET. Si no tiene Quickstarts instalado y no desea instalarlo, consulte la sección "Referencias" para la ubicación de descarga del archivo Books.xml. 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 en 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 pida calificar declaraciones en esos espacios de nombres más adelante en el código. Debe utilizar la instrucción al antes de 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 XML, un objeto XpathNavigator para evaluar expresiones XPath y un objeto XPathNodeIterator para recorrer en iteración los nodos seleccionados. Declare un objeto String para mantener las expresiones XPath. Agregue el código de declaración de la función Main de Class1.
       XPathNavigator nav;   XPathDocument docNav;   XPathNodeIterator NodeIter;   String strExpression;					
  5. Carga 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 al modelo de objetos de documento (DOM) 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 XPath pueden devolver un valor resultante o muchos nodos.
         // Create a navigator to query with XPath.     nav = docNav.CreateNavigator();					
  7. Crear una expresión de XPath para buscar el costo medio de un libro. Esta expresión de XPath devuelve un único valor. Para obtener detalles completos sobre la sintaxis de XPath, vea "XPath Syntax" 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. Crear una expresión de XPath para buscar todos los libros que cuestan más de diez dólares. Esta expresión XPath devuelve sólo los nodos de título desde el 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 están seleccionados 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 el XPathNodeIterator , que se devolvió el método SELECT de XPathNavigator , para 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 pantalla de consola para mostrar más fácilmente los resultados anteriores.
        // Pause    Console.ReadLine();					
  13. Construya y ejecute su proyecto. Tenga en cuenta que los resultados se muestran en la ventana de consola.
back to the top

Solución de problemas

Cuando pruebe el código quizás aparezca el mensaje de error de excepción siguiente:
Excepción no controlada del tipo 'System.Xml.XmlException' en system.xml.dll

Obtener 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 está causado por una instrucción de procesamiento no válida. Por ejemplo, la instrucción de procesamiento puede contener espacios extraños. El siguiente es un ejemplo de una instrucción de procesamiento no válida:
<?xml version='1.0' ?>
para resolver la excepción, siga uno de los siguientes:
  • 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'?>
    - OR -
  • Quite la instrucción de procesamiento XML del archivo Books.xml.
back to the top
Referencias
El archivo siguiente está disponible para descargarlo del Centro de descarga de Microsoft:
Para obtener más información, visite los siguientes sitios Web de Microsoft (pueden estar en inglés): 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: Recomendación del W3C 16 de noviembre de 1999
http://www.w3.org/TR/1999/REC-xpath-19991116
back to the top

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 308333 - Última revisión: 03/13/2008 20:02:27 - Revisión: 7.2

Microsoft ADO.NET 1.0, Microsoft Visual C# 2008 Express Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbmt kbdownload kbhowtomaster KB308333 KbMtes
Comentarios