XmlNode.SelectNodes Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Seleziona un elenco di nodi corrispondenti all'espressione XPath.
Overload
| Nome | Descrizione |
|---|---|
| SelectNodes(String) |
Seleziona un elenco di nodi corrispondenti all'espressione XPath. |
| SelectNodes(String, XmlNamespaceManager) |
Seleziona un elenco di nodi corrispondenti all'espressione XPath. Tutti i prefissi trovati nell'espressione XPath vengono risolti usando l'oggetto fornito XmlNamespaceManager. |
Commenti
Le espressioni XPath possono includere spazi dei nomi. La risoluzione dello spazio dei nomi è supportata tramite .XmlNamespaceManager Se l'espressione XPath include un prefisso, il prefisso e la coppia URI dello spazio dei nomi devono essere aggiunti a XmlNamespaceManager.
Annotazioni
Se l'espressione XPath non include un prefisso, si presuppone che l'URI dello spazio dei nomi sia lo spazio dei nomi vuoto. Se il codice XML include uno spazio dei nomi predefinito, è comunque necessario aggiungere un prefisso e un URI dello spazio dei nomi a XmlNamespaceManager. In caso contrario, non verranno selezionati nodi.
Per ulteriori informazioni, vedere Seleziona nodi utilizzando la navigazione XPath. Per esempi di codice, scegliere un overload dall'elenco di overload nella sezione precedente.
SelectNodes(String)
- Origine:
- XmlNode.cs
- Origine:
- XmlNode.cs
- Origine:
- XmlNode.cs
- Origine:
- XmlNode.cs
- Origine:
- XmlNode.cs
Seleziona un elenco di nodi corrispondenti all'espressione 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
Parametri
- xpath
- String
Espressione XPath.
Valori restituiti
Oggetto XmlNodeList contenente una raccolta di nodi corrispondenti alla query XPath.
Eccezioni
L'espressione XPath contiene un prefisso.
Esempio
Nell'esempio seguente vengono selezionati tutti i libri in cui il cognome dell'autore è Austen e quindi viene modificato il prezzo di tali libri.
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
In questo esempio viene utilizzato il codice XML seguente:
<?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, è necessario usare l'overload SelectNodes che accetta come XmlNamespaceManager argomento . Viene XmlNamespaceManager utilizzato per risolvere gli spazi dei nomi.
Annotazioni
Se l'espressione XPath non include un prefisso, si presuppone che l'URI dello spazio dei nomi sia lo spazio dei nomi vuoto. Se il codice XML include uno spazio dei nomi predefinito, è comunque necessario usare XmlNamespaceManager e aggiungere un prefisso e un URI dello spazio dei nomi. In caso contrario, non verranno selezionati nodi. Per ulteriori informazioni, vedere Seleziona nodi utilizzando la navigazione XPath.
Annotazioni
Un problema comune quando si formulano espressioni XPath è come includere una virgoletta singola (') o virgolette doppie (") nell'espressione. Se è necessario cercare un valore che include una virgoletta singola, è necessario racchiudere la stringa tra virgolette doppie. Se è necessario cercare un valore che include una virgoletta doppia, è necessario racchiudere la stringa tra virgolette singole.
Si supponga, ad esempio, di avere il codice XML seguente:
<bookstore>
<book>
<title>'Emma'</title>
</book>
</bookstore>
Il codice di Visual Basic seguente seleziona un elemento che contiene virgolette singole:
nodeList = root.SelectNodes("//book[contains(title,""'Emma'"")]")
Questo metodo è un'estensione Microsoft al dom (Document Object Model).
L'oggetto XmlNodeList restituito da questo metodo sarà valido mentre il documento sottostante rimane invariato. Se il documento sottostante cambia, è possibile che vengano restituiti risultati imprevisti (non verrà generata alcuna eccezione).
Vedi anche
- SelectSingleNode(String)
- Selezioni XPath e funzioni personalizzate e altro ancora
- Raccomandazione W3C XPath 1.0
Si applica a
SelectNodes(String, XmlNamespaceManager)
- Origine:
- XmlNode.cs
- Origine:
- XmlNode.cs
- Origine:
- XmlNode.cs
- Origine:
- XmlNode.cs
- Origine:
- XmlNode.cs
Seleziona un elenco di nodi corrispondenti all'espressione XPath. Tutti i prefissi trovati nell'espressione XPath vengono risolti usando l'oggetto fornito XmlNamespaceManager.
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
Parametri
- xpath
- String
Espressione XPath.
- nsmgr
- XmlNamespaceManager
Oggetto XmlNamespaceManager da utilizzare per la risoluzione degli spazi dei nomi per i prefissi nell'espressione XPath.
Valori restituiti
Oggetto XmlNodeList contenente una raccolta di nodi corrispondenti alla query XPath.
Eccezioni
L'espressione XPath contiene un prefisso non definito in XmlNamespaceManager.
Esempio
Nell'esempio seguente vengono visualizzati i valori di ognuno degli attributi ISBN. In questo esempio viene utilizzato un XmlElement oggetto che eredita dalla XmlNode classe .
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.
<?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. La risoluzione dello spazio dei nomi è supportata tramite .XmlNamespaceManager Se l'espressione XPath include un prefisso, il prefisso e la coppia URI dello spazio dei nomi devono essere aggiunti a XmlNamespaceManager.
Annotazioni
Se l'espressione XPath non include un prefisso, si presuppone che l'URI dello spazio dei nomi sia lo spazio dei nomi vuoto. Se il codice XML include uno spazio dei nomi predefinito, è comunque necessario aggiungere un prefisso e un URI dello spazio dei nomi a XmlNamespaceManager. In caso contrario, non verranno selezionati nodi. Per ulteriori informazioni, vedere Seleziona nodi utilizzando la navigazione XPath.
Ad esempio, se si dispone del codice XML seguente:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>Pride And Prejudice</title>
</book>
</bookstore>
Il codice C# seguente seleziona tutti i nodi libro:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNodeList nodelist = doc.SelectNodes("//ab:book", nsmgr);
Annotazioni
Un problema comune quando si formulano espressioni XPath è come includere una virgoletta singola (') o virgolette doppie (") nell'espressione. Se è necessario cercare un valore che include una virgoletta singola, è necessario racchiudere la stringa tra virgolette doppie. Se è necessario cercare un valore che include una virgoletta doppia, è necessario racchiudere la stringa tra virgolette singole.
Si supponga, ad esempio, di avere il codice XML seguente:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>'Emma'</title>
</book>
</bookstore>
Il codice di Visual Basic seguente seleziona un elemento che contiene virgolette singole:
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 al dom (Document Object Model).
L'oggetto XmlNodeList restituito da questo metodo sarà valido mentre il documento sottostante rimane invariato. Se il documento sottostante cambia, è possibile che vengano restituiti risultati imprevisti (non verrà generata alcuna eccezione).