Extensions.CreateNavigator Método
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria um XPathNavigator para um XNode.
CreateNavigator(XNode) |
Cria um XPathNavigator para um XNode. |
CreateNavigator(XNode, XmlNameTable) |
Cria um XPathNavigator para um XNode. O XmlNameTable habilita o processamento mais eficiente de expressão XPath. |
Você não pode editar a árvore XML usando a XPathNavigator que é retornada por esse método. A propriedade CanEdit retorna false
.
Você não pode criar um XPathNavigator nó para um XDocumentType nó. Os tipos de documento não participam do modelo de dados XPath.
Declarações de namespace são relatadas da esquerda para a direita. Por outro lado, para XmlDocument, namespaces são relatados da direita para a esquerda. Esse é um comportamento de conformidade porque as declarações de namespace não são ordenadas no modelo de dados XPath.
Não há suporte para o método MoveToId para navegadores retornados por esse método.
Você pode usar esse método para executar uma transformação XSLT. Você pode criar uma árvore XML, criar uma XPathNavigator árvore XML, criar um novo documento e criar um XmlWriter que será gravado no novo documento. Em seguida, você pode chamar a transformação XSLT, passando XPathNavigator e XmlWriter para a transformação. Depois que a transformação for concluída com êxito, a nova árvore XML será preenchida com os resultados da transformação.
Para executar uma transformação XSLT, você pode usar um XmlReader ou um XPathNavigator. As duas abordagens têm características de desempenho diferentes. Algumas transformações serão executadas mais rapidamente ao usar um XmlReadere outras serão executadas mais rapidamente ao usar um XPathNavigator. Se o desempenho for uma preocupação, recomendamos que você experimente cada abordagem para determinar qual terá melhor desempenho em 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
Retornos
Um XPathNavigator que pode 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)
Esse exemplo gera a saída a seguir:
<Root>
<C1>Child1 data</C1>
<C2>Child2 data</C2>
</Root>
Comentários
Você não pode editar a árvore XML usando a XPathNavigator que é retornada por esse método. A propriedade CanEdit retorna false
.
Você não pode criar um XPathNavigator nó para um XDocumentType nó. Os tipos de documento não participam do modelo de dados XPath.
Declarações de namespace são relatadas da esquerda para a direita. Em contraste, para XmlDocument namespaces são relatados da direita para a esquerda. Esse é um comportamento de conformidade porque as declarações de namespace não são ordenadas no modelo de dados XPath.
Não há suporte para o método MoveToId para navegadores retornados por esse método.
Você pode usar esse método para executar uma transformação XSLT. Você pode criar uma árvore XML, criar uma XPathNavigator árvore XML, criar um novo documento e criar um XmlWriter que será gravado no novo documento. Em seguida, você pode invocar a transformação XSLT, passando o XPathNavigator e XmlWriter para a transformação. Depois que a transformação for concluída com êxito, a nova árvore XML será preenchida com os resultados da transformação.
Para executar uma transformação XSLT, você pode usar um XmlReader ou um XPathNavigator. As duas abordagens têm características de desempenho diferentes. Algumas transformações serão executadas mais rapidamente ao usar um XmlReadere outras serão executadas mais rapidamente ao usar um XPathNavigator. Se o desempenho for uma preocupação, recomendamos que você experimente cada abordagem para determinar qual terá melhor desempenho em suas circunstâncias.
Aplica-se a
CreateNavigator(XNode, XmlNameTable)
Cria um XPathNavigator para um XNode. O XmlNameTable habilita o processamento mais eficiente de expressão 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
Um XmlNameTable a ser usado por XPathNavigator.
Retornos
Um XPathNavigator que pode processar consultas XPath.
Comentários
Você não pode editar a árvore XML usando a XPathNavigator que é retornada por esse método. A propriedade CanEdit retorna false
.
Você não pode criar um XPathNavigator nó para um XDocumentType nó. Os tipos de documento não participam do modelo de dados XPath.
Declarações de namespace são relatadas da esquerda para a direita. Em contraste, para XmlDocument namespaces são relatados da direita para a esquerda. Esse é um comportamento de conformidade porque as declarações de namespace não são ordenadas no modelo de dados XPath.
Não há suporte para o método MoveToId para navegadores retornados por esse método.
Se você usar um XmlNameTable método com esse método para criar o XPathNavigator, obterá melhor desempenho ao avaliar expressões XPath.