Extensions.CreateNavigator Extensions.CreateNavigator Extensions.CreateNavigator Extensions.CreateNavigator Method

Definizione

Crea un oggetto XPathNavigator per XNode.Creates an XPathNavigator for an XNode.

Overload

CreateNavigator(XNode) CreateNavigator(XNode) CreateNavigator(XNode) CreateNavigator(XNode)

Crea un oggetto XPathNavigator per XNode.Creates an XPathNavigator for an XNode.

CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable)

Crea un oggetto XPathNavigator per XNode.Creates an XPathNavigator for an XNode. XmlNameTable attiva un'elaborazione più efficiente delle espressioni XPath.The XmlNameTable enables more efficient XPath expression processing.

Commenti

Non è possibile modificare l'albero XML utilizzando l' XPathNavigator oggetto restituito da questo metodo.You cannot edit the XML tree by using the XPathNavigator that is returned by this method. La proprietà CanEdit restituisce false.The CanEdit property returns false.

Non è possibile creare XPathNavigator un oggetto XDocumentType per un nodo.You cannot create an XPathNavigator for a XDocumentType node. I tipi di documento non partecipano al modello di dati XPath.Document types do not participate in the XPath data model.

Le dichiarazioni dello spazio dei nomi vengono restituite da sinistra a destra.Namespace declarations are reported from left to right. Per XmlDocument gli spazi dei nomi vengono invece segnalati da destra a sinistra.In contrast, for XmlDocument namespaces are reported from right to left. Questo comportamento è conforme perché le dichiarazioni dello spazio dei nomi non sono ordinate nel modello di dati XPath.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Il metodo MoveToId non è supportato per gli strumenti di spostamento restituiti da questo metodo.The method MoveToId is not supported for navigators that are returned by this method.

È possibile utilizzare questo metodo per eseguire una trasformazione XSLT.You can use this method to perform an XSLT transformation. È possibile creare un albero XML, creare un XPathNavigator oggetto dall'albero XML, creare un nuovo documento e creare un oggetto XmlWriter che scriverà nel nuovo documento.You can create an XML tree, create an XPathNavigator from the XML tree, create a new document, and create a XmlWriter that will write into the new document. Quindi, è possibile richiamare la trasformazione XSLT, passando XPathNavigator e XmlWriter alla trasformazione.Then, you can invoke the XSLT transformation, passing the XPathNavigator and XmlWriter to the transformation. Dopo il completamento della trasformazione, il nuovo albero XML viene popolato con i relativi risultati.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

Per eseguire una trasformazione XSLT, è possibile usare XmlReader XPathNavigatoro.To perform an XSLT transformation, you can use either an XmlReader or an XPathNavigator. I due approcci hanno caratteristiche di prestazioni diverse.The two approaches have different performance characteristics. Alcune trasformazioni vengono eseguite più rapidamente quando si XmlReaderutilizza un oggetto, mentre altre vengono eseguite più XPathNavigatorvelocemente quando si utilizza un.Some transformations will execute faster when using an XmlReader, and others will execute faster when using a XPathNavigator. Se le prestazioni sono un problema, è consigliabile provare a usare ogni approccio per determinare quale sarà l'esecuzione migliore nelle circostanze.If performance is a concern, we recommend that you experiment with each approach to determine which will perform better in your circumstances.


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

            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)  

Questo esempio produce il seguente output:This example produces the following output:


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

CreateNavigator(XNode) CreateNavigator(XNode) CreateNavigator(XNode) CreateNavigator(XNode)

Crea un oggetto XPathNavigator per XNode.Creates an XPathNavigator for an 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 XNode XNode XNode

Oggetto XNode in grado di elaborare query XPath.An XNode that can process XPath queries.

Restituisce

Oggetto XPathNavigator in grado di elaborare query XPath.An XPathNavigator that can process XPath queries.

Esempi


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

                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)  

Questo esempio produce il seguente output:This example produces the following output:


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

Commenti

Non è possibile modificare l'albero XML utilizzando l' XPathNavigator oggetto restituito da questo metodo.You cannot edit the XML tree by using the XPathNavigator that is returned by this method. La proprietà CanEdit restituisce false.The CanEdit property returns false.

Non è possibile creare XPathNavigator un oggetto XDocumentType per un nodo.You cannot create an XPathNavigator for a XDocumentType node. I tipi di documento non partecipano al modello di dati XPath.Document types do not participate in the XPath data model.

Le dichiarazioni dello spazio dei nomi vengono restituite da sinistra a destra.Namespace declarations are reported from left to right. Per XmlDocument gli spazi dei nomi vengono invece segnalati da destra a sinistra.In contrast, for XmlDocument namespaces are reported from right to left. Questo comportamento è conforme perché le dichiarazioni dello spazio dei nomi non sono ordinate nel modello di dati XPath.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Il metodo MoveToId non è supportato per gli strumenti di spostamento restituiti da questo metodo.The method MoveToId is not supported for navigators that are returned by this method.

È possibile utilizzare questo metodo per eseguire una trasformazione XSLT.You can use this method to perform an XSLT transformation. È possibile creare un albero XML, creare un XPathNavigator oggetto dall'albero XML, creare un nuovo documento e creare un oggetto XmlWriter che scriverà nel nuovo documento.You can create an XML tree, create an XPathNavigator from the XML tree, create a new document, and create a XmlWriter that will write into the new document. Quindi, è possibile richiamare la trasformazione XSLT, passando XPathNavigator e XmlWriter alla trasformazione.Then, you can invoke the XSLT transformation, passing the XPathNavigator and XmlWriter to the transform. Dopo il completamento della trasformazione, il nuovo albero XML viene popolato con i relativi risultati.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

Per eseguire una trasformazione XSLT, è possibile usare XmlReader XPathNavigatoro.To perform an XSLT transformation, you can use either an XmlReader or an XPathNavigator. I due approcci hanno caratteristiche di prestazioni diverse.The two approaches have different performance characteristics. Alcune trasformazioni vengono eseguite più rapidamente quando si XmlReaderutilizza un oggetto, mentre altre vengono eseguite più XPathNavigatorvelocemente quando si utilizza un.Some transformations will execute faster when using an XmlReader, and others will execute faster when using a XPathNavigator. Se le prestazioni sono un problema, è consigliabile provare a usare ogni approccio per determinare quale sarà l'esecuzione migliore nelle circostanze.If performance is a concern, we recommend that you experiment with each approach to determine which will perform better in your circumstances.

CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable)

Crea un oggetto XPathNavigator per XNode.Creates an XPathNavigator for an XNode. XmlNameTable attiva un'elaborazione più efficiente delle espressioni XPath.The XmlNameTable enables more efficient XPath expression processing.

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

XNode in grado di elaborare una query XPath.An XNode that can process an XPath query.

Restituisce

Oggetto XPathNavigator in grado di elaborare query XPath.An XPathNavigator that can process XPath queries.

Commenti

Non è possibile modificare l'albero XML utilizzando XPathNavigator l'oggetto restituito da questo metodo.You cannot edit the XML tree using the XPathNavigator that is returned by this method. La proprietà CanEdit restituisce false.The CanEdit property returns false.

Non è possibile creare XPathNavigator un oggetto XDocumentType per un nodo.You cannot create an XPathNavigator for a XDocumentType node. I tipi di documento non partecipano al modello di dati XPath.Document types do not participate in the XPath data model.

Le dichiarazioni dello spazio dei nomi vengono restituite da sinistra a destra.Namespace declarations are reported from left to right. Per XmlDocument gli spazi dei nomi vengono invece segnalati da destra a sinistra.In contrast, for XmlDocument namespaces are reported from right to left. Questo comportamento è conforme perché le dichiarazioni dello spazio dei nomi non sono ordinate nel modello di dati XPath.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Il metodo MoveToId non è supportato per gli strumenti di spostamento restituiti da questo metodo.The method MoveToId is not supported for navigators that are returned by this method.

Se si usa un XmlNameTable oggetto con questo metodo per creare XPathNavigatorl'oggetto, si otterranno prestazioni migliori durante la valutazione delle espressioni XPath.If you use an XmlNameTable with this method to create the XPathNavigator, you will get better performance when evaluating XPath expressions.

Si applica a