Extensions.CreateNavigator Metoda

Definice

Vytvoří XPathNavigator pro XNode .Creates an XPathNavigator for an XNode.

Přetížení

CreateNavigator(XNode)

Vytvoří XPathNavigator pro XNode .Creates an XPathNavigator for an XNode.

CreateNavigator(XNode, XmlNameTable)

Vytvoří XPathNavigator pro XNode .Creates an XPathNavigator for an XNode. XmlNameTableUmožňuje efektivnější zpracování výrazů XPath.The XmlNameTable enables more efficient XPath expression processing.

Poznámky

Strom XML nelze upravovat pomocí XPathNavigator metody, která je vrácena touto metodou.You cannot edit the XML tree by using the XPathNavigator that is returned by this method. CanEditVlastnost vrací false .The CanEdit property returns false.

Pro uzel nemůžete vytvořit XPathNavigator XDocumentType .You cannot create an XPathNavigator for a XDocumentType node. Typy dokumentů se nepodílejí na datovém modelu XPath.Document types do not participate in the XPath data model.

Deklarace oboru názvů jsou hlášeny zleva doprava.Namespace declarations are reported from left to right. Naopak pro XmlDocument obory názvů jsou hlášeny zprava doleva.In contrast, for XmlDocument namespaces are reported from right to left. Jedná se o vyhovující chování, protože deklarace oboru názvů nejsou seřazené v datovém modelu XPath.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Metoda MoveToId není podporována pro navigátory, které jsou vraceny touto metodou.The method MoveToId is not supported for navigators that are returned by this method.

Tuto metodu lze použít k provedení transformace XSLT.You can use this method to perform an XSLT transformation. Můžete vytvořit strom XML, vytvořit XPathNavigator z stromu XML, vytvořit nový dokument a vytvořit XmlWriter , který bude zapisovat do nového dokumentu.You can create an XML tree, create an XPathNavigator from the XML tree, create a new document, and create a XmlWriter that will write into the new document. Pak můžete vyvolat transformaci XSLT, předáním XPathNavigator a XmlWriter k transformaci.Then, you can invoke the XSLT transformation, passing the XPathNavigator and XmlWriter to the transformation. Po úspěšném dokončení transformace se nový strom XML naplní výsledky transformace.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

Chcete-li provést transformaci XSLT, můžete použít buď XmlReader nebo XPathNavigator .To perform an XSLT transformation, you can use either an XmlReader or an XPathNavigator. Tyto dva přístupy mají různé charakteristiky výkonu.The two approaches have different performance characteristics. Některé transformace budou spouštěny rychleji při použití a XmlReader jiné budou rychlejší při použití XPathNavigator .Some transformations will execute faster when using an XmlReader, and others will execute faster when using a XPathNavigator. Pokud se to týká, doporučujeme, abyste při rozhodování o tom, které výsledky budou ve svých situacích lépe, experimentovat s každým přístupem.If performance is a concern, we recommend that you experiment with each approach to determine which will perform better in your circumstances.

            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 XDocument(  
    new XElement("Parent",  
        new XElement("Child1", "Child1 data"),  
        new XElement("Child2", "Child2 data")  
    )  
);  

XDocument newTree = new XDocument();  
using (XmlWriter writer = newTree.CreateWriter()) {  
    // Load the style sheet.  
    XslCompiledTransform xslt = new XslCompiledTransform();  
    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:This example produces the following output:

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

CreateNavigator(XNode)

Vytvoří XPathNavigator pro XNode .Creates an XPathNavigator for an 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

XNode, Který může zpracovávat dotazy XPath.An XNode that can process XPath queries.

Návraty

XPathNavigator

XPathNavigator, Který může zpracovávat dotazy XPath.An XPathNavigator that can process XPath queries.

Příklady

                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 XDocument(  
    new XElement("Parent",  
        new XElement("Child1", "Child1 data"),  
        new XElement("Child2", "Child2 data")  
    )  
);  

XDocument newTree = new XDocument();  
using (XmlWriter writer = newTree.CreateWriter()) {  
    // Load the style sheet.  
    XslCompiledTransform xslt = new XslCompiledTransform();  
    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:This example produces the following output:

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

Poznámky

Strom XML nelze upravovat pomocí XPathNavigator metody, která je vrácena touto metodou.You cannot edit the XML tree by using the XPathNavigator that is returned by this method. CanEditVlastnost vrací false .The CanEdit property returns false.

Pro uzel nemůžete vytvořit XPathNavigator XDocumentType .You cannot create an XPathNavigator for a XDocumentType node. Typy dokumentů se nepodílejí na datovém modelu XPath.Document types do not participate in the XPath data model.

Deklarace oboru názvů jsou hlášeny zleva doprava.Namespace declarations are reported from left to right. Naopak pro XmlDocument obory názvů jsou hlášeny zprava doleva.In contrast, for XmlDocument namespaces are reported from right to left. Jedná se o vyhovující chování, protože deklarace oboru názvů nejsou seřazené v datovém modelu XPath.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Metoda MoveToId není podporována pro navigátory, které jsou vraceny touto metodou.The method MoveToId is not supported for navigators that are returned by this method.

Tuto metodu lze použít k provedení transformace XSLT.You can use this method to perform an XSLT transformation. Můžete vytvořit strom XML, vytvořit XPathNavigator z stromu XML, vytvořit nový dokument a vytvořit XmlWriter , který bude zapisovat do nového dokumentu.You can create an XML tree, create an XPathNavigator from the XML tree, create a new document, and create a XmlWriter that will write into the new document. Pak můžete vyvolat transformaci XSLT XPathNavigator a předat a XmlWriter k transformaci.Then, you can invoke the XSLT transformation, passing the XPathNavigator and XmlWriter to the transform. Po úspěšném dokončení transformace se nový strom XML naplní výsledky transformace.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

Chcete-li provést transformaci XSLT, můžete použít buď XmlReader nebo XPathNavigator .To perform an XSLT transformation, you can use either an XmlReader or an XPathNavigator. Tyto dva přístupy mají různé charakteristiky výkonu.The two approaches have different performance characteristics. Některé transformace budou spouštěny rychleji při použití a XmlReader jiné budou rychlejší při použití XPathNavigator .Some transformations will execute faster when using an XmlReader, and others will execute faster when using a XPathNavigator. Pokud se to týká, doporučujeme, abyste při rozhodování o tom, které výsledky budou ve svých situacích lépe, experimentovat s každým přístupem.If performance is a concern, we recommend that you experiment with each approach to determine which will perform better in your circumstances.

Platí pro

CreateNavigator(XNode, XmlNameTable)

Vytvoří XPathNavigator pro XNode .Creates an XPathNavigator for an XNode. XmlNameTableUmožňuje efektivnější zpracování výrazů XPath.The XmlNameTable enables more efficient XPath expression processing.

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

XNode, Který může zpracovat dotaz XPath.An XNode that can process an XPath query.

nameTable
XmlNameTable

, Který XmlNameTable má být použit v XPathNavigator .A XmlNameTable to be used by XPathNavigator.

Návraty

XPathNavigator

XPathNavigator, Který může zpracovávat dotazy XPath.An XPathNavigator that can process XPath queries.

Poznámky

Strom XML nelze upravovat pomocí XPathNavigator metody, která je vrácena touto metodou.You cannot edit the XML tree using the XPathNavigator that is returned by this method. CanEditVlastnost vrací false .The CanEdit property returns false.

Pro uzel nemůžete vytvořit XPathNavigator XDocumentType .You cannot create an XPathNavigator for a XDocumentType node. Typy dokumentů se nepodílejí na datovém modelu XPath.Document types do not participate in the XPath data model.

Deklarace oboru názvů jsou hlášeny zleva doprava.Namespace declarations are reported from left to right. Naopak pro XmlDocument obory názvů jsou hlášeny zprava doleva.In contrast, for XmlDocument namespaces are reported from right to left. Jedná se o vyhovující chování, protože deklarace oboru názvů nejsou seřazené v datovém modelu XPath.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Metoda MoveToId není podporována pro navigátory, které jsou vraceny touto metodou.The method MoveToId is not supported for navigators that are returned by this method.

Použijete-li XmlNameTable s touto metodou k vytvoření XPathNavigator , získáte lepší výkon při vyhodnocování výrazů XPath.If you use an XmlNameTable with this method to create the XPathNavigator, you will get better performance when evaluating XPath expressions.

Platí pro