Sdílet prostřednictvím


Extensions.CreateNavigator Metoda

Definice

Vytvoří pro XPathNavigator objekt XNode.

Přetížení

Name Description
CreateNavigator(XNode)

Vytvoří pro XPathNavigator objekt XNode.

CreateNavigator(XNode, XmlNameTable)

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

Poznámky

Strom XML nelze upravit pomocí XPathNavigator metody, která je vrácena touto metodou. Vlastnost CanEdit vrátí false.

Pro uzel nelze vytvořit XPathNavigatorXDocumentType . Typy dokumentů nejsou součástí datového modelu XPath.

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

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 ze XPathNavigator stromu XML, vytvořit nový dokument a vytvořit XmlWriter dokument, který se zapíše do nového dokumentu. Potom 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.

Chcete-li provést transformaci XSLT, můžete použít buď nebo XmlReaderXPathNavigator. Dva přístupy mají různé charakteristiky výkonu. Některé transformace se spustí rychleji při použití a XmlReaderjiné se spustí rychleji při použití XPathNavigator. Pokud jde o výkon, doporučujeme experimentovat s každým přístupem, abyste zjistili, který z vašich okolností bude fungovat lépe.

CreateNavigator(XNode)

Zdroj:
XNodeNavigator.cs
Zdroj:
XNodeNavigator.cs
Zdroj:
XNodeNavigator.cs
Zdroj:
XNodeNavigator.cs
Zdroj:
XNodeNavigator.cs

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

Dotaz XPath XNode může zpracovávat.

Návraty

Dotaz XPath XPathNavigator může zpracovávat.

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.

Pro uzel nelze vytvořit XPathNavigatorXDocumentType . Typy dokumentů nejsou součástí 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 v datovém modelu XPath seřazeny.

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 ze XPathNavigator stromu XML, vytvořit nový dokument a vytvořit XmlWriter dokument, který se zapíše do nového dokumentu. Potom můžete vyvolat transformaci XSLT a XmlWriter předat XPathNavigator ji do transformace. Po úspěšném dokončení transformace se nový strom XML naplní výsledky transformace.

Chcete-li provést transformaci XSLT, můžete použít buď nebo XmlReaderXPathNavigator. Dva přístupy mají různé charakteristiky výkonu. Některé transformace se spustí rychleji při použití a XmlReaderjiné se spustí rychleji při použití XPathNavigator. Pokud jde o výkon, 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)

Zdroj:
XNodeNavigator.cs
Zdroj:
XNodeNavigator.cs
Zdroj:
XNodeNavigator.cs
Zdroj:
XNodeNavigator.cs
Zdroj:
XNodeNavigator.cs

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

Dotaz XNode XPath může zpracovat.

nameTable
XmlNameTable

A XmlNameTable , kterou použije XPathNavigator.

Návraty

Dotaz XPath XPathNavigator může zpracovávat.

Poznámky

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

Pro uzel nelze vytvořit XPathNavigatorXDocumentType . Typy dokumentů nejsou součástí 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 v datovém modelu XPath seřazeny.

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

Pokud k vytvoření XPathNavigatorpoužijete s touto metodou XmlNameTable , získáte lepší výkon při vyhodnocování výrazů XPath.

Platí pro