Extensions.CreateNavigator Metoda

Definicja

Tworzy dla elementu XNode. XPathNavigatorCreates an XPathNavigator for an XNode.

Przeciążenia

CreateNavigator(XNode)

Tworzy dla elementu XNode. XPathNavigatorCreates an XPathNavigator for an XNode.

CreateNavigator(XNode, XmlNameTable)

Tworzy dla elementu XNode. XPathNavigatorCreates an XPathNavigator for an XNode. XmlNameTable Zapewnia wydajniejsze przetwarzanie wyrażeń XPath.The XmlNameTable enables more efficient XPath expression processing.

Uwagi

Nie można edytować drzewa XML przy użyciu XPathNavigator , który jest zwracany przez tę metodę.You cannot edit the XML tree by using the XPathNavigator that is returned by this method. Właściwość zwraca wartość false. CanEditThe CanEdit property returns false.

Nie można utworzyć XPathNavigator XDocumentType dla węzła.You cannot create an XPathNavigator for a XDocumentType node. Typy dokumentów nie uczestniczą w modelu danych XPath.Document types do not participate in the XPath data model.

Deklaracje przestrzeni nazw są raportowane od lewej do prawej.Namespace declarations are reported from left to right. W przeciwieństwie do XmlDocument przestrzeni nazw są zgłaszane od prawej do lewej.In contrast, for XmlDocument namespaces are reported from right to left. Jest to zachowanie zgodne ze względu na to, że deklaracje przestrzeni nazw nie są uporządkowane w modelu danych XPath.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Metoda MoveToId nie jest obsługiwana dla nawigatorów zwracanych przez tę metodę.The method MoveToId is not supported for navigators that are returned by this method.

Za pomocą tej metody można przeprowadzić transformację XSLT.You can use this method to perform an XSLT transformation. Można utworzyć drzewo XML, utworzyć obiekt XPathNavigator z drzewa XML, utworzyć nowy dokument i XmlWriter utworzyć, który będzie zapisywać w nowym dokumencie.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. Następnie można wywołać transformację XSLT, przekazując XPathNavigator i XmlWriter do transformacji.Then, you can invoke the XSLT transformation, passing the XPathNavigator and XmlWriter to the transformation. Po pomyślnym zakończeniu przekształcenia nowe drzewo XML zostanie wypełnione wynikami transformacji.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

Aby przeprowadzić transformację XSLT, można użyć XmlReader XPathNavigatoralbo.To perform an XSLT transformation, you can use either an XmlReader or an XPathNavigator. Dwa podejścia mają różne charakterystyki wydajności.The two approaches have different performance characteristics. Niektóre przekształcenia będą wykonywane szybciej podczas korzystania z XmlReaderprogramu, a inne będą wykonywane szybciej przy XPathNavigatorużyciu.Some transformations will execute faster when using an XmlReader, and others will execute faster when using a XPathNavigator. Jeśli wydajność jest istotna, zalecamy zapoznanie się z każdym podejściem w celu ustalenia, które będą działać lepiej w Twoich okolicznościach.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)  

Ten przykład generuje następujące wyniki:This example produces the following output:

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

CreateNavigator(XNode)

Tworzy dla elementu XNode. XPathNavigatorCreates 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 , Który może przetwarzać zapytania XPath.An XNode that can process XPath queries.

Zwraca

XPathNavigator , Który może przetwarzać zapytania XPath.An XPathNavigator that can process XPath queries.

Przykłady

  
                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)  

Ten przykład generuje następujące wyniki:This example produces the following output:

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

Uwagi

Nie można edytować drzewa XML przy użyciu XPathNavigator , który jest zwracany przez tę metodę.You cannot edit the XML tree by using the XPathNavigator that is returned by this method. Właściwość zwraca wartość false. CanEditThe CanEdit property returns false.

Nie można utworzyć XPathNavigator XDocumentType dla węzła.You cannot create an XPathNavigator for a XDocumentType node. Typy dokumentów nie uczestniczą w modelu danych XPath.Document types do not participate in the XPath data model.

Deklaracje przestrzeni nazw są raportowane od lewej do prawej.Namespace declarations are reported from left to right. W przeciwieństwie do XmlDocument przestrzeni nazw są zgłaszane od prawej do lewej.In contrast, for XmlDocument namespaces are reported from right to left. Jest to zachowanie zgodne ze względu na to, że deklaracje przestrzeni nazw nie są uporządkowane w modelu danych XPath.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Metoda MoveToId nie jest obsługiwana dla nawigatorów zwracanych przez tę metodę.The method MoveToId is not supported for navigators that are returned by this method.

Za pomocą tej metody można przeprowadzić transformację XSLT.You can use this method to perform an XSLT transformation. Można utworzyć drzewo XML, utworzyć obiekt XPathNavigator z drzewa XML, utworzyć nowy dokument i XmlWriter utworzyć, który będzie zapisywać w nowym dokumencie.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. Następnie można wywołać transformację XSLT, przekazując XPathNavigator i XmlWriter do przekształcenia.Then, you can invoke the XSLT transformation, passing the XPathNavigator and XmlWriter to the transform. Po pomyślnym zakończeniu przekształcenia nowe drzewo XML zostanie wypełnione wynikami transformacji.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

Aby przeprowadzić transformację XSLT, można użyć XmlReader XPathNavigatoralbo.To perform an XSLT transformation, you can use either an XmlReader or an XPathNavigator. Dwa podejścia mają różne charakterystyki wydajności.The two approaches have different performance characteristics. Niektóre przekształcenia będą wykonywane szybciej podczas korzystania z XmlReaderprogramu, a inne będą wykonywane szybciej przy XPathNavigatorużyciu.Some transformations will execute faster when using an XmlReader, and others will execute faster when using a XPathNavigator. Jeśli wydajność jest istotna, zalecamy zapoznanie się z każdym podejściem w celu ustalenia, które będą działać lepiej w Twoich okolicznościach.If performance is a concern, we recommend that you experiment with each approach to determine which will perform better in your circumstances.

CreateNavigator(XNode, XmlNameTable)

Tworzy dla elementu XNode. XPathNavigatorCreates an XPathNavigator for an XNode. XmlNameTable Zapewnia wydajniejsze przetwarzanie wyrażeń 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);
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 , Który może przetwarzać zapytanie XPath.An XNode that can process an XPath query.

nameTable
XmlNameTable

A XmlNameTable , który ma być XPathNavigatorużywany przez.A XmlNameTable to be used by XPathNavigator.

Zwraca

XPathNavigator , Który może przetwarzać zapytania XPath.An XPathNavigator that can process XPath queries.

Uwagi

Nie można edytować drzewa XML przy użyciu XPathNavigator , który jest zwracany przez tę metodę.You cannot edit the XML tree using the XPathNavigator that is returned by this method. Właściwość zwraca wartość false. CanEditThe CanEdit property returns false.

Nie można utworzyć XPathNavigator XDocumentType dla węzła.You cannot create an XPathNavigator for a XDocumentType node. Typy dokumentów nie uczestniczą w modelu danych XPath.Document types do not participate in the XPath data model.

Deklaracje przestrzeni nazw są raportowane od lewej do prawej.Namespace declarations are reported from left to right. W przeciwieństwie do XmlDocument przestrzeni nazw są zgłaszane od prawej do lewej.In contrast, for XmlDocument namespaces are reported from right to left. Jest to zachowanie zgodne ze względu na to, że deklaracje przestrzeni nazw nie są uporządkowane w modelu danych XPath.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Metoda MoveToId nie jest obsługiwana dla nawigatorów zwracanych przez tę metodę.The method MoveToId is not supported for navigators that are returned by this method.

W przypadku korzystania XmlNameTable z tej metody w celu XPathNavigatorutworzenia, podczas oceny wyrażeń XPath zostanie uzyskana lepsza wydajność.If you use an XmlNameTable with this method to create the XPathNavigator, you will get better performance when evaluating XPath expressions.

Dotyczy