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.SelectSingleNode (String, XmlNamespaceManager)

 

Data di pubblicazione: ottobre 2016

Seleziona il primo oggetto XmlNode che corrisponde 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 XmlNode SelectSingleNode(
	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.XmlNode

Primo oggetto XmlNode che corrisponde alla query XPath o null se non viene trovato alcun nodo corrispondente.

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 un nodo selezionato. 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 il primo nodo libro:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNode book = doc.SelectSingleNode("//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")
book = root.SelectSingleNode("descendant::ab:book[ab:title=""'Emma'""]", nsmgr)

Questo metodo è un'estensione Microsoft per il provider di servizi Internet (DOM, Document Object Model).

Nell'esempio seguente viene selezionato il libro con il valore ISBN corrispondente.

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);

  }
}

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: