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 Extensions.CreateNavigator (XNode)

 

Crea un XPathNavigator per un XNode.

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

public static XPathNavigator CreateNavigator(
	this XNode node
)

Parametri

node
Type: System.Xml.Linq.XNode

Un XNode in grado di elaborare query XPath.

Valore restituito

Type: System.Xml.XPath.XPathNavigator

Un XPathNavigator in grado di elaborare query XPath.

Non è possibile modificare la struttura ad albero XML usando il XPathNavigator restituito da questo metodo. Il CanEdit restituisce proprietà false.

Non è possibile creare un XPathNavigator per un XDocumentType nodo. Tipi di documento non fanno parte del modello di dati XPath.

Le dichiarazioni di Namespace vengono segnalate da sinistra a destra. Al contrario, per XmlDocument gli spazi dei nomi vengono segnalati da destra a sinistra. Questo comportamento è conforme perché le dichiarazioni dello spazio dei nomi non sono ordinate nel modello dati XPath.

Il metodo MoveToId non è supportata per gli strumenti di spostamento che vengono restituiti da questo metodo.

È possibile utilizzare questo metodo per eseguire una trasformazione XSLT. È possibile creare un albero XML, creare un XPathNavigator dall'albero XML, creare un nuovo documento e creare un XmlWriter che scriverà nel documento nuovo. Quindi, è possibile richiamare la trasformazione XSLT, passando il XPathNavigator e XmlWriter alla trasformazione. Dopo il completamento della trasformazione, il nuovo albero XML viene popolato con i relativi risultati.

Per eseguire una trasformazione XSLT, è possibile utilizzare un XmlReader o XPathNavigator. I due approcci hanno le caratteristiche di prestazioni diverse. Alcune trasformazioni verranno eseguite più velocemente quando si utilizza un XmlReader, mentre altre verranno eseguite più velocemente quando si utilizza un XPathNavigator. Se le prestazioni rappresentano un problema, è consigliabile sperimentare ogni approccio per determinare quale funziona meglio in base alle circostanze.


                string xslMarkup = @"<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
    <xsl:template match='/Parent'>
        <Root>
            <C1><xsl:value-of select='Child1'/></C1>
            <C2><xsl:value-of select='Child2'/></C2>
        </Root>
    </xsl:template>
</xsl:stylesheet>";

XDocument xmlTree = new XDocument(
    new XElement("Parent",
        new XElement("Child1", "Child1 data"),
        new XElement("Child2", "Child2 data")
    )
);

XDocument newTree = new XDocument();
using (XmlWriter writer = newTree.CreateWriter()) {
    // Load the style sheet.
    XslCompiledTransform xslt = new XslCompiledTransform();
    xslt.Load(XmlReader.Create(new StringReader(xslMarkup)));

    // Execute the transform and output the results to a writer.
    xslt.Transform(xmlTree.CreateNavigator(), writer);
}

Console.WriteLine(newTree);

Questo esempio produce il seguente output:


                <Root>
  <C1>Child1 data</C1>
  <C2>Child2 data</C2>
</Root>

.NET Framework
Disponibile da 3.5
Silverlight
Disponibile da 4.0
Torna all'inizio
Mostra: