Freigeben über


Extensions.CreateNavigator Methode

Definition

Erstellt einen XPathNavigator für einen XNode.

Überlädt

CreateNavigator(XNode)

Erstellt einen XPathNavigator für einen XNode.

CreateNavigator(XNode, XmlNameTable)

Erstellt einen XPathNavigator für einen XNode. Die XmlNameTable ermöglicht eine effizientere Verarbeitung von XPath-Ausdrücken.

Hinweise

Sie können die XPathNavigator XML-Struktur nicht mithilfe der von dieser Methode zurückgegebenen XML-Struktur bearbeiten. Die CanEdit-Eigenschaft gibt false zurück.

Sie können keinen XPathNavigator XDocumentType Knoten erstellen. Dokumenttypen nehmen nicht an dem XPath-Datenmodell teil.

Namespacedeklarationen werden von links nach rechts gemeldet. Im Gegensatz XmlDocumentdazu werden Namespaces von rechts nach links gemeldet. Dies ist konformes Verhalten, da Namespacedeklarationen nicht im XPath-Datenmodell angeordnet sind.

Die Methode wird für Navigatoren, die von dieser Methode MoveToId zurückgegeben werden, nicht unterstützt.

Sie können diese Methode verwenden, um eine XSLT-Transformation auszuführen. Sie können eine XML-Struktur erstellen, eine aus der XML-Struktur erstellen, XPathNavigator ein neues Dokument erstellen und ein XmlWriter neues Dokument erstellen, das in das neue Dokument geschrieben wird. Anschließend können Sie die XSLT-Transformation aufrufen und den XPathNavigator sowie den XmlWriter an die Transformation übergeben. Nach erfolgreichem Abschluss der Transformation wird die neue XML-Struktur mit den Ergebnissen der Transformation aufgefüllt.

Um eine XSLT-Transformation auszuführen, können Sie entweder eine oder eine XmlReader XPathNavigator. Die beiden Ansätze weisen unterschiedliche Leistungseigenschaften auf. Einige Transformationen werden schneller ausgeführt, wenn eine XmlReaderVerwendung verwendet wird, und andere werden schneller ausgeführt, wenn eine XPathNavigatorVerwendung verwendet wird. Wenn die Leistung ein Anliegen ist, empfehlen wir, mit jedem Ansatz zu experimentieren, um zu ermitteln, welche in Ihren Umständen besser funktionieren.

CreateNavigator(XNode)

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

Ein XNode, der XPath-Abfragen verarbeiten kann.

Gibt zurück

XPathNavigator

Ein XPathNavigator, der XPath-Abfragen verarbeiten kann.

Beispiele

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)  

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Hinweise

Sie können die XPathNavigator XML-Struktur nicht mithilfe der von dieser Methode zurückgegebenen XML-Struktur bearbeiten. Die CanEdit-Eigenschaft gibt false zurück.

Sie können keinen XPathNavigator XDocumentType Knoten erstellen. Dokumenttypen nehmen nicht an dem XPath-Datenmodell teil.

Namespacedeklarationen werden von links nach rechts gemeldet. Im Gegensatz dazu werden namespaces XmlDocument von rechts nach links gemeldet. Dies ist konformes Verhalten, da Namespacedeklarationen nicht im XPath-Datenmodell angeordnet sind.

Die Methode wird für Navigatoren, die von dieser Methode MoveToId zurückgegeben werden, nicht unterstützt.

Sie können diese Methode verwenden, um eine XSLT-Transformation auszuführen. Sie können eine XML-Struktur erstellen, eine aus der XML-Struktur erstellen, XPathNavigator ein neues Dokument erstellen und ein XmlWriter neues Dokument erstellen, das in das neue Dokument geschrieben wird. Anschließend können Sie die XSLT-Transformation aufrufen, die XPathNavigator Transformation übergeben und XmlWriter an die Transformation übergeben. Nach erfolgreichem Abschluss der Transformation wird die neue XML-Struktur mit den Ergebnissen der Transformation aufgefüllt.

Um eine XSLT-Transformation auszuführen, können Sie entweder eine oder eine XmlReader XPathNavigator. Die beiden Ansätze weisen unterschiedliche Leistungseigenschaften auf. Einige Transformationen werden schneller ausgeführt, wenn eine XmlReaderVerwendung verwendet wird, und andere werden schneller ausgeführt, wenn eine XPathNavigatorVerwendung verwendet wird. Wenn die Leistung ein Anliegen ist, empfehlen wir, mit jedem Ansatz zu experimentieren, um zu ermitteln, welche in Ihren Umständen besser funktionieren.

Gilt für

CreateNavigator(XNode, XmlNameTable)

Erstellt einen XPathNavigator für einen XNode. Die XmlNameTable ermöglicht eine effizientere Verarbeitung von XPath-Ausdrücken.

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

Parameter

node
XNode

Ein XNode, der eine XPath-Abfrage verarbeiten kann.

nameTable
XmlNameTable

Eine XmlNameTable, die vom XPathNavigator verwendet werden soll.

Gibt zurück

XPathNavigator

Ein XPathNavigator, der XPath-Abfragen verarbeiten kann.

Hinweise

Sie können die XPathNavigator XML-Struktur nicht mithilfe der von dieser Methode zurückgegebenen XML-Struktur bearbeiten. Die CanEdit-Eigenschaft gibt false zurück.

Sie können keinen XPathNavigator XDocumentType Knoten erstellen. Dokumenttypen nehmen nicht an dem XPath-Datenmodell teil.

Namespacedeklarationen werden von links nach rechts gemeldet. Im Gegensatz dazu werden namespaces XmlDocument von rechts nach links gemeldet. Dies ist konformes Verhalten, da Namespacedeklarationen nicht im XPath-Datenmodell angeordnet sind.

Die Methode wird für Navigatoren, die von dieser Methode MoveToId zurückgegeben werden, nicht unterstützt.

Wenn Sie eine XmlNameTable mit dieser Methode zum Erstellen verwenden, erhalten Sie bei der XPathNavigatorAuswertung von XPath-Ausdrücken eine bessere Leistung.

Gilt für