XmlNode.SelectSingleNode Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wybiera pierwszy XmlNode
element zgodny z wyrażeniem XPath.
Przeciążenia
SelectSingleNode(String) |
Wybiera pierwszy |
SelectSingleNode(String, XmlNamespaceManager) |
Wybiera pierwszy |
Przykłady
Poniższy przykład zwraca pierwszą książkę z pasującą nazwą autora. Element XmlNamespaceManager
rozpoznaje domyślną przestrzeń nazw w wyrażeniu XPath.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
XmlDocument^ doc = gcnew XmlDocument;
doc->Load( L"newbooks.xml" );
// Create an XmlNamespaceManager to resolve the default namespace.
XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager( doc->NameTable );
nsmgr->AddNamespace( L"bk", L"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( L"descendant::bk:book[bk:author/bk:last-name='Atwood']", nsmgr );
Console::WriteLine( book->OuterXml );
return 0;
}
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
W przykładzie użyto pliku , newbooks.xml
jako danych wejściowych.
<?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>
Uwagi
Wyrażenia XPath mogą zawierać przestrzenie nazw. Rozpoznawanie przestrzeni nazw jest obsługiwane przy użyciu elementu XmlNamespaceManager
. Jeśli wyrażenie XPath zawiera prefiks, należy dodać parę identyfikatorów URI prefiksu i przestrzeni nazw do XmlNamespaceManager
klasy .
Uwaga
Jeśli wyrażenie XPath nie zawiera prefiksu, zakłada się, że identyfikator URI przestrzeni nazw jest pustą przestrzenią nazw. Jeśli kod XML zawiera domyślną przestrzeń nazw, nadal musisz dodać prefiks i identyfikator URI przestrzeni nazw do XmlNamespaceManager
obiektu . W przeciwnym razie nie zostaną wybrane żadne węzły. Aby uzyskać więcej informacji, zobacz Wybieranie węzłów przy użyciu nawigacji XPath.
SelectSingleNode(String)
- Źródło:
- XmlNode.cs
- Źródło:
- XmlNode.cs
- Źródło:
- XmlNode.cs
Wybiera pierwszy XmlNode
element zgodny z wyrażeniem XPath.
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
Parametry
- xpath
- String
Wyrażenie XPath. Zobacz Przykłady XPath.
Zwraca
Pierwszy XmlNode
, który pasuje do zapytania XPath lub null
jeśli nie znaleziono pasującego węzła.
Wyjątki
Wyrażenie XPath zawiera prefiks.
Przykłady
Poniższy przykład zmienia cenę pierwszej książki Jane Austen.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
XmlDocument^ doc = gcnew 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 );
}
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
W przykładzie użyto pliku , booksort.xml
jako danych wejściowych.
<?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>
Uwagi
Jeśli wyrażenie XPath wymaga rozpoznawania przestrzeni nazw, należy użyć SelectSingleNode
przeciążenia, które przyjmuje XmlNamespaceManager jako argument. Służy do rozpoznawania XmlNamespaceManager
przestrzeni nazw.
Uwaga
Jeśli wyrażenie XPath nie zawiera prefiksu, zakłada się, że identyfikator URI przestrzeni nazw jest pustą przestrzenią nazw. Jeśli kod XML zawiera domyślną przestrzeń nazw, nadal musisz użyć XmlNamespaceManager
i dodać do niego prefiks i identyfikator URI przestrzeni nazw. W przeciwnym razie nie otrzymasz wybranego węzła. Aby uzyskać więcej informacji, zobacz Wybieranie węzłów przy użyciu nawigacji XPath.
Uwaga
Typowym problemem podczas formułowania wyrażeń XPath jest sposób uwzględnienia pojedynczego cudzysłowu (') lub podwójnego cudzysłowu (") w wyrażeniu. Jeśli musisz wyszukać wartość zawierającą pojedynczy cudzysłów, musisz ująć ciąg w cudzysłowy. Jeśli musisz wyszukać wartość zawierającą podwójny cudzysłów, musisz ująć ciąg w cudzysłów pojedynczych.
Załóżmy na przykład, że masz następujący kod XML:
<bookstore>
<book>
<title>'Emma'</title>
</book>
</bookstore>
Poniższy kod języka Visual Basic wybiera element zawierający pojedyncze cudzysłowy:
book = root.SelectSingleNode("descendant::book[title=""'Emma'""]")
Ta metoda jest rozszerzeniem firmy Microsoft do modelu obiektów dokumentów (DOM).
Zobacz też
Dotyczy
SelectSingleNode(String, XmlNamespaceManager)
- Źródło:
- XmlNode.cs
- Źródło:
- XmlNode.cs
- Źródło:
- XmlNode.cs
Wybiera pierwszy XmlNode
element zgodny z wyrażeniem XPath. Wszystkie prefiksy znalezione w wyrażeniu XPath są rozpoznawane przy użyciu podanego XmlNamespaceManagerelementu .
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
Parametry
- xpath
- String
Wyrażenie XPath. Zobacz Przykłady XPath.
- nsmgr
- XmlNamespaceManager
Element XmlNamespaceManager służący do rozpoznawania przestrzeni nazw dla prefiksów w wyrażeniu XPath.
Zwraca
Pierwszy XmlNode
, który pasuje do zapytania XPath lub null
jeśli nie znaleziono pasującego węzła.
Wyjątki
Wyrażenie XPath zawiera prefiks, który nie jest zdefiniowany w elemecie XmlNamespaceManager
.
Przykłady
Poniższy przykład wybiera książkę z zgodną wartością ISBN.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
XmlDocument^ doc = gcnew XmlDocument;
doc->Load( "booksort.xml" );
//Create an XmlNamespaceManager for resolving namespaces.
XmlNamespaceManager^ nsmgr = gcnew 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->Item[@bk:ISBN='1-861001-57-6']", nsmgr );
Console::WriteLine( book->OuterXml );
}
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
W przykładzie użyto pliku , booksort.xml
jako danych wejściowych.
<?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>
Uwagi
Wyrażenia XPath mogą zawierać przestrzenie nazw. Rozpoznawanie przestrzeni nazw jest obsługiwane przy użyciu elementu XmlNamespaceManager
. Jeśli wyrażenie XPath zawiera prefiks, należy dodać parę identyfikatorów URI prefiksu i przestrzeni nazw do XmlNamespaceManager
klasy .
Uwaga
Jeśli wyrażenie XPath nie zawiera prefiksu, zakłada się, że identyfikator URI przestrzeni nazw jest pustą przestrzenią nazw. Jeśli kod XML zawiera domyślną przestrzeń nazw, nadal musisz dodać prefiks i identyfikator URI przestrzeni nazw do XmlNamespaceManager
obiektu . W przeciwnym razie nie zostanie wybrany węzeł. Aby uzyskać więcej informacji, zobacz Wybieranie węzłów przy użyciu nawigacji XPath.
Jeśli na przykład masz następujący kod XML:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>Pride And Prejudice</title>
</book>
</bookstore>
Poniższy kod w języku C# wybiera pierwszy węzeł książki:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNode book = doc.SelectSingleNode("//ab:book", nsmgr);
Uwaga
Typowym problemem podczas formułowania wyrażeń XPath jest sposób uwzględnienia pojedynczego cudzysłowu (') lub podwójnego cudzysłowu (") w wyrażeniu. Jeśli musisz wyszukać wartość zawierającą pojedynczy cudzysłów, musisz ująć ciąg w cudzysłowy. Jeśli musisz wyszukać wartość zawierającą podwójny cudzysłów, musisz ująć ciąg w cudzysłów pojedynczych.
Załóżmy na przykład, że masz następujący kod XML:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>'Emma'</title>
</book>
</bookstore>
Poniższy kod języka Visual Basic wybiera element zawierający pojedyncze cudzysłowy:
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)
Ta metoda jest rozszerzeniem firmy Microsoft do modelu obiektów dokumentów (DOM).