Compartilhar via


Extensions.CreateNavigator Método

Definição

Cria um XPathNavigator para um XNode.

Sobrecargas

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.

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. 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

node
XNode

Um XNode que pode processar consultas XPath.

Retornos

XPathNavigator

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

node
XNode

Um XNode que pode processar uma consulta XPath.

nameTable
XmlNameTable

Um XmlNameTable a ser usado por XPathNavigator.

Retornos

XPathNavigator

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.

Aplica-se a