XmlNode.SelectNodes Méthode

Définition

Sélectionne une liste de nœuds correspondant à l'expression XPath.

Surcharges

SelectNodes(String)

Sélectionne une liste de nœuds correspondant à l'expression XPath.

SelectNodes(String, XmlNamespaceManager)

Sélectionne une liste de nœuds correspondant à l'expression XPath. Tous les préfixes trouvés dans l'expression XPath sont résolus à l'aide du XmlNamespaceManager fourni.

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 au XmlNamespaceManagerfichier .

Notes

Si l’expression XPath n’inclut pas de préfixe, il est supposé que l’URI de l’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 à l’objet XmlNamespaceManager; sinon, vous n’obtiendrez aucun nœud sélectionné.

Pour plus d’informations, consultez Sélectionner des nœuds à l’aide de la navigation XPath. Pour obtenir des exemples de code, choisissez une surcharge dans la liste des surcharges de la section précédente.

SelectNodes(String)

Sélectionne une liste de nœuds correspondant à l'expression XPath.

public:
 System::Xml::XmlNodeList ^ SelectNodes(System::String ^ xpath);
public System.Xml.XmlNodeList? SelectNodes (string xpath);
public System.Xml.XmlNodeList SelectNodes (string xpath);
member this.SelectNodes : string -> System.Xml.XmlNodeList
Public Function SelectNodes (xpath As String) As XmlNodeList

Paramètres

xpath
String

Expression XPath.

Retours

XmlNodeList

XmlNodeList contenant une collection de nœuds correspondant à la requête XPath.

Exceptions

L'expression XPath contient un préfixe. Consultez Exemples de XPath.

Exemples

L’exemple suivant sélectionne tous les livres où le nom de l’auteur est Austen, puis modifie le prix de ces livres.

#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" );
   XmlNodeList^ nodeList;
   XmlNode^ root = doc->DocumentElement;
   nodeList = root->SelectNodes( "descendant::book[author/last-name='Austen']" );
   
   //Change the price on the books.
   System::Collections::IEnumerator^ myEnum = nodeList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      XmlNode^ book = safe_cast<XmlNode^>(myEnum->Current);
      book->LastChild->InnerText = "15.95";
   }

   Console::WriteLine( "Display the modified XML document...." );
   doc->Save( Console::Out );
}
using System;
using System.Xml;

public class Sample6
{
    public static void Main()
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("booksort.xml");

        XmlNodeList nodeList;
        XmlNode root = doc.DocumentElement;

        nodeList = root.SelectNodes("descendant::book[author/last-name='Austen']");

        //Change the price on the books.
        foreach (XmlNode book in nodeList)
        {
            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 nodeList as XmlNodeList 
    Dim root as XmlNode = doc.DocumentElement

    nodeList=root.SelectNodes("descendant::book[author/last-name='Austen']")
 
    'Change the price on the books.
    for each book in nodeList      
      book.LastChild.InnerText="15.95"
    next 

    Console.WriteLine("Display the modified XML document....")
    doc.Save(Console.Out)
    
  end sub
end class

Cet exemple utilise le code XML suivant :


<?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 SelectNodes surcharge qui prend un XmlNamespaceManager argument comme argument. Utilisé XmlNamespaceManager pour résoudre les espaces de noms.

Notes

Si l’expression XPath n’inclut pas de préfixe, il est supposé que l’URI de l’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 aucun 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 simulation d’expressions XPath consiste à inclure un guillemet unique (') ou un guillemet double (« ) dans l’expression. Si vous devez rechercher une valeur qui inclut un guillemet unique, 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 disposiez 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 simples :

nodeList = root.SelectNodes("//book[contains(title,""'Emma'"")]")  

Cette méthode est une extension Microsoft au dom (Document Object Model).

L’objet XmlNodeList retourné par cette méthode sera valide alors que le document sous-jacent reste inchangé. Si le document sous-jacent change, des résultats inattendus peuvent être retournés (aucune exception n’est levée).

Voir aussi

S’applique à

SelectNodes(String, XmlNamespaceManager)

Sélectionne une liste de nœuds 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::XmlNodeList ^ SelectNodes(System::String ^ xpath, System::Xml::XmlNamespaceManager ^ nsmgr);
public System.Xml.XmlNodeList? SelectNodes (string xpath, System.Xml.XmlNamespaceManager nsmgr);
public System.Xml.XmlNodeList SelectNodes (string xpath, System.Xml.XmlNamespaceManager nsmgr);
member this.SelectNodes : string * System.Xml.XmlNamespaceManager -> System.Xml.XmlNodeList
Public Function SelectNodes (xpath As String, nsmgr As XmlNamespaceManager) As XmlNodeList

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

XmlNodeList

XmlNodeList contenant une collection de nœuds correspondant à la requête XPath.

Exceptions

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

Exemples

L’exemple suivant affiche les valeurs de chacun des attributs ISBN. Cet exemple utilise un XmlElement objet qui hérite de la XmlNode classe.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Collections;
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 and display the value of all the ISBN attributes.
   XmlNodeList^ nodeList;
   XmlElement^ root = doc->DocumentElement;
   nodeList = root->SelectNodes( "/bookstore/book/@bk:ISBN", nsmgr );
   IEnumerator^ myEnum = nodeList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      XmlNode^ isbn = safe_cast<XmlNode^>(myEnum->Current);
      Console::WriteLine( isbn->Value );
   }
}
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 and display the value of all the ISBN attributes.
      XmlNodeList nodeList;
      XmlElement root = doc.DocumentElement;
      nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr);
      foreach (XmlNode isbn in nodeList){
        Console.WriteLine(isbn.Value);
      }
   }
}
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 and display the value of all the ISBN attributes.
      Dim nodeList as XmlNodeList 
      Dim root as XmlElement = doc.DocumentElement
      nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr)
      Dim isbn as XmlNode
      for each isbn in nodeList
        Console.WriteLine(isbn.Value)
      next

  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 au XmlNamespaceManagerfichier .

Notes

Si l’expression XPath n’inclut pas de préfixe, il est supposé que l’URI de l’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 à l’objet XmlNamespaceManager; sinon, vous n’obtiendrez aucun nœud sélectionné. Pour plus d’informations, consultez Sélectionner des nœuds à l’aide de la navigation XPath.

Par exemple, si vous avez le code XML suivant :

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

Le code C# suivant sélectionne tous les nœuds de livre :

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

Notes

Un problème courant lors de la simulation d’expressions XPath consiste à inclure un guillemet unique (') ou un guillemet double (« ) dans l’expression. Si vous devez rechercher une valeur qui inclut un guillemet unique, 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 disposiez 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 simples :

Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)  
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com")  
nodeList = root.SelectNodes("//ab:book[contains(ab:title,""'Emma'"")]", nsmgr)  

Cette méthode est une extension Microsoft au dom (Document Object Model).

L’objet XmlNodeList retourné par cette méthode sera valide alors que le document sous-jacent reste inchangé. Si le document sous-jacent change, des résultats inattendus peuvent être retournés (aucune exception n’est levée).

Voir aussi

S’applique à