Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo XmlNode.SelectNodes (String, XmlNamespaceManager)

 

Data di pubblicazione: ottobre 2016

Seleziona un elenco di nodi che corrispondono all'espressione XPath. Qualsiasi prefisso trovato nell'espressione XPath viene risolto usando l'oggetto XmlNamespaceManager fornito.

Spazio dei nomi:   System.Xml
Assembly:  System.Xml (in System.Xml.dll)

public XmlNodeList SelectNodes(
	string xpath,
	XmlNamespaceManager nsmgr
)

Parametri

xpath
Type: System.String

Espressione XPath. Vedere Esempi XPath.

nsmgr
Type: System.Xml.XmlNamespaceManager

Oggetto XmlNamespaceManager da usare per risolvere gli spazi dei nomi per i prefissi nell'espressione XPath.

Valore restituito

Type: System.Xml.XmlNodeList

Oggetto XmlNodeList contenente una raccolta di nodi corrispondenti alla query XPath.

Exception Condition
XPathException

L'espressione XPath contiene un prefisso di cui non è definito nel XmlNamespaceManager.

Le espressioni XPath possono includere spazi dei nomi. La risoluzione dello spazio dei nomi viene supportata usando il tipo XmlNamespaceManager. Se l'espressione XPath include un prefisso, è necessario aggiungere la coppia prefisso e spazio dei nomi URI per il XmlNamespaceManager.

System_CAPS_noteNota

Se l'espressione XPath non include un prefisso, si presuppone che l'URI dello spazio dei nomi è lo spazio dei nomi vuoto. Se il XML include uno spazio dei nomi predefinito, sarà necessario aggiungere un prefisso e URI dello spazio dei nomi per il XmlNamespaceManager; in caso contrario, non sarà possibile ottenere tutti i nodi selezionati. Per altre informazioni, vedere Selezione di nodi utilizzando la navigazione XPath.

Ad esempio, se il 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);
System_CAPS_noteNota

Un problema comune per la formulazione di espressioni XPath viene illustrato 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 si desidera cercare un valore che include una virgoletta doppia, è necessario racchiudere la stringa tra virgolette.

Ad esempio, si supponga di che avere il seguente codice XML:

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

Il seguente codice di Visual Basic 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 per il provider di servizi Internet (DOM, Document Object Model).

Il XmlNodeList oggetto restituito da questo metodo sarà valido mentre il documento sottostante rimane invariato. Se il documento sottostante cambia, possono essere restituiti risultati imprevisti (verrà generata alcuna eccezione).

L'esempio seguente mostra i valori di ognuno degli attributi ISBN. Questo esempio viene utilizzato un XmlElement oggetto, che eredita la 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);
      }

   }

}

Nell'esempio viene utilizzato 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>

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: