Sdílet prostřednictvím


Extensions.CreateNavigator Metoda

Definice

XPathNavigator Vytvoří pro objekt XNode.

Přetížení

CreateNavigator(XNode)

XPathNavigator Vytvoří pro objekt XNode.

CreateNavigator(XNode, XmlNameTable)

XPathNavigator Vytvoří pro objekt XNode. Umožňuje XmlNameTable efektivnější zpracování výrazů XPath.

Poznámky

Strom XML nelze upravit pomocí XPathNavigator vrácené touto metodou. Vlastnost CanEdit vrátí false.

Nelze vytvořit uzel XPathNavigator XDocumentType . Typy dokumentů se neúčastní datového modelu XPath.

Deklarace oboru názvů se hlásí zleva doprava. Naproti tomu pro XmlDocumentobory názvů se hlásí zprava doleva. Toto chování je v souladu, protože deklarace oboru názvů nejsou seřazené v datovém modelu XPath.

MoveToId Metoda není podporována pro navigátory, které jsou vráceny touto metodou.

Tuto metodu můžete použít k provedení transformace XSLT. Můžete vytvořit strom XML, vytvořit XPathNavigator ze stromu XML, vytvořit nový dokument a vytvořit XmlWriter dokument, který se zapíše do nového dokumentu. Pak můžete vyvolat transformaci XSLT a předat XPathNavigator ji do XmlWriter transformace. Po úspěšném dokončení transformace se nový strom XML naplní výsledky transformace.

K provedení transformace XSLT můžete použít buď nebo XmlReader XPathNavigator. Tyto dva přístupy mají různé charakteristiky výkonu. Některé transformace se spustí rychleji při použití XmlReadera jiné se spustí rychleji při použití XPathNavigator. Pokud se jedná o problém, doporučujeme experimentovat s každým přístupem, abyste zjistili, který z vašich okolností bude fungovat lépe.

CreateNavigator(XNode)

XPathNavigator Vytvoří pro objekt 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

Parametry

node
XNode

To XNode může zpracovávat dotazy XPath.

Návraty

XPathNavigator

To XPathNavigator může zpracovávat dotazy XPath.

Příklady

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)  

Tento příklad vytvoří následující výstup:

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

Poznámky

Strom XML nelze upravit pomocí XPathNavigator vrácené touto metodou. Vlastnost CanEdit vrátí false.

Nelze vytvořit uzel XPathNavigator XDocumentType . Typy dokumentů se neúčastní datového modelu XPath.

Deklarace oboru názvů se hlásí zleva doprava. Naproti tomu u XmlDocument oborů názvů se hlásí zprava doleva. Toto chování je v souladu, protože deklarace oboru názvů nejsou seřazené v datovém modelu XPath.

MoveToId Metoda není podporována pro navigátory, které jsou vráceny touto metodou.

Tuto metodu můžete použít k provedení transformace XSLT. Můžete vytvořit strom XML, vytvořit XPathNavigator ze stromu XML, vytvořit nový dokument a vytvořit XmlWriter dokument, který se zapíše do nového dokumentu. Pak můžete vyvolat transformaci XSLT, předat XPathNavigator a XmlWriter transformovat. Po úspěšném dokončení transformace se nový strom XML naplní výsledky transformace.

K provedení transformace XSLT můžete použít buď nebo XmlReader XPathNavigator. Tyto dva přístupy mají různé charakteristiky výkonu. Některé transformace se spustí rychleji při použití XmlReadera jiné se spustí rychleji při použití XPathNavigator. Pokud se jedná o problém, doporučujeme experimentovat s každým přístupem, abyste zjistili, který z vašich okolností bude fungovat lépe.

Platí pro

CreateNavigator(XNode, XmlNameTable)

XPathNavigator Vytvoří pro objekt XNode. Umožňuje XmlNameTable efektivnější zpracování výrazů 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

Parametry

node
XNode

To XNode může zpracovat dotaz XPath.

nameTable
XmlNameTable

A XmlNameTable , kterou má používat XPathNavigator.

Návraty

XPathNavigator

To XPathNavigator může zpracovávat dotazy XPath.

Poznámky

Strom XML nelze upravit pomocí XPathNavigator vrácené touto metodou. Vlastnost CanEdit vrátí false.

Nelze vytvořit uzel XPathNavigator XDocumentType . Typy dokumentů se neúčastní datového modelu XPath.

Deklarace oboru názvů se hlásí zleva doprava. Naproti tomu u XmlDocument oborů názvů se hlásí zprava doleva. Toto chování je v souladu, protože deklarace oboru názvů nejsou seřazené v datovém modelu XPath.

MoveToId Metoda není podporována pro navigátory, které jsou vráceny touto metodou.

Pokud k vytvoření použijete s touto metodou XmlNameTable XPathNavigator, budete mít lepší výkon při vyhodnocování výrazů XPath.

Platí pro