Partager via


XmlNode.SelectSingleNode Méthode

Définition

Sélectionne le premier XmlNode correspondant à l'expression XPath.

Surcharges

SelectSingleNode(String)

Sélectionne le premier XmlNode correspondant à l'expression XPath.

SelectSingleNode(String, XmlNamespaceManager)

Sélectionne le premier XmlNode correspondant à l'expression XPath. Tous les préfixes trouvés dans l'expression XPath sont résolus à l'aide du XmlNamespaceManager fourni.

Exemples

L’exemple suivant retourne le premier livre avec le nom d’auteur correspondant. L'objet XmlNamespaceManager résout l'espace de noms par défaut dans l'expression 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

L’exemple utilise le fichier , newbooks.xmlcomme entrée.

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

Remarques

Les expressions XPath peuvent inclure des espaces de noms. La résolution d'espace de noms n'est pas prise en charge par l'objet XmlNamespaceManager. Si l’expression XPath inclut un préfixe, le préfixe et la paire URI d’espace de noms doivent être ajoutés XmlNamespaceManagerau .

Notes

Si l’expression XPath n’inclut pas de préfixe, il est supposé que l’URI d’espace de noms est l’espace de noms vide. Si votre code XML inclut un espace de noms par défaut, vous devez toujours ajouter un préfixe et un URI d’espace de noms à ; XmlNamespaceManagersinon, vous n’obtiendrez aucun nœud sélectionné. Pour plus d’informations, consultez Sélectionner des nœuds à l’aide de la navigation XPath.

SelectSingleNode(String)

Source:
XmlNode.cs
Source:
XmlNode.cs
Source:
XmlNode.cs

Sélectionne le premier XmlNode correspondant à l'expression 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

Paramètres

xpath
String

Expression XPath. Consultez Exemples de XPath.

Retours

Premier XmlNode correspondant à la requête XPath ou null si aucun nœud correspondant n'est trouvé.

Exceptions

L'expression XPath contient un préfixe.

Exemples

L’exemple suivant modifie le prix du premier livre 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

L’exemple utilise le fichier , booksort.xmlcomme entrée.


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

Remarques

Si l’expression XPath nécessite une résolution d’espace de noms, vous devez utiliser la SelectSingleNode surcharge qui prend un XmlNamespaceManager comme argument. XmlNamespaceManager est utilisé pour résoudre les espaces de noms.

Notes

Si l’expression XPath n’inclut pas de préfixe, il est supposé que l’URI d’espace de noms est l’espace de noms vide. Si votre code XML inclut un espace de noms par défaut, vous devez toujours utiliser et XmlNamespaceManager y ajouter un préfixe et un URI d’espace de noms ; sinon, vous n’obtiendrez pas de nœud sélectionné. Pour plus d’informations, consultez Sélectionner des nœuds à l’aide de la navigation XPath.

Notes

Un problème courant lors de la formulation d’expressions XPath consiste à inclure un guillemet unique (') ou un guillemet double (") dans l’expression. Si vous devez rechercher une valeur qui inclut un seul guillemet, vous devez placer la chaîne entre guillemets doubles. Si vous devez rechercher une valeur qui inclut un guillemet double, vous devez placer la chaîne entre guillemets simples.

Par exemple, supposons que vous disposez du code XML suivant :

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

Le code Visual Basic suivant sélectionne un élément qui contient des guillemets uniques :

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

Cette méthode est une extension Microsoft du modèle DOM (Document Object Model).

Voir aussi

S’applique à

SelectSingleNode(String, XmlNamespaceManager)

Source:
XmlNode.cs
Source:
XmlNode.cs
Source:
XmlNode.cs

Sélectionne le premier XmlNode correspondant à l'expression XPath. Tous les préfixes trouvés dans l'expression XPath sont résolus à l'aide du XmlNamespaceManager fourni.

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ètres

xpath
String

Expression XPath. Consultez Exemples de XPath.

nsmgr
XmlNamespaceManager

XmlNamespaceManager à utiliser pour résoudre les espaces de noms des préfixes dans l'expression XPath.

Retours

Premier XmlNode correspondant à la requête XPath ou null si aucun nœud correspondant n'est trouvé.

Exceptions

L'expression XPath contient un préfixe qui n'est pas défini dans XmlNamespaceManager.

Exemples

L’exemple suivant sélectionne le livre avec la valeur ISBN correspondante.

#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

L’exemple utilise le fichier , booksort.xmlcomme entrée.


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

Remarques

Les expressions XPath peuvent inclure des espaces de noms. La résolution d'espace de noms n'est pas prise en charge par l'objet XmlNamespaceManager. Si l’expression XPath inclut un préfixe, le préfixe et la paire URI d’espace de noms doivent être ajoutés XmlNamespaceManagerau .

Notes

Si l’expression XPath n’inclut pas de préfixe, il est supposé que l’URI d’espace de noms est l’espace de noms vide. Si votre code XML inclut un espace de noms par défaut, vous devez toujours ajouter un préfixe et un URI d’espace de noms à ; XmlNamespaceManagersinon, vous n’obtiendrez pas de nœud sélectionné. Pour plus d’informations, consultez Sélectionner des nœuds à l’aide de la navigation XPath.

Par exemple, si vous aviez le code XML suivant :

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

Le code C# suivant sélectionne le premier nœud de livre :

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

Notes

Un problème courant lors de la formulation d’expressions XPath consiste à inclure un guillemet unique (') ou un guillemet double (") dans l’expression. Si vous devez rechercher une valeur qui inclut un seul guillemet, vous devez placer la chaîne entre guillemets doubles. Si vous devez rechercher une valeur qui inclut un guillemet double, vous devez placer la chaîne entre guillemets simples.

Par exemple, supposons que vous disposez du code XML suivant :

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

Le code Visual Basic suivant sélectionne un élément qui contient des guillemets uniques :

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)

Cette méthode est une extension Microsoft du modèle DOM (Document Object Model).

Voir aussi

S’applique à