XmlNode.SelectSingleNode Metódus

Definíció

Az XPath kifejezésnek megfelelő elsőt XmlNode választja ki.

Túlterhelések

Name Description
SelectSingleNode(String)

Az XPath kifejezésnek megfelelő elsőt XmlNode választja ki.

SelectSingleNode(String, XmlNamespaceManager)

Az XPath kifejezésnek megfelelő elsőt XmlNode választja ki. Az XPath-kifejezésben található előtagok feloldása a megadott XmlNamespaceManagerparanccsel történik.

Példák

Az alábbi példa az első könyvet adja vissza a megfelelő szerző nevével. Ez XmlNamespaceManager feloldja az XPath-kifejezés alapértelmezett névterét.

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

A példa a fájlt newbooks.xmlhasználja bemenetként.

<?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>

Megjegyzések

Az XPath-kifejezések tartalmazhatnak névtereket. A névtérfeloldás a XmlNamespaceManager. Ha az XPath-kifejezés tartalmaz egy előtagot, az előtagot és a névtér URI-párt hozzá kell adni a XmlNamespaceManager.

Note

Ha az XPath kifejezés nem tartalmaz előtagot, a névtér URI-ja az üres névtér. Ha az XML tartalmaz egy alapértelmezett névteret, akkor is hozzá kell adnia egy előtagot és egy névtér URI-t a XmlNamespaceManager; ellenkező esetben nem lesz kijelölve csomópont. További információ: Csomópontok kiválasztása XPath-navigációval.

SelectSingleNode(String)

Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs

Az XPath kifejezésnek megfelelő elsőt XmlNode választja ki.

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

Paraméterek

xpath
String

Az XPath kifejezés. Lásd az XPath-példákat.

Válaszok

Az első XmlNode , amely megfelel az XPath-lekérdezésnek, vagy null ha nem található egyező csomópont.

Kivételek

Az XPath kifejezés tartalmaz egy előtagot.

Példák

Az alábbi példa megváltoztatja az első Jane Austen könyv árát.

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

A példa a fájlt booksort.xmlhasználja bemenetként.


<?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>

Megjegyzések

Ha az XPath-kifejezés névtérfeloldást igényel, az SelectSingleNode argumentumként használt túlterhelést XmlNamespaceManager kell használnia. Ez XmlNamespaceManager a névterek feloldására szolgál.

Note

Ha az XPath kifejezés nem tartalmaz előtagot, a névtér URI-ja az üres névtér. Ha az XML tartalmaz egy alapértelmezett névteret, akkor is használnia kell az XmlNamespaceManager előtagot és a névtér URI-ját, ellenkező esetben nem kap kijelölt csomópontot. További információ: Csomópontok kiválasztása XPath-navigációval.

Note

Az XPath-kifejezések létrehozásakor gyakori probléma, hogy hogyan lehet egyetlen idézőjelet (') vagy dupla idézőjelet (") felvenni a kifejezésbe. Ha egyetlen idézőjelet tartalmazó értéket kell keresnie, a sztringet idézőjelek közé kell tenni. Ha kettős idézőjelet tartalmazó értéket kell keresnie, a sztringet egyetlen idézőjelbe kell helyeznie.

Tegyük fel például, hogy a következő XML-fájllal rendelkezik:

<bookstore>
  <book>
    <title>&apos;Emma&apos;</title>
  </book>
</bookstore>

A következő Visual Basic kód kiválaszt egy elemet, amely egyetlen idézőjelet tartalmaz:

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

Ez a metódus a Dokumentumobjektum-modell (DOM) Microsoft bővítménye.

Lásd még

A következőre érvényes:

SelectSingleNode(String, XmlNamespaceManager)

Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs

Az XPath kifejezésnek megfelelő elsőt XmlNode választja ki. Az XPath-kifejezésben található előtagok feloldása a megadott XmlNamespaceManagerparanccsel történik.

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

Paraméterek

xpath
String

Az XPath kifejezés. Lásd az XPath-példákat.

nsmgr
XmlNamespaceManager

Az XmlNamespaceManager XPath-kifejezés előtagjainak névtereinek feloldására használható.

Válaszok

Az első XmlNode , amely megfelel az XPath-lekérdezésnek, vagy null ha nem található egyező csomópont.

Kivételek

Az XPath kifejezés olyan előtagot tartalmaz, amely nincs definiálva a XmlNamespaceManager.

Példák

Az alábbi példa a megfelelő ISBN-értékkel rendelkező könyvet választja ki.

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

A példa a fájlt booksort.xmlhasználja bemenetként.


<?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>

Megjegyzések

Az XPath-kifejezések tartalmazhatnak névtereket. A névtérfeloldás a XmlNamespaceManager. Ha az XPath-kifejezés tartalmaz egy előtagot, az előtagot és a névtér URI-párt hozzá kell adni a XmlNamespaceManager.

Note

Ha az XPath kifejezés nem tartalmaz előtagot, a névtér URI-ja az üres névtér. Ha az XML tartalmaz egy alapértelmezett névteret, akkor is hozzá kell adnia egy előtagot és egy névtér URI-t a XmlNamespaceManager; ellenkező esetben nem lesz kijelölve egy csomópont. További információ: Csomópontok kiválasztása XPath-navigációval.

Ha például a következő XML-fájllal rendelkezett:

<bookstore xmlns="http://www.lucernepublishing.com">
 <book>
   <title>Pride And Prejudice</title>
 </book>
</bookstore>

A következő C#-kód választja ki az első könyvcsomópontot:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNode book = doc.SelectSingleNode("//ab:book", nsmgr);

Note

Az XPath-kifejezések létrehozásakor gyakori probléma, hogy hogyan lehet egyetlen idézőjelet (') vagy dupla idézőjelet (") felvenni a kifejezésbe. Ha egyetlen idézőjelet tartalmazó értéket kell keresnie, a sztringet idézőjelek közé kell tenni. Ha kettős idézőjelet tartalmazó értéket kell keresnie, a sztringet egyetlen idézőjelbe kell helyeznie.

Tegyük fel például, hogy a következő XML-fájllal rendelkezik:

<bookstore xmlns="http://www.lucernepublishing.com">
  <book>
    <title>&apos;Emma&apos;</title>
  </book>
</bookstore>

A következő Visual Basic kód kiválaszt egy elemet, amely egyetlen idézőjelet tartalmaz:

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)

Ez a metódus a Dokumentumobjektum-modell (DOM) Microsoft bővítménye.

Lásd még

A következőre érvényes: