Extensions.CreateNavigator Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Cria um XPathNavigator para um XNode.
Sobrecargas
| Name | Description |
|---|---|
| CreateNavigator(XNode) |
Cria um XPathNavigator para um XNode. |
| CreateNavigator(XNode, XmlNameTable) |
Cria um XPathNavigator para um XNode. Isto XmlNameTable permite um processamento de expressões XPath mais eficiente. |
Observações
Não podes editar a árvore XML usando o XPathNavigator que é devolvido por este método. A CanEdit propriedade devolve false.
Não podes criar um XPathNavigator para um XDocumentType nó. Os tipos de documentos não participam no modelo de dados XPath.
As declarações do espaço de nomes são reportadas da esquerda para a direita. Em contraste, para XmlDocument, os espaços de nomes são reportados da direita para a esquerda. Este é um comportamento conforme porque as declarações de namespace não estão ordenadas no modelo de dados XPath.
O método MoveToId não é suportado para navegadores que são devolvidos por este método.
Pode usar este método para realizar uma transformação XSLT. Podes criar uma árvore XML, criar um XPathNavigator a partir da árvore XML, criar um novo documento e criar um XmlWriter que irá escrever no novo documento. Depois, podes invocar a transformação XSLT, passando o XPathNavigator e XmlWriter para a transformação. Após a conclusão bem-sucedida da transformação, a nova árvore XML é preenchida com os resultados da transformação.
Para realizar uma transformação XSLT, pode usar um XmlReader ou um XPathNavigator. As duas abordagens têm características de desempenho diferentes. Algumas transformações executam mais rápido ao usar um XmlReader, e outras executam-se mais rápido ao usar um XPathNavigator. Se o desempenho for uma preocupação, recomendamos que experimente cada abordagem para determinar qual terá melhor desempenho nas suas circunstâncias.
CreateNavigator(XNode)
Cria um XPathNavigator para um 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
Devoluções
Um XPathNavigator que possa processar consultas XPath.
Exemplos
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 exemplo produz a seguinte saída:
<Root>
<C1>Child1 data</C1>
<C2>Child2 data</C2>
</Root>
Observações
Não pode editar a árvore XML usando o XPathNavigator que é devolvido por este método. A CanEdit propriedade devolve false.
Não podes criar um XPathNavigator para um XDocumentType nó. Os tipos de documentos não participam no modelo de dados XPath.
As declarações do espaço de nomes são reportadas da esquerda para a direita. Em contraste, para XmlDocument os espaços de nomes são reportados da direita para a esquerda. Este é um comportamento conforme porque as declarações de namespace não estão ordenadas no modelo de dados XPath.
O método MoveToId não é suportado para navegadores que são devolvidos por este método.
Pode usar este método para realizar uma transformação XSLT. Podes criar uma árvore XML, criar um XPathNavigator a partir da árvore XML, criar um novo documento e criar um XmlWriter que irá escrever no novo documento. Depois, podes invocar a transformação XSLT, passando o XPathNavigator e XmlWriter para a transformação. Após a conclusão bem-sucedida da transformação, a nova árvore XML é preenchida com os resultados da transformação.
Para realizar uma transformação XSLT, pode usar um XmlReader ou um XPathNavigator. As duas abordagens têm características de desempenho diferentes. Algumas transformações executam mais rápido ao usar um XmlReader, e outras executam-se mais rápido ao usar um XPathNavigator. Se o desempenho for uma preocupação, recomendamos que experimente cada abordagem para determinar qual terá melhor desempenho nas suas circunstâncias.
Aplica-se a
CreateNavigator(XNode, XmlNameTable)
Cria um XPathNavigator para um XNode. Isto XmlNameTable permite um processamento de expressões XPath mais eficiente.
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
Parâmetros
- nameTable
- XmlNameTable
A XmlNameTable ser usado por XPathNavigator.
Devoluções
Um XPathNavigator que possa processar consultas XPath.
Observações
Não pode editar a árvore XML usando o XPathNavigator que é devolvido por este método. A CanEdit propriedade devolve false.
Não podes criar um XPathNavigator para um XDocumentType nó. Os tipos de documentos não participam no modelo de dados XPath.
As declarações do espaço de nomes são reportadas da esquerda para a direita. Em contraste, para XmlDocument os espaços de nomes são reportados da direita para a esquerda. Este é um comportamento conforme porque as declarações de namespace não estão ordenadas no modelo de dados XPath.
O método MoveToId não é suportado para navegadores que são devolvidos por este método.
Se usar um XmlNameTable com este método para criar o XPathNavigator, obterá melhor desempenho ao avaliar expressões XPath.