Comparteix a través de


Extensions.CreateNavigator Método

Definición

Crea un objeto XPathNavigator para XNode.

Sobrecargas

CreateNavigator(XNode)

Crea un objeto XPathNavigator para XNode.

CreateNavigator(XNode, XmlNameTable)

Crea un objeto XPathNavigator para XNode. XmlNameTable permite un procesamiento más eficaz de la expresión XPath.

Comentarios

No se puede editar el árbol XML mediante el XPathNavigator que devuelve este método. La propiedad CanEdit devuelve false.

No se puede crear un XPathNavigator para un XDocumentType nodo. Los tipos de documento no participan en el modelo de datos XPath.

Las declaraciones de espacio de nombres se notifican de izquierda a derecha. En cambio, para XmlDocument, los espacios de nombres se notifican de derecha a izquierda. Este comportamiento es conforme porque las declaraciones de espacio de nombres no están ordenadas en el modelo de datos XPath.

El método MoveToId no es compatible con navegadores devueltos por este método.

Puede usar este método para realizar una transformación XSLT. Puede crear un árbol XML, crear un XPathNavigator a partir del árbol XML, crear un nuevo documento y crear un XmlWriter que escribirá en el nuevo documento. A continuación, puede invocar la transformación XSLT y pasar XPathNavigator y XmlWriter a la transformación. Después de que se complete correctamente la transformación, se rellenará el nuevo árbol XML con los resultados de la transformación.

Para realizar una transformación XSLT, puede usar o XmlReader .XPathNavigator Los dos enfoques tienen características de rendimiento diferentes. Algunas transformaciones se ejecutarán más rápido al usar y XmlReaderotras se ejecutarán más rápido al usar .XPathNavigator Si el rendimiento es un problema, se recomienda experimentar con cada enfoque para determinar qué funcionará mejor en sus circunstancias.

CreateNavigator(XNode)

Crea un objeto XPathNavigator para 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

Parámetros

node
XNode

XNode que puede procesar consultas XPath.

Devoluciones

XPathNavigator

XPathNavigator que puede procesar consultas XPath.

Ejemplos

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)  

Este ejemplo produce el siguiente resultado:

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

Comentarios

No se puede editar el árbol XML mediante el XPathNavigator que devuelve este método. La propiedad CanEdit devuelve false.

No se puede crear un XPathNavigator para un XDocumentType nodo. Los tipos de documento no participan en el modelo de datos XPath.

Las declaraciones de espacio de nombres se notifican de izquierda a derecha. En cambio, para XmlDocument los espacios de nombres se notifican de derecha a izquierda. Este comportamiento es conforme porque las declaraciones de espacio de nombres no están ordenadas en el modelo de datos XPath.

El método MoveToId no es compatible con navegadores devueltos por este método.

Puede usar este método para realizar una transformación XSLT. Puede crear un árbol XML, crear un XPathNavigator a partir del árbol XML, crear un nuevo documento y crear un XmlWriter que escribirá en el nuevo documento. A continuación, puede invocar la transformación XSLT, pasar y XPathNavigator XmlWriter a la transformación. Después de que se complete correctamente la transformación, se rellenará el nuevo árbol XML con los resultados de la transformación.

Para realizar una transformación XSLT, puede usar o XmlReader .XPathNavigator Los dos enfoques tienen características de rendimiento diferentes. Algunas transformaciones se ejecutarán más rápido al usar y XmlReaderotras se ejecutarán más rápido al usar .XPathNavigator Si el rendimiento es un problema, se recomienda experimentar con cada enfoque para determinar qué funcionará mejor en sus circunstancias.

Se aplica a

CreateNavigator(XNode, XmlNameTable)

Crea un objeto XPathNavigator para XNode. XmlNameTable permite un procesamiento más eficaz de la expresión 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

Parámetros

node
XNode

XNode que procesa consultas XPath.

nameTable
XmlNameTable

Objeto XmlNameTable que se va a utilizar en XPathNavigator.

Devoluciones

XPathNavigator

XPathNavigator que puede procesar consultas XPath.

Comentarios

No se puede editar el árbol XML mediante el XPathNavigator que devuelve este método. La propiedad CanEdit devuelve false.

No se puede crear un XPathNavigator para un XDocumentType nodo. Los tipos de documento no participan en el modelo de datos XPath.

Las declaraciones de espacio de nombres se notifican de izquierda a derecha. En cambio, para XmlDocument los espacios de nombres se notifican de derecha a izquierda. Este comportamiento es conforme porque las declaraciones de espacio de nombres no están ordenadas en el modelo de datos XPath.

El método MoveToId no es compatible con navegadores devueltos por este método.

Si usa un XmlNameTable con este método para crear XPathNavigator, obtendrá un mejor rendimiento al evaluar expresiones XPath.

Se aplica a