XmlNode.SelectSingleNode Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vybere první XmlNode
, která odpovídá výrazu XPath.
Přetížení
SelectSingleNode(String) |
Vybere první |
SelectSingleNode(String, XmlNamespaceManager) |
Vybere první |
Příklady
Následující příklad vrátí první knihu s odpovídajícím jménem autora. Příkaz XmlNamespaceManager
přeloží výchozí obor názvů ve výrazu 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
V příkladu se jako vstup používá soubor newbooks.xml
, .
<?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>
Poznámky
Výrazy XPath mohou obsahovat obory názvů. Překlad oboru názvů se podporuje pomocí XmlNamespaceManager
. Pokud výraz XPath obsahuje předponu, musí být do objektu přidán pár identifikátoru URI předpony XmlNamespaceManager
a oboru názvů.
Poznámka
Pokud výraz XPath neobsahuje předponu, předpokládá se, že identifikátor URI oboru názvů je prázdný obor názvů. Pokud váš xml obsahuje výchozí obor názvů, musíte přesto přidat předponu a identifikátor URI oboru názvů do XmlNamespaceManager
. V opačném případě nebudou vybrány žádné uzly. Další informace najdete v tématu Výběr uzlů pomocí navigace XPath.
SelectSingleNode(String)
- Zdroj:
- XmlNode.cs
- Zdroj:
- XmlNode.cs
- Zdroj:
- XmlNode.cs
Vybere první XmlNode
, která odpovídá výrazu 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
Výraz XPath. Viz Příklady XPath.
Návraty
První XmlNode
, která odpovídá dotazu XPath, nebo null
pokud nebyl nalezen žádný odpovídající uzel.
Výjimky
Výraz XPath obsahuje předponu.
Příklady
Následující příklad změní cenu první knihy 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
V příkladu se jako vstup používá soubor booksort.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>
Poznámky
Pokud výraz XPath vyžaduje rozlišení oboru názvů, musíte použít SelectSingleNode
přetížení, které jako svůj argument přebírá XmlNamespaceManager . Slouží XmlNamespaceManager
k překladu oborů názvů.
Poznámka
Pokud výraz XPath neobsahuje předponu, předpokládá se, že identifikátor URI oboru názvů je prázdný obor názvů. Pokud xml obsahuje výchozí obor názvů, musíte stále použít XmlNamespaceManager
a přidat předponu a identifikátor URI oboru názvů. V opačném případě nebudete mít vybraný uzel. Další informace najdete v tématu Výběr uzlů pomocí navigace XPath.
Poznámka
Běžným problémem při vytváření výrazů XPath je, jak do výrazu zahrnout jednoduché uvozovky (') nebo dvojité uvozovky ("). Pokud potřebujete vyhledat hodnotu, která obsahuje jednoduchou uvozovku, musíte řetězec uzavřít do dvojitých uvozovek. Pokud potřebujete vyhledat hodnotu, která obsahuje dvojité uvozovky, musíte řetězec uzavřít do jednoduchých uvozovek.
Předpokládejme například, že máte následující kód XML:
<bookstore>
<book>
<title>'Emma'</title>
</book>
</bookstore>
Následující kód jazyka Visual Basic vybere prvek, který obsahuje jednoduché uvozovky:
book = root.SelectSingleNode("descendant::book[title=""'Emma'""]")
Tato metoda je rozšířením modelu DOM (Document Object Model) od Microsoftu.
Viz také
Platí pro
SelectSingleNode(String, XmlNamespaceManager)
- Zdroj:
- XmlNode.cs
- Zdroj:
- XmlNode.cs
- Zdroj:
- XmlNode.cs
Vybere první XmlNode
, která odpovídá výrazu XPath. Všechny předpony nalezené ve výrazu XPath se přeloží pomocí zadaného XmlNamespaceManagervýrazu .
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
Výraz XPath. Viz Příklady XPath.
- nsmgr
- XmlNamespaceManager
Slouží XmlNamespaceManager k překladu oborů názvů pro předpony ve výrazu XPath.
Návraty
První XmlNode
, která odpovídá dotazu XPath, nebo null
pokud nebyl nalezen žádný odpovídající uzel.
Výjimky
Výraz XPath obsahuje předponu, která není definována v objektu XmlNamespaceManager
.
Příklady
Následující příklad vybere knihu s odpovídající hodnotou 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
V příkladu se jako vstup používá soubor booksort.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>
Poznámky
Výrazy XPath mohou obsahovat obory názvů. Překlad oboru názvů se podporuje pomocí XmlNamespaceManager
. Pokud výraz XPath obsahuje předponu, musí být do objektu přidán pár identifikátoru URI předpony XmlNamespaceManager
a oboru názvů.
Poznámka
Pokud výraz XPath neobsahuje předponu, předpokládá se, že identifikátor URI oboru názvů je prázdný obor názvů. Pokud xml obsahuje výchozí obor názvů, musíte přesto přidat předponu a identifikátor URI oboru názvů do XmlNamespaceManager
. V opačném případě nebude vybraný uzel. Další informace najdete v tématu Výběr uzlů pomocí navigace XPath.
Pokud jste například měli následující kód XML:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>Pride And Prejudice</title>
</book>
</bookstore>
Následující kód jazyka C# vybere první uzel knihy:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNode book = doc.SelectSingleNode("//ab:book", nsmgr);
Poznámka
Běžným problémem při vytváření výrazů XPath je, jak do výrazu zahrnout jednoduché uvozovky (') nebo dvojité uvozovky ("). Pokud potřebujete vyhledat hodnotu, která obsahuje jednoduchou uvozovku, musíte řetězec uzavřít do dvojitých uvozovek. Pokud potřebujete vyhledat hodnotu, která obsahuje dvojité uvozovky, musíte řetězec uzavřít do jednoduchých uvozovek.
Předpokládejme například, že máte následující kód XML:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>'Emma'</title>
</book>
</bookstore>
Následující kód jazyka Visual Basic vybere prvek, který obsahuje jednoduché uvozovky:
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)
Tato metoda je rozšířením modelu DOM (Document Object Model) od Microsoftu.