Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как использовать contains() XPath
функцию при программировании DOM MSXML.
Исходная версия продукта: Microsoft XML
Исходный номер базы знаний: 304265
Итоги
При использовании объектной модели документов (DOM) Microsoft XML (MSXML) в коде для загрузки и анализа XML-документа часто используется практика программирования для идентификации элементов и (или) элементов с атрибутами, данные которых содержат указанное строковое значение или слово. В этой статье приводится пример кода, демонстрирующий, как можно использовать строковую функцию "contains" языка XML-путей (XPath) для выполнения этого требования.
Пошаговый пример
В Блокноте создайте 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>
Сохраните Books.xml в корневой папке диска C.
Откройте новый проект STANDARD EXE в Microsoft Visual Basic. Форма1 создается по умолчанию.
В меню "Проект" выберите пункт "Ссылки", а затем установите флажок Microsoft XML 3.0.
Перетащите кнопку команды и поместите ее на Form1.
Скопируйте и вставьте следующий код в процедуру события 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
Предыдущий код загружает XML из Books.xml в экземпляр объекта MSXML DOMDocument. Затем он запускает запрос XPath, который использует
contains XPath
функцию для идентификации всех заголовков книг, содержащих слово ADO. Наконец, цикл For выполняет итерацию по выбранным узлам и отображает соответствующие заголовки, которые были определены при выполнении запроса XPath.Первый параметр функции используется для указания исходного
contains XPath
узла или строки, для которой выполняется сравнение. Второй параметр — это строка, указывающая слово или строковое значение для поиска в исходном узле. Важно помнить, что строка или слово, предоставленное в качестве второго параметра функции contains, чувствительно к регистру.