Использование функции XPath starts-with()

В этой статье описывается использование starts-with() функции XPath.

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

Сводка

Это распространенное требование программирования при загрузке и анализе XML-документа с помощью модели DOM документов Microsoft XML (MSXML) для идентификации элементов и (или) элементов с атрибутами, значения которых начинаются с определенного символа или последовательности символов. Эта статья содержит пример кода, демонстрирующий, как можно использовать starts-with строковую функцию языка 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 style="autobiography">
            <author>
                <first-name>Joe</first-name>
                <last-name>Bob</last-name>
                <award>Trenton Literary Review Honorable Mention</award>
            </author>
            <price>12</price>
        </book>
        <book style="textbook">
            <author>
                <first-name>Mary</first-name>
                <last-name>Bob</last-name>
                <publication>Selected Short Stories of
                    <first-name>Mary</first-name>
                    <last-name>Bob</last-name>
                </publication>
            </author>
            <price>55</price>
        </book>
    </bookstore>
    
  2. Сохраните Books.xml в корневой папке диска C.

  3. Откройте новый проект СТАНДАРТНОГО EXE в Visual Basic. Форма Form1 создается по умолчанию.

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

  5. Перетащите кнопку Command и перетащите ее на Form1.

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

    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/author/first-name[starts-with(.,'M')]")
    MsgBox "Matching Nodes : " & nlist.length
    
    For Each node In nlist
    Debug.Print node.nodeName & " : " & node.Text
    Next
    
  7. Приведенный выше код загружает XML-код из Books.xml в экземпляр объекта MSXML DOMDocument . Затем он выполняет запрос XPath, который использует starts-with функцию XPath для идентификации всех авторов, имена которых начинаются с буквы M. Наконец, цикл For выполняет итерацию по выбранным узлам и отображает имена соответствующих элементов автора.

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