XmlNode.SelectNodes Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Väljer en lista över noder som matchar XPath-uttrycket.
Överlagringar
| Name | Description |
|---|---|
| SelectNodes(String) |
Väljer en lista över noder som matchar XPath-uttrycket. |
| SelectNodes(String, XmlNamespaceManager) |
Väljer en lista över noder som matchar XPath-uttrycket. Alla prefix som finns i XPath-uttrycket matchas med hjälp av angivna XmlNamespaceManager. |
Kommentarer
XPath-uttryck kan innehålla namnområden. Namnområdesmatchning stöds med hjälp av XmlNamespaceManager. Om XPath-uttrycket innehåller ett prefix måste prefixet och namnområdets URI-par läggas till i XmlNamespaceManager.
Note
Om XPath-uttrycket inte innehåller något prefix antas det att namnområdes-URI:n är det tomma namnområdet. Om xml-koden innehåller ett standardnamnområde måste du fortfarande lägga till ett prefix och en namnområdes-URI i XmlNamespaceManager. Annars kommer du inte att få några noder markerade.
Mer information finns i Välj noder med XPath-navigering. För kodexempel väljer du en överlagring från överlagringslistan i föregående avsnitt.
SelectNodes(String)
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
Väljer en lista över noder som matchar XPath-uttrycket.
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
Parametrar
- xpath
- String
XPath-uttrycket.
Returer
En XmlNodeList som innehåller en samling noder som matchar XPath-frågan.
Undantag
XPath-uttrycket innehåller ett prefix. Se XPath-exempel.
Exempel
I följande exempel väljs alla böcker där författarens efternamn är Austen och ändrar sedan priset på dessa böcker.
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
I det här exemplet används följande XML:
<?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>
Kommentarer
Om XPath-uttrycket kräver namnområdesmatchning måste du använda den SelectNodes överlagring som tar ett XmlNamespaceManager som argument.
XmlNamespaceManager Används för att matcha namnområden.
Note
Om XPath-uttrycket inte innehåller något prefix antas det att namnområdes-URI:n är det tomma namnområdet. Om din XML innehåller ett standardnamnområde måste du fortfarande använda XmlNamespaceManager och lägga till ett prefix och en namnområdes-URI till den. Annars kommer du inte att få några noder valda. Mer information finns i Välj noder med XPath-navigering.
Note
Ett vanligt problem när du formulerar XPath-uttryck är hur du inkluderar ett enda citattecken (') eller dubbla citattecken (") i uttrycket. Om du måste söka efter ett värde som innehåller ett enda citattecken måste du omsluta strängen med dubbla citattecken. Om du behöver söka efter ett värde som innehåller ett dubbelt citattecken måste du omsluta strängen med enkla citattecken.
Anta till exempel att du har följande XML:
<bookstore>
<book>
<title>'Emma'</title>
</book>
</bookstore>
Följande Visual Basic kod väljer ett element som innehåller enkla citattecken:
nodeList = root.SelectNodes("//book[contains(title,""'Emma'"")]")
Den här metoden är ett Microsoft-tillägg till dokumentobjektmodellen (DOM).
Objektet XmlNodeList som returneras med den här metoden är giltigt medan det underliggande dokumentet förblir oförändrat. Om det underliggande dokumentet ändras kan oväntade resultat returneras (inget undantag utlöses).
Se även
Gäller för
SelectNodes(String, XmlNamespaceManager)
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
Väljer en lista över noder som matchar XPath-uttrycket. Alla prefix som finns i XPath-uttrycket matchas med hjälp av angivna XmlNamespaceManager.
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
Parametrar
- xpath
- String
XPath-uttrycket. Se XPath-exempel.
- nsmgr
- XmlNamespaceManager
En XmlNamespaceManager som ska användas för att matcha namnrymder för prefix i XPath-uttrycket.
Returer
En XmlNodeList som innehåller en samling noder som matchar XPath-frågan.
Undantag
XPath-uttrycket innehåller ett prefix som inte har definierats i XmlNamespaceManager.
Exempel
I följande exempel visas värdena för vart och ett av ISBN-attributen. I det här exemplet används ett XmlElement objekt som ärver från XmlNode klassen.
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
I exemplet används filen , booksort.xmlsom indata.
<?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>
Kommentarer
XPath-uttryck kan innehålla namnområden. Namnområdesmatchning stöds med hjälp av XmlNamespaceManager. Om XPath-uttrycket innehåller ett prefix måste prefixet och namnområdets URI-par läggas till i XmlNamespaceManager.
Note
Om XPath-uttrycket inte innehåller något prefix antas det att namnområdes-URI:n är det tomma namnområdet. Om xml-koden innehåller ett standardnamnområde måste du fortfarande lägga till ett prefix och en namnområdes-URI i XmlNamespaceManager. Annars kommer du inte att få några noder markerade. Mer information finns i Välj noder med XPath-navigering.
Om du till exempel har följande XML:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>Pride And Prejudice</title>
</book>
</bookstore>
Följande C#-kod väljer alla boknoder:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNodeList nodelist = doc.SelectNodes("//ab:book", nsmgr);
Note
Ett vanligt problem när du formulerar XPath-uttryck är hur du inkluderar ett enda citattecken (') eller dubbla citattecken (") i uttrycket. Om du måste söka efter ett värde som innehåller ett enda citattecken måste du omsluta strängen med dubbla citattecken. Om du behöver söka efter ett värde som innehåller ett dubbelt citattecken måste du omsluta strängen med enkla citattecken.
Anta till exempel att du har följande XML:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>'Emma'</title>
</book>
</bookstore>
Följande Visual Basic kod väljer ett element som innehåller enkla citattecken:
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)
Den här metoden är ett Microsoft-tillägg till dokumentobjektmodellen (DOM).
Objektet XmlNodeList som returneras med den här metoden är giltigt medan det underliggande dokumentet förblir oförändrat. Om det underliggande dokumentet ändras kan oväntade resultat returneras (inget undantag utlöses).