Extensions.CreateNavigator Extensions.CreateNavigator Extensions.CreateNavigator Extensions.CreateNavigator Method

Definition

Erstellt einen XPathNavigator für einen XNode.Creates an XPathNavigator for an XNode.

Überlädt

CreateNavigator(XNode) CreateNavigator(XNode) CreateNavigator(XNode) CreateNavigator(XNode)

Erstellt einen XPathNavigator für einen XNode.Creates an XPathNavigator for an XNode.

CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable)

Erstellt einen XPathNavigator für einen XNode.Creates an XPathNavigator for an XNode. Die XmlNameTable ermöglicht eine effizientere Verarbeitung von XPath-Ausdrücken.The XmlNameTable enables more efficient XPath expression processing.

Hinweise

Die XML-Struktur kann nicht mit dem bearbeitet XPathNavigator werden, der von dieser Methode zurückgegeben wird.You cannot edit the XML tree by using the XPathNavigator that is returned by this method. Die CanEdit-Eigenschaft gibt false zurück.The CanEdit property returns false.

Für einen XPathNavigator XDocumentType Knoten kann kein erstellt werden.You cannot create an XPathNavigator for a XDocumentType node. Dokumenttypen sind nicht Teil des XPath-Datenmodells.Document types do not participate in the XPath data model.

Namespace Deklarationen werden von links nach rechts gemeldet.Namespace declarations are reported from left to right. Im Gegensatz dazu werden XmlDocument für Namespaces von rechts nach Links gemeldet.In contrast, for XmlDocument namespaces are reported from right to left. Dies ist ein konformes Verhalten, da Namespace Deklarationen nicht im XPath-Datenmodell geordnet sind.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Die- MoveToId Methode wird für Navigatoren, die von dieser Methode zurückgegeben werden, nicht unterstützt.The method MoveToId is not supported for navigators that are returned by this method.

Sie können diese Methode verwenden, um eine XSLT-Transformation auszuführen.You can use this method to perform an XSLT transformation. Sie können eine XML-Struktur erstellen, einen XPathNavigator aus der XML-Struktur erstellen, ein neues Dokument erstellen und einen XmlWriter erstellen, der in das neue Dokument schreibt.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. Anschließend können Sie die XSLT-Transformation aufrufen und den XPathNavigator sowie den XmlWriter an die Transformation übergeben.Then, you can invoke the XSLT transformation, passing the XPathNavigator and XmlWriter to the transformation. Nach erfolgreichem Abschluss der Transformation wird die neue XML-Struktur mit den Ergebnissen der Transformation aufgefüllt.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

Zum Ausführen einer XSLT-Transformation können Sie entweder XmlReader XPathNavigatoroder verwenden.To perform an XSLT transformation, you can use either an XmlReader or an XPathNavigator. Die beiden Ansätze weisen unterschiedliche Leistungsmerkmale auf.The two approaches have different performance characteristics. Einige Transformationen werden schneller ausgeführt XmlReader, wenn ein verwendet wird, und andere werden schneller ausgeführt, wenn eine XPathNavigatorverwendet wird.Some transformations will execute faster when using an XmlReader, and others will execute faster when using a XPathNavigator. Wenn die Leistung von Bedeutung ist, empfiehlt es sich, jeden Ansatz zu experimentieren, um zu ermitteln, welche in Ihren Umständen besser geeignet ist.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)  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

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

CreateNavigator(XNode) CreateNavigator(XNode) CreateNavigator(XNode) CreateNavigator(XNode)

Erstellt einen XPathNavigator für einen 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

Parameter

node
XNode XNode XNode XNode

Ein XNode, der XPath-Abfragen verarbeiten kann.An XNode that can process XPath queries.

Gibt zurück

Ein XPathNavigator, der XPath-Abfragen verarbeiten kann.An XPathNavigator that can process XPath queries.

Beispiele

  
                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)  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

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

Hinweise

Die XML-Struktur kann nicht mit dem bearbeitet XPathNavigator werden, der von dieser Methode zurückgegeben wird.You cannot edit the XML tree by using the XPathNavigator that is returned by this method. Die CanEdit-Eigenschaft gibt false zurück.The CanEdit property returns false.

Für einen XPathNavigator XDocumentType Knoten kann kein erstellt werden.You cannot create an XPathNavigator for a XDocumentType node. Dokumenttypen sind nicht Teil des XPath-Datenmodells.Document types do not participate in the XPath data model.

Namespace Deklarationen werden von links nach rechts gemeldet.Namespace declarations are reported from left to right. Im Gegensatz dazu werden XmlDocument für Namespaces von rechts nach Links gemeldet.In contrast, for XmlDocument namespaces are reported from right to left. Dies ist ein konformes Verhalten, da Namespace Deklarationen nicht im XPath-Datenmodell geordnet sind.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Die- MoveToId Methode wird für Navigatoren, die von dieser Methode zurückgegeben werden, nicht unterstützt.The method MoveToId is not supported for navigators that are returned by this method.

Sie können diese Methode verwenden, um eine XSLT-Transformation auszuführen.You can use this method to perform an XSLT transformation. Sie können eine XML-Struktur erstellen, einen XPathNavigator aus der XML-Struktur erstellen, ein neues Dokument erstellen und einen XmlWriter erstellen, der in das neue Dokument schreibt.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. Anschließend können Sie die XSLT XPathNavigator -Transformation aufrufen und XmlWriter an die Transformation übergeben.Then, you can invoke the XSLT transformation, passing the XPathNavigator and XmlWriter to the transform. Nach erfolgreichem Abschluss der Transformation wird die neue XML-Struktur mit den Ergebnissen der Transformation aufgefüllt.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

Zum Ausführen einer XSLT-Transformation können Sie entweder XmlReader XPathNavigatoroder verwenden.To perform an XSLT transformation, you can use either an XmlReader or an XPathNavigator. Die beiden Ansätze weisen unterschiedliche Leistungsmerkmale auf.The two approaches have different performance characteristics. Einige Transformationen werden schneller ausgeführt XmlReader, wenn ein verwendet wird, und andere werden schneller ausgeführt, wenn eine XPathNavigatorverwendet wird.Some transformations will execute faster when using an XmlReader, and others will execute faster when using a XPathNavigator. Wenn die Leistung von Bedeutung ist, empfiehlt es sich, jeden Ansatz zu experimentieren, um zu ermitteln, welche in Ihren Umständen besser geeignet ist.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) CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable) CreateNavigator(XNode, XmlNameTable)

Erstellt einen XPathNavigator für einen XNode.Creates an XPathNavigator for an XNode. Die XmlNameTable ermöglicht eine effizientere Verarbeitung von XPath-Ausdrücken.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

Parameter

node
XNode XNode XNode XNode

Ein XNode, der eine XPath-Abfrage verarbeiten kann.An XNode that can process an XPath query.

nameTable
XmlNameTable XmlNameTable XmlNameTable XmlNameTable

Eine XmlNameTable, die vom XPathNavigator verwendet werden soll.A XmlNameTable to be used by XPathNavigator.

Gibt zurück

Ein XPathNavigator, der XPath-Abfragen verarbeiten kann.An XPathNavigator that can process XPath queries.

Hinweise

Die XML-Struktur kann nicht mit dem XPathNavigator bearbeitet werden, der von dieser Methode zurückgegeben wird.You cannot edit the XML tree using the XPathNavigator that is returned by this method. Die CanEdit-Eigenschaft gibt false zurück.The CanEdit property returns false.

Für einen XPathNavigator XDocumentType Knoten kann kein erstellt werden.You cannot create an XPathNavigator for a XDocumentType node. Dokumenttypen sind nicht Teil des XPath-Datenmodells.Document types do not participate in the XPath data model.

Namespace Deklarationen werden von links nach rechts gemeldet.Namespace declarations are reported from left to right. Im Gegensatz dazu werden XmlDocument für Namespaces von rechts nach Links gemeldet.In contrast, for XmlDocument namespaces are reported from right to left. Dies ist ein konformes Verhalten, da Namespace Deklarationen nicht im XPath-Datenmodell geordnet sind.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

Die- MoveToId Methode wird für Navigatoren, die von dieser Methode zurückgegeben werden, nicht unterstützt.The method MoveToId is not supported for navigators that are returned by this method.

Wenn Sie mit dieser XmlNameTable Methode zum Erstellen des XPathNavigatorverwenden, erhalten Sie bei der Auswertung von XPath-Ausdrücken eine bessere Leistung.If you use an XmlNameTable with this method to create the XPathNavigator, you will get better performance when evaluating XPath expressions.

Gilt für: