Cómo: Ejecutar consultas XPath utilizando las clases System.Xml.XPath

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): 317069
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Resumen
En este artículo paso a paso se muestra cómo utilizar las clases en el espacio de nombres System.Xml.XPath para ejecutar consultas XPath en aplicaciones .NET.

back to the top

Explorar el espacio de nombres System.Xml.XPath

El espacio de nombres System.Xml.XPath contiene el analizador XPath y el motor de evaluación de .NET Framework. El espacio de nombres System.Xml.XPath admite la recomendación de versión 1.0 de XML Path Language (XPath) de World Wide Web Consortium (W3C). Para obtener más información acerca de la recomendación XPath, visite el siguiente sitio Web de W3C: El espacio de nombres System.Xml.XPath también contiene las clases siguientes que están optimizadas para ejecutar consultas XPath y desplazarse por los conjuntos de resultados generado mediante programación:
  • XPathDocument : leer un alto rendimiento - caché sólo para procesar documentos XML y secuencias. XPathDocument está optimizada para procesamiento de XSLT (Extensible Stylesheet Language Transformation) y el modelo de datos XPath. XPathDocument se utiliza el modelo de objeto de documento (DOM) - se basa el modelo de análisis (carga el código XML de origen en una estructura de árbol en memoria) pero no implementa las interfaces necesarias para insertar, modificar o eliminar nodos de un documento de lenguaje de marcado extensible (XML) o una secuencia.
  • XPathNavigator : esta clase se basa en el modelo de datos XPath. XPathNavigator proporciona los métodos necesarios para ejecutar consultas XPath contra datos XML cargados en un XPathDocument . XPathNavigator se crea una instancia mediante el método CreateNavigator de un objeto XPathDocument . También puede utilizar XPathNavigator para compilar expresiones de consulta XPath ejecutadas con frecuencia y generar un objeto System.Xml.XPath.XPathExpression que encapsula la consulta compilada.
  • XPathNodeIterator : proporciona un iterador sólo - sólo, lectura - directa. Cuando utilice el método SELECT de un objeto XPathNavigator para ejecutar una consulta XPath, se crea una instancia de clase XPathNodeIterator . Puede utilizar XPathNodeIterator para desplazarse por el conjunto de resultados generado por la consulta XPath.
  • XPathExpression : encapsula una expresión de consulta de XPath compilada. Una expresión de consulta de XPath debe compilar antes de poder ejecutar la expresión de consulta. Una expresión XPath compilada contiene sintaxis que se comprueba para cumplir la especificación de lenguaje de consulta XPath de W3C. Una llamada al método de compilación de un objeto XPathNavigator devuelve la clase XPathExpression . Normalmente, se utiliza XPathExpression para proporcionar una expresión de consulta de XPath precompilada en una llamada al método SELECT de un objeto XPathNavigator .
  • XPathException : excepción de .NET Framework que se genera cuando se produce un error al procesar una expresión de consulta de XPath. El método SELECT y el método Compile de la clase XPathNavigator pueden provocar XPathException .
back to the top

Crear documentos XML de ejemplo

Para crear dos documentos XML de ejemplo para utilizar con el ejemplo de código de .NET posteriores, siga estos pasos:
  1. Utilizar Bloc de notas o un editor de texto similar para pegar el código siguiente en un nuevo documento XML llamado Books.Xml. Guarde el documento en la carpeta raíz del disco duro.
    <?xml version='1.0'?><Books><Book>  <Title>Beginning XML</Title>  <Publisher>Wrox</Publisher></Book><Book>  <Title>XML Step by Step</Title>  <Publisher>MSPress</Publisher></Book><Book>  <Title>Professional XML</Title>  <Publisher>Wrox</Publisher></Book><Book>  <Title>Developing XML solutions</Title>  <Publisher>MSPress</Publisher></Book></Books>					
  2. Utilizar Bloc de notas o un editor de texto similar para pegar el código siguiente en un nuevo documento XML denominado DotNetBooks.xml. Guarde el documento en la carpeta raíz del disco duro.
    <?xml version='1.0'?><DotNetBooks><DotNetBook>  <Title>Professional C#</Title>  <Publisher>Wrox</Publisher></DotNetBook><DotNetBook>  <Title>ADO.Net Core Reference</Title>  <Publisher>MSPress</Publisher></DotNetBook><DotNetBook>  <Title>Professional VB.Net</Title>  <Publisher>Wrox</Publisher></DotNetBook><DotNetBook>  <Title>Inside C#</Title>  <Publisher>MSPress</Publisher></DotNetBook></DotNetBooks>
back to the top

Crear un proyecto de Visual Basic .NET

  1. Inicie Visual Studio .NET y cree un nuevo proyecto de aplicación de Windows de .NET de Visual Basic.
  2. Arrastre dos controles Button desde el cuadro de herramientas a Form1.vb.
  3. Pegue el código siguiente en el procedimiento Click_Event del primer botón de comando:
    'Instantiate the XPathDocument class.Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")'Instantiate the XPathNavigator class.Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()'Instantiate the XPathIterator class.Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("//Publisher[. = 'MSPress']/parent::node()/Title")'Use the XPathIterator class to navigate through the generated resultset'and then display the selected Titles.Do While iterator.MoveNext    System.Diagnostics.Debug.WriteLine(iterator.Current.Value)Loop					
  4. Lea los comentarios en línea para comprender la funcionalidad del código. Preste atención específica a cómo el código crea y utiliza instancias de objeto de cada una de las clases en el espacio de nombres System.Xml.XPath . Tenga en cuenta que una cadena especifica el parámetro de expresión de consulta de XPath en la llamada al método SELECT del objeto XPathNavigator .
  5. Pegue el código siguiente en el procedimiento Click_Event del segundo botón de comando:
    'Construct the XPathDocument by specifying the path to Books.xml.Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")'Create the XPathNavigator.Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()'Compile the XPath query expression to identify all MSPress Titles.'The Compile method of the XPathNavigator generates an XPathExpression object'that encapsulates the compiled query expression.Dim expr As System.Xml.XPath.XPathExpression = nav.Compile("//Publisher[. = 'MSPress']/parent::node()/Title")'Execute the Select method of the XPathNavigator to create the XPathNodeIterator.'Note that the sample code supplies the XPathExpression object as the query expression parameter.Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select(expr)System.Diagnostics.Debug.WriteLine("MSPress titles in books.xml...")System.Diagnostics.Debug.WriteLine("******************************")'Use the iterator to navigate the generated resultset.Do While iterator.MoveNext    System.Diagnostics.Debug.WriteLine(iterator.Current.Value)Loop'Release the XPathDocument and XPathNavigator.xmldoc = Nothingnav = NothingSystem.Diagnostics.Debug.WriteLine(vbCrLf & "MSPress titles in DotNetBooks.xml...")System.Diagnostics.Debug.WriteLine("******************************")'Specify the path to DotNetBooks.xml to reconstruct the XPathDocument.xmldoc = New System.Xml.XPath.XPathDocument("c:\DotNetBooks.xml")'Create the XPathNavigator.nav = xmldoc.CreateNavigator()'Reuse the XPathExpression that you compiled previously to locate'all MSPress titles in DotNetBooks.xml.'You can reuse the XPathExpression because the hierarchy of elements that are referenced'in the XPath query is the same in Books.xml and DotNetBooks.xml. 'For example, the Publisher element is a child of the Title element in both XML documents.'The hierarchy must be identical for you to reuse the same XPathExpression object'across different XML documents/streams.'When you use an XPathExpression object, and the Select method executes,'the XPath query is not recompiled. iterator = nav.Select(expr)'Use the iterator to navigate the generated resultset.Do While iterator.MoveNext     System.Diagnostics.Debug.WriteLine(iterator.Current.Value)Loop					
  6. Lea los comentarios en línea para comprender la funcionalidad del código. Preste atención específica a cómo el código de ejemplo crea una instancia del objeto XPathExpression la primera vez (contra Books.XML) y, a continuación, vuelve a utilizar el objeto cuando la consulta XPath ejecuta la segunda vez (contra DotNetBooks.xml).
back to the top

El proyecto de prueba

  1. Guardar los cambios en el proyecto de Visual Basic .NET y, a continuación, ejecutar el proyecto.
  2. Cuando aparezca el formulario, haga clic en el primer botón de comando para ejecutar el código que utiliza una cadena para especificar la expresión de consulta de XPath. El resultado de la consulta XPath especificada contra Books.XML aparece como sigue:
    XML Step by StepDeveloping XML solutions					
  3. Haga clic en el segundo botón de comando para ejecutar el código que utiliza un objeto XPathExpression para especificar la expresión de consulta de XPath. El resultado de la consulta XPath especificada contra Books.XML y DotNetBooks.xml aparece como sigue:
    MSPress titles in books.xml...******************************XML Step by StepDeveloping XML solutionsMSPress titles in DotNetBooks.xml...******************************ADO.Net Core ReferenceInside C#					
back to the top

Propiedades

Id. de artículo: 317069 - Última revisión: 12/07/2015 08:48:33 - Revisión: 4.2

Microsoft .NET Framework 1.1, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft .NET Framework 1.0

  • kbnosurvey kbarchive kbmt kbhowtomaster KB317069 KbMtes
Comentarios