XmlNode.SelectSingleNode XmlNode.SelectSingleNode XmlNode.SelectSingleNode XmlNode.SelectSingleNode Method

Definition

Wählt den ersten XmlNode aus, der mit dem XPath-Ausdruck übereinstimmt.Selects the first XmlNode that matches the XPath expression.

Überlädt

SelectSingleNode(String) SelectSingleNode(String) SelectSingleNode(String) SelectSingleNode(String)

Wählt den ersten XmlNode aus, der mit dem XPath-Ausdruck übereinstimmt.Selects the first XmlNode that matches the XPath expression.

SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager)

Wählt den ersten XmlNode aus, der mit dem XPath-Ausdruck übereinstimmt.Selects the first XmlNode that matches the XPath expression. Sämtliche im XPath-Ausdruck vorhandenen Präfixe werden mit dem angegebenen XmlNamespaceManager aufgelöst.Any prefixes found in the XPath expression are resolved using the supplied XmlNamespaceManager.

Beispiele

Im folgenden Beispiel wird das erste Buch mit dem passenden Autorennamen zurückgegeben.The following example returns the first book with the matching author name. XmlNamespaceManager löst den Standardnamespace im XPath-Ausdruck auf.The XmlNamespaceManager resolves the default namespace in the XPath expression.

#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

Im Beispiel wird die Datei newbooks.xml als Eingabe verwendet.The example uses the file, newbooks.xml, as input.

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

Hinweise

XPath-Ausdrücke können Namespaces enthalten.XPath expressions can include namespaces. Namespace-Auflösung wird mithilfe von XmlNamespaceManager unterstützt.Namespace resolution is supported using the XmlNamespaceManager. Wenn der XPath-Ausdruck ein Präfix enthält, müssen das Paar aus Präfix-und Namespace-URI dem XmlNamespaceManager hinzugefügt werden.If the XPath expression includes a prefix, the prefix and namespace URI pair must be added to the XmlNamespaceManager.

Hinweis

Wenn der XPath-Ausdruck kein Präfix enthält, wird davon ausgegangen, dass der Namespace-URI der leere Namespace ist.If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. Wenn Ihr XML-Code einen Standard Namespace enthält, müssen Sie dem XmlNamespaceManager; immer noch ein Präfix und einen Namespace-URI hinzufügen. Andernfalls werden keine Knoten ausgewählt.If your XML includes a default namespace, you must still add a prefix and namespace URI to the XmlNamespaceManager; otherwise, you will not get any nodes selected. Weitere Informationen finden Sie unter Auswählen von Knoten mithilfe der XPath-Navigation.For more information, see Select Nodes Using XPath Navigation.

SelectSingleNode(String) SelectSingleNode(String) SelectSingleNode(String) SelectSingleNode(String)

Wählt den ersten XmlNode aus, der mit dem XPath-Ausdruck übereinstimmt.Selects the first XmlNode that matches the XPath expression.

public:
 System::Xml::XmlNode ^ SelectSingleNode(System::String ^ xpath);
public System.Xml.XmlNode SelectSingleNode (string xpath);
member this.SelectSingleNode : string -> System.Xml.XmlNode
Public Function SelectSingleNode (xpath As String) As XmlNode

Parameter

xpath
String String String String

Der XPath-Ausdruck.The XPath expression. Siehe XPath-Beispiele.See XPath Examples.

Gibt zurück

Der erste XmlNode, der mit der XPath-Abfrage übereinstimmt, oder null, wenn kein übereinstimmender Knoten gefunden wurde.The first XmlNode that matches the XPath query or null if no matching node is found.

Ausnahmen

Der XPath-Ausdruck enthält ein Präfix.The XPath expression contains a prefix.

Beispiele

Im folgenden Beispiel wird der Preis des ersten Jane Austen-Buchs geändert.The following example changes the price of the first Jane Austen book.

#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

Im Beispiel wird die Datei booksort.xml als Eingabe verwendet.The example uses the file, booksort.xml, as input.


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

Hinweise

Wenn für den XPath-Ausdruck eine Namespace Auflösung erforderlich ist, müssen Sie die SelectSingleNode-Überladung verwenden, die eine XmlNamespaceManager als Argument annimmt.If the XPath expression requires namespace resolution, you must use the SelectSingleNode overload which takes an XmlNamespaceManager as its argument. Der XmlNamespaceManager wird zum Auflösen von Namespaces verwendet.The XmlNamespaceManager is used to resolve namespaces.

Hinweis

Wenn der XPath-Ausdruck kein Präfix enthält, wird davon ausgegangen, dass der Namespace-URI der leere Namespace ist.If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. Wenn Ihr XML-Code einen Standard Namespace enthält, müssen Sie den XmlNamespaceManager weiterhin verwenden und ihm ein Präfix und einen Namespace-URI hinzufügen. Andernfalls erhalten Sie keinen ausgewählten Knoten.If your XML includes a default namespace, you must still use the XmlNamespaceManager and add a prefix and namespace URI to it; otherwise, you will not get a selected node. Weitere Informationen finden Sie unter Auswählen von Knoten mithilfe der XPath-Navigation.For more information, see Select Nodes Using XPath Navigation.

Hinweis

Ein häufiges Problem beim Formulieren von XPath-Ausdrücken besteht darin, wie Sie ein einzelnes Anführungszeichen (') oder doppelte Anführungszeichen (") in den Ausdruck einschließen.A common issue when formulating XPath expressions is how to include a single quote (') or double quote (") in the expression. Wenn Sie nach einem Wert suchen müssen, der ein einzelnes Anführungszeichen enthält, müssen Sie die Zeichenfolge in doppelte Anführungszeichen einschließen.If you have to search for a value that includes a single quote, you must enclose the string in double quotes. Wenn Sie nach einem Wert suchen müssen, der ein doppeltes Anführungszeichen enthält, müssen Sie die Zeichenfolge in einfache Anführungszeichen einschließen.If you need to search for a value that includes a double quote, you must enclose the string in single quotes.

Nehmen Sie beispielsweise an, Sie verfügen über die folgenden XML-Daten:For example, suppose you have the following XML:

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

Der folgende Visual Basic Code wählt ein Element aus, das einfache Anführungszeichen enthält:The following Visual Basic code selects an element that contains single quotes:

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

Diese Methode ist eine Microsoft-Erweiterung für die Dokumentobjektmodell (DOM).This method is a Microsoft extension to the Document Object Model (DOM).

Siehe auch

SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager)

Wählt den ersten XmlNode aus, der mit dem XPath-Ausdruck übereinstimmt.Selects the first XmlNode that matches the XPath expression. Sämtliche im XPath-Ausdruck vorhandenen Präfixe werden mit dem angegebenen XmlNamespaceManager aufgelöst.Any prefixes found in the XPath expression are resolved using the supplied XmlNamespaceManager.

public:
 System::Xml::XmlNode ^ SelectSingleNode(System::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

Parameter

xpath
String String String String

Der XPath-Ausdruck.The XPath expression. Siehe XPath-Beispiele.See XPath Examples.

nsmgr
XmlNamespaceManager XmlNamespaceManager XmlNamespaceManager XmlNamespaceManager

Ein XmlNamespaceManager zum Auflösen von Namespaces für Präfixe im XPath-Ausdruck.An XmlNamespaceManager to use for resolving namespaces for prefixes in the XPath expression.

Gibt zurück

Der erste XmlNode, der mit der XPath-Abfrage übereinstimmt, oder null, wenn kein übereinstimmender Knoten gefunden wurde.The first XmlNode that matches the XPath query or null if no matching node is found.

Ausnahmen

Der XPath-Ausdruck enthält ein Präfix, das im XmlNamespaceManager nicht definiert ist.The XPath expression contains a prefix which is not defined in the XmlNamespaceManager.

Beispiele

Im folgenden Beispiel wird das Buch mit dem entsprechenden ISBN-Wert ausgewählt.The following example selects the book with the matching ISBN value.

#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

Im Beispiel wird die Datei booksort.xml als Eingabe verwendet.The example uses the file, booksort.xml, as input.


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

Hinweise

XPath-Ausdrücke können Namespaces enthalten.XPath expressions can include namespaces. Namespace-Auflösung wird mithilfe von XmlNamespaceManager unterstützt.Namespace resolution is supported using the XmlNamespaceManager. Wenn der XPath-Ausdruck ein Präfix enthält, müssen das Paar aus Präfix-und Namespace-URI dem XmlNamespaceManager hinzugefügt werden.If the XPath expression includes a prefix, the prefix and namespace URI pair must be added to the XmlNamespaceManager.

Hinweis

Wenn der XPath-Ausdruck kein Präfix enthält, wird davon ausgegangen, dass der Namespace-URI der leere Namespace ist.If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. Wenn Ihr XML-Code einen Standard Namespace enthält, müssen Sie dem XmlNamespaceManager; immer noch ein Präfix und einen Namespace-URI hinzufügen. Andernfalls wird kein Knoten ausgewählt.If your XML includes a default namespace, you must still add a prefix and namespace URI to the XmlNamespaceManager; otherwise, you will not get a node selected. Weitere Informationen finden Sie unter Auswählen von Knoten mithilfe der XPath-Navigation.For more information, see Select Nodes Using XPath Navigation.

Wenn Sie z. b. den folgenden XML-Code haben:For example, if you had the following XML:

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

Der folgende C# Code wählt den ersten Buch Knoten aus:The following C# code selects the first book node:

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

Hinweis

Ein häufiges Problem beim Formulieren von XPath-Ausdrücken besteht darin, wie Sie ein einzelnes Anführungszeichen (') oder doppelte Anführungszeichen (") in den Ausdruck einschließen.A common issue when formulating XPath expressions is how to include a single quote (') or double quote (") in the expression. Wenn Sie nach einem Wert suchen müssen, der ein einzelnes Anführungszeichen enthält, müssen Sie die Zeichenfolge in doppelte Anführungszeichen einschließen.If you have to search for a value that includes a single quote, you must enclose the string in double quotes. Wenn Sie nach einem Wert suchen müssen, der ein doppeltes Anführungszeichen enthält, müssen Sie die Zeichenfolge in einfache Anführungszeichen einschließen.If you need to search for a value that includes a double quote, you must enclose the string in single quotes.

Nehmen Sie beispielsweise an, Sie verfügen über die folgenden XML-Daten:For example, suppose you have the following XML:

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

Der folgende Visual Basic Code wählt ein Element aus, das einfache Anführungszeichen enthält:The following Visual Basic code selects an element that contains single quotes:

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)  

Diese Methode ist eine Microsoft-Erweiterung für die Dokumentobjektmodell (DOM).This method is a Microsoft extension to the Document Object Model (DOM).

Siehe auch

Gilt für: