Use la función contains() XPath al programar el DOM de MSXML.

En este artículo se muestra cómo usar la contains() XPath función al programar el DOM de MSXML.

Versión original del producto: Microsoft XML
Número de KB original: 304265

Resumen

Cuando se usa el modelo de objetos de documento (DOM) de Microsoft XML (MSXML) en el código para cargar y analizar un documento XML, es habitual la práctica de programación identificar elementos o elementos con atributos cuyos datos contienen un valor de cadena o una palabra especificados. En este artículo se documenta un ejemplo de código que muestra cómo puede usar la función de cadena contains XML Path Language (XPath) para implementar este requisito.

Ejemplo paso a paso

  1. En el Bloc de notas, cree un nuevo documento XML denominado Books.xmly pegue el siguiente XML:

    <?xml version="1.0"?>
    <!-- This file represents a fragment of a bookstore inventory database -->
    <bookstore specialty="novel">
     <book>
         <Title>Beginning XML</Title>
         <Publisher>Wrox</Publisher>
     </book>
     <book>
         <Title>Professional XML</Title>
         <Publisher>Wrox</Publisher>
     </book>
     <book>
         <Title>Programming ADO</Title>
         <author>
             <first-name>Mary</first-name>
             <last-name>Bob</last-name>
         </author>
         <datePublished>1/1/2000</datePublished>
         <Publisher>Microsoft Press</Publisher>
     </book>
    </bookstore>
    
  2. Guarde Books.xml en la carpeta raíz de la unidad C.

  3. Abra un nuevo proyecto EXE estándar en Microsoft Visual Basic. Form1 se crea de forma predeterminada.

  4. En el menú Proyecto, haga clic en Referencias y, a continuación, active la casilla Microsoft XML 3.0 .

  5. Arrastre un botón Comando y colóquelo en Form1.

  6. Copie y pegue el código siguiente en el procedimiento de evento Click del botón Comando:

    Dim doc As MSXML2.DOMDocument
    Dim nlist As MSXML2.IXMLDOMNodeList
    Dim node As MSXML2.IXMLDOMNode
    
    Set doc = New MSXML2.DOMDocument
    doc.setProperty "SelectionLanguage", "XPath"
    doc.Load "c:\books.xml"
    Set nlist = doc.selectNodes("//book/Title[contains(.,'ADO')]")
    MsgBox "Matching Nodes : " & nlist.length
    
    For Each node In nlist
        Debug.Print node.nodeName & " : " & node.Text
    Next
    
  7. El código anterior carga el XML de Books.xml en una instancia del objeto DOMDocument de MSXML. A continuación, ejecuta una consulta XPath que usa la contains XPath función para identificar todos los títulos book que contienen la palabra ADO. Por último, el bucle For recorre en iteración los nodos seleccionados y muestra los títulos coincidentes que se identificaron mediante la ejecución de la consulta XPath.

  8. El primer parámetro de la contains XPath función se usa para especificar el nodo o cadena de origen en el que se va a ejecutar la comparación. El segundo parámetro es una cadena que especifica el valor de palabra o cadena que se va a buscar en el nodo de origen. Es importante recordar que la cadena o la palabra que se proporciona como segundo parámetro de la función contains distingue mayúsculas de minúsculas.