Extensions.CreateNavigator Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
Devoluciones
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
- nameTable
- XmlNameTable
Objeto XmlNameTable que se va a utilizar en XPathNavigator.
Devoluciones
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.