Extensions.CreateNavigator Metodo

Definizione

Crea un oggetto XPathNavigator per XNode.

Overload

CreateNavigator(XNode)

Crea un oggetto XPathNavigator per XNode.

CreateNavigator(XNode, XmlNameTable)

Crea un oggetto XPathNavigator per XNode. XmlNameTable attiva un'elaborazione più efficiente delle espressioni XPath.

Commenti

Non è possibile modificare l'albero XML utilizzando l'oggetto XPathNavigator restituito da questo metodo. La proprietà CanEdit restituisce false.

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

Le dichiarazioni dello spazio dei nomi 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 di dati XPath.

Il metodo MoveToId non è supportato per gli strumenti di navigazione restituiti da questo metodo.

È possibile utilizzare questo metodo per eseguire una trasformazione XSLT. È possibile creare un albero XML, creare un XPathNavigator oggetto dall'albero XML, creare un nuovo documento e creare un XmlWriter oggetto che scriverà nel nuovo documento. Quindi, è possibile richiamare la trasformazione XSLT, passando 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 usare un XmlReader oggetto o .XPathNavigator I due approcci hanno caratteristiche di prestazioni diverse. Alcune trasformazioni verranno eseguite più velocemente quando si usa un oggetto XmlReadere altre verranno eseguite più velocemente quando si usa un oggetto XPathNavigator. Se le prestazioni sono un problema, è consigliabile sperimentare ogni approccio per determinare quali prestazioni miglioreranno nelle circostanze.

CreateNavigator(XNode)

Crea un oggetto XPathNavigator per XNode.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Xml::XPath::XPathNavigator ^ CreateNavigator(System::Xml::Linq::XNode ^ node);
public static System.Xml.XPath.XPathNavigator CreateNavigator (this System.Xml.Linq.XNode node);
static member CreateNavigator : System.Xml.Linq.XNode -> System.Xml.XPath.XPathNavigator
<Extension()>
Public Function CreateNavigator (node As XNode) As XPathNavigator

Parametri

node
XNode

Oggetto XNode in grado di elaborare query XPath.

Restituisce

XPathNavigator

Oggetto XPathNavigator in grado di elaborare query XPath.

Esempio

using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
using System.Xml.Xsl;

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(
    new XElement("Parent",
        new XElement("Child1", "Child1 data"),
        new XElement("Child2", "Child2 data")
    )
);

XDocument newTree = new();
using (XmlWriter writer = newTree.CreateWriter())
{
    // Load the style sheet.  
    XslCompiledTransform xslt = new();
    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);
Dim xslMarkup As XDocument = _  
    <?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>  

Dim xmlTree As XDocument = _  
    <?xml version='1.0'?>  
    <Parent>  
        <Child1>Child1 data</Child1>  
        <Child2>Child2 data</Child2>  
    </Parent>  

Dim newTree As XDocument = New XDocument()  

Using writer As XmlWriter = newTree.CreateWriter()  
    ' Load the style sheet.  
    Dim xslt As XslCompiledTransform = _  
        New XslCompiledTransform()  
    xslt.Load(xslMarkup.CreateReader())  

    ' Execute the transform and output the results to a writer.  
    xslt.Transform(xmlTree.CreateNavigator(), writer)  
End Using  

Console.WriteLine(newTree)  

Nell'esempio viene prodotto l'output seguente:

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

Commenti

Non è possibile modificare l'albero XML utilizzando l'oggetto XPathNavigator restituito da questo metodo. La proprietà CanEdit restituisce false.

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

Le dichiarazioni dello spazio dei nomi 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 di dati XPath.

Il metodo MoveToId non è supportato per gli strumenti di navigazione restituiti da questo metodo.

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

Per eseguire una trasformazione XSLT, è possibile usare un XmlReader oggetto o .XPathNavigator I due approcci hanno caratteristiche di prestazioni diverse. Alcune trasformazioni verranno eseguite più velocemente quando si usa un oggetto XmlReadere altre verranno eseguite più velocemente quando si usa un oggetto XPathNavigator. Se le prestazioni sono un problema, è consigliabile sperimentare ogni approccio per determinare quali prestazioni miglioreranno nelle circostanze.

Si applica a

CreateNavigator(XNode, XmlNameTable)

Crea un oggetto XPathNavigator per XNode. XmlNameTable attiva un'elaborazione più efficiente delle espressioni XPath.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Xml::XPath::XPathNavigator ^ CreateNavigator(System::Xml::Linq::XNode ^ node, System::Xml::XmlNameTable ^ nameTable);
public static System.Xml.XPath.XPathNavigator CreateNavigator (this System.Xml.Linq.XNode node, System.Xml.XmlNameTable? nameTable);
public static System.Xml.XPath.XPathNavigator CreateNavigator (this System.Xml.Linq.XNode node, System.Xml.XmlNameTable nameTable);
static member CreateNavigator : System.Xml.Linq.XNode * System.Xml.XmlNameTable -> System.Xml.XPath.XPathNavigator
<Extension()>
Public Function CreateNavigator (node As XNode, nameTable As XmlNameTable) As XPathNavigator

Parametri

node
XNode

XNode in grado di elaborare una query XPath.

nameTable
XmlNameTable

Oggetto XmlNameTable da utilizzare con XPathNavigator.

Restituisce

XPathNavigator

Oggetto XPathNavigator in grado di elaborare query XPath.

Commenti

Non è possibile modificare l'albero XML utilizzando l'oggetto XPathNavigator restituito da questo metodo. La proprietà CanEdit restituisce false.

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

Le dichiarazioni dello spazio dei nomi 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 di dati XPath.

Il metodo MoveToId non è supportato per gli strumenti di navigazione restituiti da questo metodo.

Se si usa un XmlNameTable oggetto con questo metodo per creare XPathNavigator, si otterranno prestazioni migliori durante la valutazione delle espressioni XPath.

Si applica a