Extensions.CreateNavigator Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
Gibt zurück
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
- nameTable
- XmlNameTable
Eine XmlNameTable, die vom XPathNavigator verwendet werden soll.
Gibt zurück
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.