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

Definizione

Seleziona il primo oggetto XmlNode che corrisponde all'espressione XPath.Selects the first XmlNode that matches the XPath expression.

Overload

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

Seleziona il primo oggetto XmlNode che corrisponde all'espressione XPath.Selects the first XmlNode that matches the XPath expression.

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

Seleziona il primo oggetto XmlNode che corrisponde all'espressione XPath.Selects the first XmlNode that matches the XPath expression. Qualsiasi prefisso trovato nell'espressione XPath viene risolto usando l'oggetto XmlNamespaceManager fornito.Any prefixes found in the XPath expression are resolved using the supplied XmlNamespaceManager.

Esempi

Nell'esempio seguente viene restituito il primo libro con il nome dell'autore corrispondente.The following example returns the first book with the matching author name. Il tipo XmlNamespaceManager consente di risolvere lo spazio dei nomi predefinito nell'espressione XPath.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

Nell'esempio viene usato il file newbooks.xml,, come input.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>

Commenti

Le espressioni XPath possono includere spazi dei nomi.XPath expressions can include namespaces. La risoluzione dello spazio dei nomi viene supportata usando il tipo XmlNamespaceManager.Namespace resolution is supported using the XmlNamespaceManager. Se l'espressione XPath include un prefisso, è necessario aggiungere la coppia prefisso e URI dello spazio dei XmlNamespaceManagernomi a.If the XPath expression includes a prefix, the prefix and namespace URI pair must be added to the XmlNamespaceManager.

Nota

Se l'espressione XPath non include un prefisso, si presuppone che l'URI dello spazio dei nomi sia lo spazio dei nomi vuoto.If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. Se l'XML include uno spazio dei nomi predefinito, è comunque necessario aggiungere un prefisso e un URI XmlNamespaceManagerdello spazio dei nomi a; in caso contrario, non sarà possibile ottenere i nodi selezionati.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. Per ulteriori informazioni, vedere Select Nodes Using XPath Navigation.For more information, see Select Nodes Using XPath Navigation.

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

Seleziona il primo oggetto XmlNode che corrisponde all'espressione XPath.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

Parametri

xpath
String String String String

Espressione XPath.The XPath expression. Vedere Esempi XPath.See XPath Examples.

Restituisce

Primo oggetto XmlNode che corrisponde alla query XPath o null se non viene trovato alcun nodo corrispondente.The first XmlNode that matches the XPath query or null if no matching node is found.

Eccezioni

Espressione XPath contenente un prefisso.The XPath expression contains a prefix.

Esempi

Nell'esempio seguente viene modificato il prezzo del primo libro di Jane Austen.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

Nell'esempio viene usato il file booksort.xml,, come input.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>

Commenti

Se l'espressione XPath richiede la risoluzione dello spazio dei nomi, SelectSingleNode è necessario usare l' XmlNamespaceManager overload che accetta come argomento.If the XPath expression requires namespace resolution, you must use the SelectSingleNode overload which takes an XmlNamespaceManager as its argument. Viene XmlNamespaceManager utilizzato per risolvere gli spazi dei nomi.The XmlNamespaceManager is used to resolve namespaces.

Nota

Se l'espressione XPath non include un prefisso, si presuppone che l'URI dello spazio dei nomi sia lo spazio dei nomi vuoto.If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. Se il codice XML include uno spazio dei nomi predefinito, è comunque XmlNamespaceManager necessario utilizzare e aggiungere un prefisso e un URI dello spazio dei nomi. in caso contrario, non verrà ottenuto alcun nodo selezionato.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. Per ulteriori informazioni, vedere Select Nodes Using XPath Navigation.For more information, see Select Nodes Using XPath Navigation.

Nota

Un problema comune quando si formulano espressioni XPath è come includere una virgoletta singola (') o virgolette doppie (") nell'espressione.A common issue when formulating XPath expressions is how to include a single quote (') or double quote (") in the expression. Se è necessario cercare un valore che includa una virgoletta singola, è necessario racchiudere la stringa tra virgolette doppie.If you have to search for a value that includes a single quote, you must enclose the string in double quotes. Se è necessario cercare un valore che includa virgolette doppie, è necessario racchiudere la stringa tra virgolette singole.If you need to search for a value that includes a double quote, you must enclose the string in single quotes.

Si supponga, ad esempio, di avere il codice XML seguente:For example, suppose you have the following XML:

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

Il codice di Visual Basic seguente consente di selezionare un elemento che contiene virgolette singole:The following Visual Basic code selects an element that contains single quotes:

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

Questo metodo è un'estensione Microsoft per il Document Object Model (DOM).This method is a Microsoft extension to the Document Object Model (DOM).

Vedi anche

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

Seleziona il primo oggetto XmlNode che corrisponde all'espressione XPath.Selects the first XmlNode that matches the XPath expression. Qualsiasi prefisso trovato nell'espressione XPath viene risolto usando l'oggetto XmlNamespaceManager fornito.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

Parametri

xpath
String String String String

Espressione XPath.The XPath expression. Vedere Esempi XPath.See XPath Examples.

nsmgr
XmlNamespaceManager XmlNamespaceManager XmlNamespaceManager XmlNamespaceManager

Oggetto XmlNamespaceManager da usare per risolvere gli spazi dei nomi per i prefissi nell'espressione XPath.An XmlNamespaceManager to use for resolving namespaces for prefixes in the XPath expression.

Restituisce

Primo oggetto XmlNode che corrisponde alla query XPath o null se non viene trovato alcun nodo corrispondente.The first XmlNode that matches the XPath query or null if no matching node is found.

Eccezioni

Espressione XPath contenente un prefisso che non è definito nell'XmlNamespaceManager.The XPath expression contains a prefix which is not defined in the XmlNamespaceManager.

Esempi

Nell'esempio seguente viene selezionato il libro con il valore ISBN corrispondente.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

Nell'esempio viene usato il file booksort.xml,, come input.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>

Commenti

Le espressioni XPath possono includere spazi dei nomi.XPath expressions can include namespaces. La risoluzione dello spazio dei nomi viene supportata usando il tipo XmlNamespaceManager.Namespace resolution is supported using the XmlNamespaceManager. Se l'espressione XPath include un prefisso, è necessario aggiungere la coppia prefisso e URI dello spazio dei XmlNamespaceManagernomi a.If the XPath expression includes a prefix, the prefix and namespace URI pair must be added to the XmlNamespaceManager.

Nota

Se l'espressione XPath non include un prefisso, si presuppone che l'URI dello spazio dei nomi sia lo spazio dei nomi vuoto.If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. Se l'XML include uno spazio dei nomi predefinito, è comunque necessario aggiungere un prefisso e un URI XmlNamespaceManagerdello spazio dei nomi a; in caso contrario, non sarà possibile ottenere un nodo selezionato.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. Per ulteriori informazioni, vedere Select Nodes Using XPath Navigation.For more information, see Select Nodes Using XPath Navigation.

Se ad esempio si dispone del codice XML seguente:For example, if you had the following XML:

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

Il codice C# seguente seleziona il primo nodo del libro: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);  

Nota

Un problema comune quando si formulano espressioni XPath è come includere una virgoletta singola (') o virgolette doppie (") nell'espressione.A common issue when formulating XPath expressions is how to include a single quote (') or double quote (") in the expression. Se è necessario cercare un valore che includa una virgoletta singola, è necessario racchiudere la stringa tra virgolette doppie.If you have to search for a value that includes a single quote, you must enclose the string in double quotes. Se è necessario cercare un valore che includa virgolette doppie, è necessario racchiudere la stringa tra virgolette singole.If you need to search for a value that includes a double quote, you must enclose the string in single quotes.

Si supponga, ad esempio, di avere il codice XML seguente:For example, suppose you have the following XML:

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

Il codice di Visual Basic seguente consente di selezionare un elemento che contiene virgolette singole: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)  

Questo metodo è un'estensione Microsoft per il Document Object Model (DOM).This method is a Microsoft extension to the Document Object Model (DOM).

Vedi anche

Si applica a