Freigeben über


XmlNode.SelectNodes Methode

Definition

Wählt eine Liste der Knoten aus, die dem XPath-Ausdruck entsprechen.

Überlädt

Name Beschreibung
SelectNodes(String)

Wählt eine Liste der Knoten aus, die dem XPath-Ausdruck entsprechen.

SelectNodes(String, XmlNamespaceManager)

Wählt eine Liste der Knoten aus, die dem XPath-Ausdruck entsprechen. Alle Präfixe, die im XPath-Ausdruck gefunden werden, werden mithilfe der bereitgestellten XmlNamespaceManageraufgelöst.

Hinweise

XPath-Ausdrücke können Namespaces enthalten. Die Namespaceauflösung wird mithilfe der XmlNamespaceManager. Wenn der XPath-Ausdruck ein Präfix enthält, muss dem Präfix- und Namespace-URI-Paar das Präfix und das XmlNamespaceManagerNamespace-URI-Paar hinzugefügt werden.

Hinweis

Wenn der XPath-Ausdruck kein Präfix enthält, wird davon ausgegangen, dass der Namespace-URI der leere Namespace ist. Wenn Ihr XML einen Standardnamespace enthält, müssen Sie dem Namespace-URI weiterhin ein Präfix und einen Namespace-URI XmlNamespaceManagerhinzufügen. Andernfalls werden keine Knoten ausgewählt.

Weitere Informationen finden Sie unter Auswählen von Knoten mithilfe der XPath-Navigation. Wählen Sie für Codebeispiele eine Überladung aus der Überladungsliste im vorherigen Abschnitt aus.

SelectNodes(String)

Quelle:
XmlNode.cs
Quelle:
XmlNode.cs
Quelle:
XmlNode.cs
Quelle:
XmlNode.cs
Quelle:
XmlNode.cs

Wählt eine Liste der Knoten aus, die dem XPath-Ausdruck entsprechen.

public:
 System::Xml::XmlNodeList ^ SelectNodes(System::String ^ xpath);
public System.Xml.XmlNodeList? SelectNodes(string xpath);
public System.Xml.XmlNodeList SelectNodes(string xpath);
member this.SelectNodes : string -> System.Xml.XmlNodeList
Public Function SelectNodes (xpath As String) As XmlNodeList

Parameter

xpath
String

Der XPath-Ausdruck.

Gibt zurück

Eine XmlNodeList Auflistung von Knoten, die der XPath-Abfrage entsprechen.

Ausnahmen

Der XPath-Ausdruck enthält ein Präfix.

Beispiele

Im folgenden Beispiel werden alle Bücher ausgewählt, bei denen der Nachname des Autors austen ist, und ändert dann den Preis dieser Bücher.

using System;
using System.Xml;

public class Sample6
{
    public static void Main()
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("booksort.xml");

        XmlNodeList nodeList;
        XmlNode root = doc.DocumentElement;

        nodeList = root.SelectNodes("descendant::book[author/last-name='Austen']");

        //Change the price on the books.
        foreach (XmlNode book in nodeList)
        {
            book.LastChild.InnerText = "15.95";
        }

        Console.WriteLine("Display the modified XML document....");
        doc.Save(Console.Out);
    }
}
Imports System.IO
Imports System.Xml

public class Sample

  public shared sub Main()

    'Create the XmlDocument.
    Dim doc as XmlDocument = new XmlDocument()
    doc.Load("booksort.xml")
           
    Dim book as XmlNode
    Dim nodeList as XmlNodeList 
    Dim root as XmlNode = doc.DocumentElement

    nodeList=root.SelectNodes("descendant::book[author/last-name='Austen']")
 
    'Change the price on the books.
    for each book in nodeList      
      book.LastChild.InnerText="15.95"
    next 

    Console.WriteLine("Display the modified XML document....")
    doc.Save(Console.Out)
    
  end sub
end class

In diesem Beispiel wird der folgende XML-Code verwendet:


<?xml version="1.0"?>
<!-- A fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples">
  <book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
    <title>Pride And Prejudice</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>24.95</price>
  </book>
  <book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
    <title>The Handmaid's Tale</title>
    <author>
      <first-name>Margaret</first-name>
      <last-name>Atwood</last-name>
    </author>
    <price>29.95</price>
  </book>
  <book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
    <title>Emma</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>19.95</price>
  </book>
  <book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
    <title>Sense and Sensibility</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>19.95</price>
  </book>
</bookstore>

Hinweise

Wenn für den XPath-Ausdruck eine Namespaceauflösung erforderlich ist, müssen Sie die Überladung verwenden, die SelectNodes als XmlNamespaceManager Argument verwendet wird. Dies XmlNamespaceManager wird verwendet, um Namespaces aufzulösen.

Hinweis

Wenn der XPath-Ausdruck kein Präfix enthält, wird davon ausgegangen, dass der Namespace-URI der leere Namespace ist. Wenn Ihr XML einen Standardnamespace enthält, müssen Sie weiterhin den XmlNamespaceManager Präfix- und Namespace-URI verwenden und diesem hinzufügen. Andernfalls erhalten Sie keine Knoten ausgewählt. Weitere Informationen finden Sie unter Auswählen von Knoten mithilfe der XPath-Navigation.

Hinweis

Ein häufiges Problem beim Erstellen von XPath-Ausdrücken besteht darin, ein einfaches Anführungszeichen (') oder ein doppeltes Anführungszeichen (") in den Ausdruck aufzunehmen. Wenn Sie nach einem Wert suchen müssen, der ein einzelnes Anführungszeichen enthält, müssen Sie die Zeichenfolge in doppelte Anführungszeichen setzen. Wenn Sie nach einem Wert suchen müssen, der ein doppeltes Anführungszeichen enthält, müssen Sie die Zeichenfolge in einfache Anführungszeichen setzen.

Angenommen, Sie haben den folgenden XML-Code:

<bookstore>
  <book>
    <title>&apos;Emma&apos;</title>
  </book>
</bookstore>

Der folgende Visual Basic Code wählt ein Element aus, das einfache Anführungszeichen enthält:

nodeList = root.SelectNodes("//book[contains(title,""'Emma'"")]")

Diese Methode ist eine Microsoft Erweiterung für das Document Object Model (DOM).

Das XmlNodeList von dieser Methode zurückgegebene Objekt ist gültig, während das zugrunde liegende Dokument unverändert bleibt. Wenn sich das zugrunde liegende Dokument ändert, werden möglicherweise unerwartete Ergebnisse zurückgegeben (es wird keine Ausnahme ausgelöst).

Weitere Informationen

Gilt für:

SelectNodes(String, XmlNamespaceManager)

Quelle:
XmlNode.cs
Quelle:
XmlNode.cs
Quelle:
XmlNode.cs
Quelle:
XmlNode.cs
Quelle:
XmlNode.cs

Wählt eine Liste der Knoten aus, die dem XPath-Ausdruck entsprechen. Alle Präfixe, die im XPath-Ausdruck gefunden werden, werden mithilfe der bereitgestellten XmlNamespaceManageraufgelöst.

public:
 System::Xml::XmlNodeList ^ SelectNodes(System::String ^ xpath, System::Xml::XmlNamespaceManager ^ nsmgr);
public System.Xml.XmlNodeList? SelectNodes(string xpath, System.Xml.XmlNamespaceManager nsmgr);
public System.Xml.XmlNodeList SelectNodes(string xpath, System.Xml.XmlNamespaceManager nsmgr);
member this.SelectNodes : string * System.Xml.XmlNamespaceManager -> System.Xml.XmlNodeList
Public Function SelectNodes (xpath As String, nsmgr As XmlNamespaceManager) As XmlNodeList

Parameter

xpath
String

Der XPath-Ausdruck.

nsmgr
XmlNamespaceManager

Dient XmlNamespaceManager zum Auflösen von Namespaces für Präfixe im XPath-Ausdruck.

Gibt zurück

Eine XmlNodeList Auflistung von Knoten, die der XPath-Abfrage entsprechen.

Ausnahmen

Der XPath-Ausdruck enthält ein Präfix, das nicht in der XmlNamespaceManager.

Beispiele

Im folgenden Beispiel werden die Werte der einzelnen ISBN-Attribute angezeigt. In diesem Beispiel wird ein XmlElement Objekt verwendet, das von der XmlNode Klasse erbt.

using System;
using System.IO;
using System.Xml;

public class Sample
{
  public static void Main()
  {

      XmlDocument doc = new XmlDocument();
      doc.Load("booksort.xml");

      //Create an XmlNamespaceManager for resolving namespaces.
      XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
      nsmgr.AddNamespace("bk", "urn:samples");

      //Select and display the value of all the ISBN attributes.
      XmlNodeList nodeList;
      XmlElement root = doc.DocumentElement;
      nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr);
      foreach (XmlNode isbn in nodeList){
        Console.WriteLine(isbn.Value);
      }
   }
}
Imports System.IO
Imports System.Xml

public class Sample

  public shared sub Main()

      Dim doc as XmlDocument = new XmlDocument()
      doc.Load("booksort.xml")

      'Create an XmlNamespaceManager for resolving namespaces.
      Dim nsmgr as XmlNamespaceManager = new XmlNamespaceManager(doc.NameTable)
      nsmgr.AddNamespace("bk", "urn:samples")

      'Select and display the value of all the ISBN attributes.
      Dim nodeList as XmlNodeList 
      Dim root as XmlElement = doc.DocumentElement
      nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr)
      Dim isbn as XmlNode
      for each isbn in nodeList
        Console.WriteLine(isbn.Value)
      next

  end sub
end class

Im Beispiel wird die Datei als booksort.xmlEingabe verwendet.


<?xml version="1.0"?>
<!-- A fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples">
  <book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
    <title>Pride And Prejudice</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>24.95</price>
  </book>
  <book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
    <title>The Handmaid's Tale</title>
    <author>
      <first-name>Margaret</first-name>
      <last-name>Atwood</last-name>
    </author>
    <price>29.95</price>
  </book>
  <book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
    <title>Emma</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>19.95</price>
  </book>
  <book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
    <title>Sense and Sensibility</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>19.95</price>
  </book>
</bookstore>

Hinweise

XPath-Ausdrücke können Namespaces enthalten. Die Namespaceauflösung wird mithilfe der XmlNamespaceManager. Wenn der XPath-Ausdruck ein Präfix enthält, muss dem Präfix- und Namespace-URI-Paar das Präfix und das XmlNamespaceManagerNamespace-URI-Paar hinzugefügt werden.

Hinweis

Wenn der XPath-Ausdruck kein Präfix enthält, wird davon ausgegangen, dass der Namespace-URI der leere Namespace ist. Wenn Ihr XML einen Standardnamespace enthält, müssen Sie dem Namespace-URI weiterhin ein Präfix und einen Namespace-URI XmlNamespaceManagerhinzufügen. Andernfalls werden keine Knoten ausgewählt. Weitere Informationen finden Sie unter Auswählen von Knoten mithilfe der XPath-Navigation.

Beispiel: Wenn Sie den folgenden XML-Code hatten:

<bookstore xmlns="http://www.lucernepublishing.com">
 <book>
   <title>Pride And Prejudice</title>
 </book>
</bookstore>

Der folgende C#-Code wählt alle Buchknoten aus:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNodeList nodelist = doc.SelectNodes("//ab:book", nsmgr);

Hinweis

Ein häufiges Problem beim Erstellen von XPath-Ausdrücken besteht darin, ein einfaches Anführungszeichen (') oder ein doppeltes Anführungszeichen (") in den Ausdruck aufzunehmen. Wenn Sie nach einem Wert suchen müssen, der ein einzelnes Anführungszeichen enthält, müssen Sie die Zeichenfolge in doppelte Anführungszeichen setzen. Wenn Sie nach einem Wert suchen müssen, der ein doppeltes Anführungszeichen enthält, müssen Sie die Zeichenfolge in einfache Anführungszeichen setzen.

Angenommen, Sie haben den folgenden XML-Code:

<bookstore xmlns="http://www.lucernepublishing.com">
  <book>
    <title>&apos;Emma&apos;</title>
  </book>
</bookstore>

Der folgende Visual Basic Code wählt ein Element aus, das einfache Anführungszeichen enthält:

Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com")
nodeList = root.SelectNodes("//ab:book[contains(ab:title,""'Emma'"")]", nsmgr)

Diese Methode ist eine Microsoft Erweiterung für das Document Object Model (DOM).

Das XmlNodeList von dieser Methode zurückgegebene Objekt ist gültig, während das zugrunde liegende Dokument unverändert bleibt. Wenn sich das zugrunde liegende Dokument ändert, werden möglicherweise unerwartete Ergebnisse zurückgegeben (es wird keine Ausnahme ausgelöst).

Weitere Informationen

Gilt für: