Udostępnij za pośrednictwem


Użyj funkcji contains() XPath podczas programowania pliku MSXML DOM

W tym artykule pokazano, jak używać funkcji contains() XPath podczas programowania MSXML DOM.

Oryginalna wersja produktu: Microsoft XML
Oryginalny numer KB: 304265

Podsumowanie

Jeśli używasz modelu obiektów dokumentów Microsoft XML (MSXML) w kodzie do ładowania i analizowania dokumentu XML, często praktyką programowania jest identyfikowanie elementów i/lub elementów z atrybutami, których dane zawierają określoną wartość ciągu lub wyraz. W tym artykule opisano przykładowy kod, który pokazuje, jak można użyć funkcji tekstowej XML Path Language (XPath) w celu zaimplementowania tego wymagania.

Przykład krok po kroku

  1. W Notatniku utwórz nowy dokument XML o nazwie Books.xmli wklej następujący kod 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. Zapisz Books.xml w folderze głównym dysku C.

  3. Otwórz nowy projekt Standard EXE w programie Microsoft Visual Basic. Formularz1 jest tworzony domyślnie.

  4. W menu Projektu kliknij Odwołania, a następnie zaznacz pole wyboru Microsoft XML 3.0.

  5. Przeciągnij przycisk poleceń i upuść go na Form1.

  6. Skopiuj i wklej następujący kod w procedurze zdarzeń kliknięcia przycisku Polecenie:

    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. Powyższy kod ładuje kod XML z Books.xml do wystąpienia obiektu MSXML DOMDocument. Następnie uruchamia zapytanie XPath, które używa contains XPath funkcji do identyfikowania wszystkich tytułów książek zawierających słowo ADO. Na koniec pętla For wykonuje iterację po wybranych węzłach i wyświetla pasujące tytuły, które zostały zidentyfikowane przez uruchomienie zapytania XPath.

  8. Pierwszy parametr funkcji służy do określania węzła źródłowego contains XPath lub ciągu, względem którego ma zostać wykonane porównanie. Drugi parametr to ciąg, który określa wartość słowa lub ciągu do wyszukania w węźle źródłowym. Należy pamiętać, że ciąg lub słowo podane jako drugi parametr funkcji contains jest wrażliwy na wielkość liter.