XmlNode.SelectNodes Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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>'Emma'</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
- SelectSingleNode(String)
- XPath-Auswahl und benutzerdefinierte Funktionen und mehr
- W3C XPath 1.0-Empfehlung
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>'Emma'</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).