Gewusst wie: Ausführen von XPath-Abfragen mithilfe der System.Xml.XPath-Klassen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 317069 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel mit schrittweisen Anleitungen veranschaulicht die Klassen in der System.Xml.XPath -Namespace verwenden, um XPath-Abfragen in .NET-Anwendungen auszuführen.

Untersuchen der System.Xml.XPath-Namespace

Der System.Xml.XPath -Namespace enthält den XPath-Parser und das Datenbankmodul Auswertung von .NET Framework. Der System.Xml.XPath -Namespace unterstützt die Empfehlung von W3c-XML Path Language (XPath) Version 1.0. Weitere Informationen zu XPath-Empfehlung der folgenden W3C-Website:
XML Path Language (XPath) Version 1.0
Der System.Xml.XPath -Namespace enthält auch die folgenden Klassen, die zum Ausführen von XPath-Abfragen und navigieren programmgesteuert generierten Resultsets optimiert sind:
  • XPathDocument : eine hohe Leistung lesen - nur cache zum Verarbeiten von XML-Dokumenten und Streams. XPathDocument ist für Extensible Stylesheet Language Transformation (XSLT) Verarbeitung und das XPath-Datenmodell optimiert. XPathDocument verwendet das Dokumentobjektmodell (DOM) - Analyse Modell (lädt die Quell-XML in eine speicherinterne Struktur) basierend jedoch nicht implementiert die Schnittstellen erforderlich einfügen, ändern oder Löschen von Knoten in einem XML-Dokument oder den Stream.
  • XPathNavigator : Diese Klasse basiert auf dem XPath-Datenmodell. XPathNavigator stellt die erforderlichen erforderlichen Methoden bereit zum Ausführen von XPath-Abfragen für XML-Daten, die in ein XPathDocument geladen wird. XPathNavigator wird mithilfe der CreateNavigator -Methode eines Objekts XPathDocument instanziiert. Sie können auch XPathNavigator verwenden, um häufig ausgeführte XPath-Abfrageausdrücke kompilieren und generieren ein System.Xml.XPath.XPathExpression -Objekt, die kompilierte Abfrage kapselt.
  • XPathNodeIterator : stellt einen forward - only, read - nur Iterator. Wenn Sie die Select -Methode eines Objekts XPathNavigator , verwenden um eine XPath-Abfrage auszuführen, wird eine Instanz der XPathNodeIterator erstellt. XPathNodeIterator können Sie um das Resultset zu navigieren, das von der XPath-Abfrage erzeugt wird.
  • XPathExpression : einen kompilierten XPath-Abfrageausdruck einschließt. Kompilieren Sie ein XPath-Abfrageausdruck, bevor Sie den Abfrageausdruck ausführen können. Ein kompilierter XPath-Ausdruck enthält eine Syntax, die der W3C XPath-Abfragesprache-Spezifikation entsprechen. Ein Aufruf an die Compile -Methode der XPathNavigator -Objekt gibt die XPathExpression -Klasse zurück. In der Regel verwenden Sie XPathExpression , um eine vorkompilierte XPath-Abfrageausdruck in einem Aufruf der Select -Methode eines Objekts XPathNavigator bereitzustellen.
  • XPathException : .NET Framework-Ausnahme, die generiert wird, wenn ein Fehler, auftritt während der Verarbeitung eines XPath-Abfrageausdruck. Die Select -Methode und die Compile -Methode der XPathNavigator -Klasse können XPathException auslösen.

Beispiel für XML-Dokumente erstellen

Gehen Sie folgendermaßen vor um zwei Beispiel XML-Dokumenten mit der nachfolgende Beispielcode von .NET zu erstellen:
  1. Mit dem Namen Books.XML, Verwendung Editor oder einem ähnlichen Text-Editor, um den folgenden Code in ein neues XML-Dokument einzufügen. Das Dokument im Stammordner auf Ihrer Festplatte speichern.
    <?xml version='1.0'?>
    <Books>
    <Book>
      <Title>Beginning XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>XML Step by Step</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    <Book>
      <Title>Professional XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>Developing XML solutions</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    </Books>
    					
  2. Mit dem Namen DotNetBooks.xml, Verwendung Editor oder einem ähnlichen Text-Editor, um den folgenden Code in ein neues XML-Dokument einzufügen. Das Dokument im Stammordner auf Ihrer Festplatte speichern.
    <?xml version='1.0'?>
    <DotNetBooks>
    <DotNetBook>
      <Title>Professional C#</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>ADO.Net Core Reference</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Professional VB.Net</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Inside C#</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    </DotNetBooks>

Erstellen einer Visual Basic .NET-Projekts

  1. Starten Sie Visual Studio .NET aus, und erstellen Sie ein neues Visual Basic .NET Windows-Anwendungsprojekt.
  2. Ziehen Sie zwei Button -Steuerelemente aus der Toolbox auf Form1.vb.
  3. Fügen Sie folgenden Code in der Prozedur Click_Event die erste Befehlsschaltfläche:
    'Instantiate the XPathDocument class.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Instantiate the XPathNavigator class.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Instantiate the XPathIterator class.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Use the XPathIterator class to navigate through the generated resultset
    'and then display the selected Titles.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  4. Lesen Sie die Inline-Kommentare, die Funktionalität des Codes zu verstehen. Bestimmte geachtet werden, wie der Code instanziiert und verwendet Instanzen der einzelnen Klassen im Namespace System.Xml.XPath . Beachten Sie, dass eine Zeichenfolge der XPath-Abfrage Expression-Parameter im Aufruf an die Select -Methode des Objekts XPathNavigator angibt.
  5. Fügen Sie den folgenden Code in die Click_Event -Prozedur der zweite Befehlsschaltfläche:
    'Construct the XPathDocument by specifying the path to Books.xml.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Create the XPathNavigator.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Compile the XPath query expression to identify all MSPress Titles.
    'The Compile method of the XPathNavigator generates an XPathExpression object
    'that encapsulates the compiled query expression.
    
    Dim expr As System.Xml.XPath.XPathExpression = nav.Compile("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Execute the Select method of the XPathNavigator to create the XPathNodeIterator.
    'Note that the sample code supplies the XPathExpression object as the query expression parameter.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select(expr)
    
    System.Diagnostics.Debug.WriteLine("MSPress titles in books.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    
    
    'Release the XPathDocument and XPathNavigator.
    xmldoc = Nothing
    nav = Nothing
    
    System.Diagnostics.Debug.WriteLine(vbCrLf & "MSPress titles in DotNetBooks.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Specify the path to DotNetBooks.xml to reconstruct the XPathDocument.
    xmldoc = New System.Xml.XPath.XPathDocument("c:\DotNetBooks.xml")
    
    'Create the XPathNavigator.
    nav = xmldoc.CreateNavigator()
    
    'Reuse the XPathExpression that you compiled previously to locate
    'all MSPress titles in DotNetBooks.xml.
    
    'You can reuse the XPathExpression because the hierarchy of elements that are referenced
    'in the XPath query is the same in Books.xml and DotNetBooks.xml. 
    'For example, the Publisher element is a child of the Title element in both XML documents.
    'The hierarchy must be identical for you to reuse the same XPathExpression object
    'across different XML documents/streams.
    
    'When you use an XPathExpression object, and the Select method executes,
    'the XPath query is not recompiled. 
    
    iterator = nav.Select(expr)
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
         System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  6. Lesen Sie die Inline-Kommentare, die Funktionalität des Codes zu verstehen. Bestimmte geachtet werden, wie der Beispielcode XPathExpression -Objekt das erste Mal (gegen Books.XML) instanziiert und anschließend das Objekt wiederverwendet, wenn die XPath-Abfrage (gegen DotNetBooks.xml) zum zweite Mal ausgeführt wird.

Testen des Projekts

  1. Speichern Sie die Änderungen an der Visual Basic .NET-Projekt, und führen Sie dann das Projekt.
  2. Wenn das Formular angezeigt wird, klicken Sie auf die erste Befehlsschaltfläche, um den Code auszuführen, der eine Zeichenfolge, verwendet um den XPath-Abfrage-Ausdruck anzugeben. Die Ausgabe der angegebenen XPath-Abfrage gegen Books.XML wird wie folgt angezeigt:
    XML Step by Step
    Developing XML solutions
    					
  3. Klicken Sie auf die zweite Befehlsschaltfläche, den Code auszuführen, der ein XPathExpression -Objekt, verwendet um den XPath-Abfrage-Ausdruck anzugeben. Die Ausgabe der angegebenen XPath-Abfrage gegen Books.XML und DotNetBooks.xml wird wie folgt angezeigt:
    MSPress titles in books.xml...
    ******************************
    XML Step by Step
    Developing XML solutions
    
    MSPress titles in DotNetBooks.xml...
    ******************************
    ADO.Net Core Reference
    Inside C#
    					

Eigenschaften

Artikel-ID: 317069 - Geändert am: Freitag, 12. August 2005 - Version: 4.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
Keywords: 
kbmt kbhowtomaster KB317069 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 317069
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com