XmlNode.SelectNodes XmlNode.SelectNodes XmlNode.SelectNodes XmlNode.SelectNodes Method

Definizione

Seleziona un elenco di nodi che corrispondono all'espressione XPath.Selects a list of nodes matching the XPath expression.

Overload

SelectNodes(String) SelectNodes(String) SelectNodes(String) SelectNodes(String)

Seleziona un elenco di nodi che corrispondono all'espressione XPath.Selects a list of nodes matching the XPath expression.

SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager)

Seleziona un elenco di nodi che corrispondono all'espressione XPath.Selects a list of nodes matching 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.

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. Per esempi di codice, scegliere un overload dall'elenco di overload nella sezione precedente.For code examples, choose an overload from the overload list in the previous section.

SelectNodes(String) SelectNodes(String) SelectNodes(String) SelectNodes(String)

Seleziona un elenco di nodi che corrispondono all'espressione XPath.Selects a list of nodes matching the XPath expression.

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

Parametri

xpath
String String String String

Espressione XPath.The XPath expression.

Restituisce

Oggetto XmlNodeList contenente una raccolta di nodi corrispondenti alla query XPath.An XmlNodeList containing a collection of nodes matching the XPath query.

Eccezioni

Espressione XPath contenente un prefisso.The XPath expression contains a prefix. Vedere Esempi XPath.See XPath Examples.

Esempi

Nell'esempio seguente vengono selezionati tutti i libri in cui il cognome dell'autore è Austen, quindi viene modificato il prezzo di tali libri.The following example selects all books where the author's last name is Austen, and then changes the price of those books.

#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.IO;
using System.Xml;

public class Sample {

  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

In questo esempio viene utilizzato il codice XML seguente:This example uses the following XML:


<?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, SelectNodes è necessario usare l' XmlNamespaceManager overload che accetta come argomento.If the XPath expression requires namespace resolution, you must use the SelectNodes 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 l'XML include uno spazio dei nomi predefinito, è comunque necessario XmlNamespaceManager usare e aggiungere un prefisso e un URI dello spazio dei nomi. in caso contrario, non si otterranno nodi selezionati.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 any nodes selected. 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:

nodeList = root.SelectNodes("//book[contains(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).

L' XmlNodeList oggetto restituito da questo metodo sarà valido mentre il documento sottostante rimane invariato.The XmlNodeList object returned by this method will be valid while the underlying document remains unchanged. Se il documento sottostante viene modificato, è possibile che vengano restituiti risultati imprevisti. non verrà generata alcuna eccezione.If the underlying document changes, unexpected results may be returned (no exception will be thrown).

Vedi anche

SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager)

Seleziona un elenco di nodi che corrispondono all'espressione XPath.Selects a list of nodes matching 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::XmlNodeList ^ SelectNodes(System::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

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

Oggetto XmlNodeList contenente una raccolta di nodi corrispondenti alla query XPath.An XmlNodeList containing a collection of nodes matching the XPath query.

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 vengono visualizzati i valori di ciascuno degli attributi ISBN.The following example displays the values of each of the ISBN attributes. Questo esempio usa un XmlElement oggetto che eredita XmlNode dalla classe.This example uses an XmlElement object, which inherits from the XmlNode class.

#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

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

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 tutti i nodi Book:The following C# code selects all book nodes:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);  
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");  
XmlNodeList nodelist = doc.SelectNodes("//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")  
nodeList = root.SelectNodes("//ab:book[contains(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).

L' XmlNodeList oggetto restituito da questo metodo sarà valido mentre il documento sottostante rimane invariato.The XmlNodeList object returned by this method will be valid while the underlying document remains unchanged. Se il documento sottostante viene modificato, è possibile che vengano restituiti risultati imprevisti. non verrà generata alcuna eccezione.If the underlying document changes, unexpected results may be returned (no exception will be thrown).

Vedi anche

Si applica a