Поделиться через


Используйте функцию contains() XPath при программировании MSXML DOM

В этой статье показано, как использовать contains() XPath функцию при программировании DOM MSXML.

Исходная версия продукта: Microsoft XML
Исходный номер базы знаний: 304265

Итоги

При использовании объектной модели документов (DOM) Microsoft XML (MSXML) в коде для загрузки и анализа XML-документа часто используется практика программирования для идентификации элементов и (или) элементов с атрибутами, данные которых содержат указанное строковое значение или слово. В этой статье приводится пример кода, демонстрирующий, как можно использовать строковую функцию "contains" языка XML-путей (XPath) для выполнения этого требования.

Пошаговый пример

  1. В Блокноте создайте xml-документ с именем Books.xml и вставьте следующий 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. Сохраните Books.xml в корневой папке диска C.

  3. Откройте новый проект STANDARD EXE в Microsoft Visual Basic. Форма1 создается по умолчанию.

  4. В меню "Проект" выберите пункт "Ссылки", а затем установите флажок Microsoft XML 3.0.

  5. Перетащите кнопку команды и поместите ее на Form1.

  6. Скопируйте и вставьте следующий код в процедуру события click командной кнопки.

    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. Предыдущий код загружает XML из Books.xml в экземпляр объекта MSXML DOMDocument. Затем он запускает запрос XPath, который использует contains XPath функцию для идентификации всех заголовков книг, содержащих слово ADO. Наконец, цикл For выполняет итерацию по выбранным узлам и отображает соответствующие заголовки, которые были определены при выполнении запроса XPath.

  8. Первый параметр функции используется для указания исходного contains XPath узла или строки, для которой выполняется сравнение. Второй параметр — это строка, указывающая слово или строковое значение для поиска в исходном узле. Важно помнить, что строка или слово, предоставленное в качестве второго параметра функции contains, чувствительно к регистру.