XmlNode.SelectSingleNode 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 den första XmlNode som matchar XPath-uttrycket.
Överlagringar
| Name | Description |
|---|---|
| SelectSingleNode(String) |
Väljer den första |
| SelectSingleNode(String, XmlNamespaceManager) |
Väljer den första |
Exempel
I följande exempel returneras den första boken med det matchande författarens namn. Löser XmlNamespaceManager standardnamnområdet i XPath-uttrycket.
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.Load("newbooks.xml");
// Create an XmlNamespaceManager to resolve the default namespace.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("bk", "urn:newbooks-schema");
// Select the first book written by an author whose last name is Atwood.
XmlNode book;
XmlElement root = doc.DocumentElement;
book = root.SelectSingleNode("descendant::bk:book[bk:author/bk:last-name='Atwood']", nsmgr);
Console.WriteLine(book.OuterXml);
}
}
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
Dim doc As XmlDocument = New XmlDocument()
doc.Load("newbooks.xml")
'Create an XmlNamespaceManager for resolving namespaces.
Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("bk", "urn:newbooks-schema")
'Select the book written by an author whose last name is Atwood.
Dim book As XmlNode
Dim root As XmlElement = doc.DocumentElement
book = root.SelectSingleNode("descendant::bk:book[bk:author/bk:last-name='Atwood']", nsmgr)
Console.WriteLine(book.OuterXml)
End Sub
End Class
I exemplet används filen , newbooks.xmlsom indata.
<?xml version='1.0'?>
<bookstore xmlns="urn:newbooks-schema">
<book genre="novel" style="hardcover">
<title>The Handmaid's Tale</title>
<author>
<first-name>Margaret</first-name>
<last-name>Atwood</last-name>
</author>
<price>19.95</price>
</book>
<book genre="novel" style="other">
<title>The Poisonwood Bible</title>
<author>
<first-name>Barbara</first-name>
<last-name>Kingsolver</last-name>
</author>
<price>11.99</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.
SelectSingleNode(String)
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
Väljer den första XmlNode som matchar XPath-uttrycket.
public:
System::Xml::XmlNode ^ SelectSingleNode(System::String ^ xpath);
public System.Xml.XmlNode? SelectSingleNode(string xpath);
public System.Xml.XmlNode SelectSingleNode(string xpath);
member this.SelectSingleNode : string -> System.Xml.XmlNode
Public Function SelectSingleNode (xpath As String) As XmlNode
Parametrar
- xpath
- String
XPath-uttrycket. Se XPath-exempel.
Returer
Den första XmlNode som matchar XPath-frågan eller null om ingen matchande nod hittas.
Undantag
XPath-uttrycket innehåller ett prefix.
Exempel
I följande exempel ändras priset för den första Jane Austen-boken.
using System;
using System.IO;
using System.Xml;
public class Sample {
public static void Main() {
XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");
XmlNode book;
XmlNode root = doc.DocumentElement;
book=root.SelectSingleNode("descendant::book[author/last-name='Austen']");
//Change the price on the book.
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 root as XmlNode = doc.DocumentElement
book=root.SelectSingleNode("descendant::book[author/last-name='Austen']")
'Change the price on the book.
book.LastChild.InnerText="15.95"
Console.WriteLine("Display the modified XML document....")
doc.Save(Console.Out)
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
Om XPath-uttrycket kräver namnområdesmatchning måste du använda den SelectSingleNode ö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 xml-koden 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 får du ingen vald nod. 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:
book = root.SelectSingleNode("descendant::book[title=""'Emma'""]")
Den här metoden är ett Microsoft-tillägg till dokumentobjektmodellen (DOM).
Se även
Gäller för
SelectSingleNode(String, XmlNamespaceManager)
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
- Källa:
- XmlNode.cs
Väljer den första XmlNode som matchar XPath-uttrycket. Alla prefix som finns i XPath-uttrycket matchas med hjälp av angivna XmlNamespaceManager.
public:
System::Xml::XmlNode ^ SelectSingleNode(System::String ^ xpath, System::Xml::XmlNamespaceManager ^ nsmgr);
public System.Xml.XmlNode? SelectSingleNode(string xpath, System.Xml.XmlNamespaceManager nsmgr);
public System.Xml.XmlNode SelectSingleNode(string xpath, System.Xml.XmlNamespaceManager nsmgr);
member this.SelectSingleNode : string * System.Xml.XmlNamespaceManager -> System.Xml.XmlNode
Public Function SelectSingleNode (xpath As String, nsmgr As XmlNamespaceManager) As XmlNode
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
Den första XmlNode som matchar XPath-frågan eller null om ingen matchande nod hittas.
Undantag
XPath-uttrycket innehåller ett prefix som inte har definierats i XmlNamespaceManager.
Exempel
I följande exempel väljs boken med det matchande ISBN-värdet.
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 the book node with the matching attribute value.
XmlNode book;
XmlElement root = doc.DocumentElement;
book = root.SelectSingleNode("descendant::book[@bk:ISBN='1-861001-57-6']", nsmgr);
Console.WriteLine(book.OuterXml);
}
}
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 the book node with the matching attribute value.
Dim book as XmlNode
Dim root as XmlElement = doc.DocumentElement
book = root.SelectSingleNode("descendant::book[@bk:ISBN='1-861001-57-6']", nsmgr)
Console.WriteLine(book.OuterXml)
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 får du inte en vald nod. 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 den första boknoden:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNode book = doc.SelectSingleNode("//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")
book = root.SelectSingleNode("descendant::ab:book[ab:title=""'Emma'""]", nsmgr)
Den här metoden är ett Microsoft-tillägg till dokumentobjektmodellen (DOM).