XmlNode.SelectSingleNode Metoda

Definice

Vybere první XmlNode výraz, který odpovídá výrazu XPath.

Přetížení

Name Description
SelectSingleNode(String)

Vybere první XmlNode výraz, který odpovídá výrazu XPath.

SelectSingleNode(String, XmlNamespaceManager)

Vybere první XmlNode výraz, který odpovídá výrazu XPath. Všechny předpony nalezené ve výrazu XPath se přeloží pomocí zadaného XmlNamespaceManagervýrazu .

Příklady

Následující příklad vrátí první knihu s odpovídajícím jménem autora. Přeloží XmlNamespaceManager výchozí obor názvů ve výrazu XPath.

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

Příklad používá soubor , newbooks.xmljako vstup.

<?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 zahrnovat obory názvů. Překlad oboru názvů se podporuje pomocí metody XmlNamespaceManager. Pokud výraz XPath obsahuje předponu, musí být do XmlNamespaceManagersouboru přidán pár URI předpony 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 do něj XmlNamespaceManagerpřidat předponu a identifikátor URI oboru názvů, jinak nebudete mít vybrané žádné uzly. Další informace naleznete v tématu Výběr uzlů pomocí navigace XPath.

SelectSingleNode(String)

Zdroj:
XmlNode.cs
Zdroj:
XmlNode.cs
Zdroj:
XmlNode.cs
Zdroj:
XmlNode.cs
Zdroj:
XmlNode.cs

Vybere první XmlNode výraz, 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.

Návraty

První XmlNode , který odpovídá dotazu XPath nebo null pokud se nenajde žá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;
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

Příklad používá soubor , booksort.xmljako vstup.


<?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 překlad oboru názvů, musíte použít SelectSingleNode přetížení, které přebírá XmlNamespaceManager jako argument. 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 k němu přesto použít XmlNamespaceManager předponu a identifikátor URI oboru názvů. Jinak se vybraný uzel nezobrazí. Další informace naleznete v tématu Výběr uzlů pomocí navigace XPath.

Poznámka:

Běžným problémem při formulaci výrazů XPath je, jak do výrazu zahrnout jednoduchou uvozovku (') nebo dvojitou uvozovku ("). Pokud potřebujete vyhledat hodnotu, která obsahuje jednu uvozovku, musíte řetězec uzavřít do dvojitých uvozovek. Pokud potřebujete vyhledat hodnotu, která obsahuje dvojitou uvozovku, 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>&apos;Emma&apos;</title>
  </book>
</bookstore>

Následující Visual Basic kód vybere prvek, který obsahuje jednoduché uvozovky:

book = root.SelectSingleNode("descendant::book[title=""'Emma'""]")

Tato metoda je rozšíření Microsoft modelu DOM (Document Object Model).

Viz také

Platí pro

SelectSingleNode(String, XmlNamespaceManager)

Zdroj:
XmlNode.cs
Zdroj:
XmlNode.cs
Zdroj:
XmlNode.cs
Zdroj:
XmlNode.cs
Zdroj:
XmlNode.cs

Vybere první XmlNode výraz, 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.

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 se nenajde žá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;
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

Příklad používá soubor , booksort.xmljako vstup.


<?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 zahrnovat obory názvů. Překlad oboru názvů se podporuje pomocí metody XmlNamespaceManager. Pokud výraz XPath obsahuje předponu, musí být do XmlNamespaceManagersouboru přidán pár URI předpony 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 do něj XmlNamespaceManagerpřidat předponu a identifikátor URI oboru názvů, jinak nebudete mít vybraný uzel. Další informace naleznete 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 formulaci výrazů XPath je, jak do výrazu zahrnout jednoduchou uvozovku (') nebo dvojitou uvozovku ("). Pokud potřebujete vyhledat hodnotu, která obsahuje jednu uvozovku, musíte řetězec uzavřít do dvojitých uvozovek. Pokud potřebujete vyhledat hodnotu, která obsahuje dvojitou uvozovku, 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>&apos;Emma&apos;</title>
  </book>
</bookstore>

Následující Visual Basic kód 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í Microsoft modelu DOM (Document Object Model).

Viz také

Platí pro