Bagikan melalui


Extensions.CreateNavigator Metode

Definisi

XPathNavigator Membuat untuk XNode.

Overload

Nama Deskripsi
CreateNavigator(XNode)

XPathNavigator Membuat untuk XNode.

CreateNavigator(XNode, XmlNameTable)

XPathNavigator Membuat untuk XNode. memungkinkan XmlNameTable pemrosesan ekspresi XPath yang lebih efisien.

Keterangan

Anda tidak dapat mengedit pohon XML dengan menggunakan XPathNavigator yang dikembalikan oleh metode ini. Properti CanEdit mengembalikan false.

Anda tidak dapat membuat XPathNavigator untuk simpul XDocumentType . Jenis dokumen tidak berpartisipasi dalam model data XPath.

Deklarasi namespace dilaporkan dari kiri ke kanan. Sebaliknya, untuk XmlDocument, namespace dilaporkan dari kanan ke kiri. Ini adalah perilaku yang sesuai karena deklarasi namespace tidak diurutkan dalam model data XPath.

Metode MoveToId ini tidak didukung untuk navigator yang dikembalikan oleh metode ini.

Anda dapat menggunakan metode ini untuk melakukan transformasi XSLT. Anda bisa membuat pohon XML, membuat XPathNavigator dari pohon XML, membuat dokumen baru, dan membuat XmlWriter yang akan menulis ke dalam dokumen baru. Kemudian, Anda dapat memanggil transformasi XSLT, meneruskan XPathNavigator dan XmlWriter ke transformasi. Setelah transformasi berhasil diselesaikan, pohon XML baru diisi dengan hasil transformasi.

Untuk melakukan transformasi XSLT, Anda dapat menggunakan XmlReader atau XPathNavigator. Kedua pendekatan tersebut memiliki karakteristik performa yang berbeda. Beberapa transformasi akan dijalankan lebih cepat saat menggunakan , dan yang XmlReaderlain akan dijalankan lebih cepat saat menggunakan XPathNavigator. Jika performa menjadi perhatian, kami sarankan Anda bereksperimen dengan setiap pendekatan untuk menentukan mana yang akan berkinerja lebih baik dalam keadaan Anda.

CreateNavigator(XNode)

Sumber:
XNodeNavigator.cs
Sumber:
XNodeNavigator.cs
Sumber:
XNodeNavigator.cs
Sumber:
XNodeNavigator.cs
Sumber:
XNodeNavigator.cs

XPathNavigator Membuat untuk 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

Yang XNode dapat memproses kueri XPath.

Mengembalikan

Yang XPathNavigator dapat memproses kueri XPath.

Contoh

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)

Contoh ini menghasilkan output berikut:

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

Keterangan

Anda tidak dapat mengedit pohon XML dengan menggunakan XPathNavigator yang dikembalikan oleh metode ini. Properti CanEdit mengembalikan false.

Anda tidak dapat membuat XPathNavigator untuk simpul XDocumentType . Jenis dokumen tidak berpartisipasi dalam model data XPath.

Deklarasi namespace dilaporkan dari kiri ke kanan. Sebaliknya, untuk XmlDocument namespace dilaporkan dari kanan ke kiri. Ini adalah perilaku yang sesuai karena deklarasi namespace tidak diurutkan dalam model data XPath.

Metode MoveToId ini tidak didukung untuk navigator yang dikembalikan oleh metode ini.

Anda dapat menggunakan metode ini untuk melakukan transformasi XSLT. Anda bisa membuat pohon XML, membuat XPathNavigator dari pohon XML, membuat dokumen baru, dan membuat XmlWriter yang akan menulis ke dalam dokumen baru. Kemudian, Anda dapat memanggil transformasi XSLT, meneruskan XPathNavigator dan XmlWriter ke transformasi. Setelah transformasi berhasil diselesaikan, pohon XML baru diisi dengan hasil transformasi.

Untuk melakukan transformasi XSLT, Anda dapat menggunakan XmlReader atau XPathNavigator. Kedua pendekatan tersebut memiliki karakteristik performa yang berbeda. Beberapa transformasi akan dijalankan lebih cepat saat menggunakan , dan yang XmlReaderlain akan dijalankan lebih cepat saat menggunakan XPathNavigator. Jika performa menjadi perhatian, kami sarankan Anda bereksperimen dengan setiap pendekatan untuk menentukan mana yang akan berkinerja lebih baik dalam keadaan Anda.

Berlaku untuk

CreateNavigator(XNode, XmlNameTable)

Sumber:
XNodeNavigator.cs
Sumber:
XNodeNavigator.cs
Sumber:
XNodeNavigator.cs
Sumber:
XNodeNavigator.cs
Sumber:
XNodeNavigator.cs

XPathNavigator Membuat untuk XNode. memungkinkan XmlNameTable pemrosesan ekspresi XPath yang lebih efisien.

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

Yang XNode dapat memproses kueri XPath.

nameTable
XmlNameTable

yang XmlNameTable akan digunakan oleh XPathNavigator.

Mengembalikan

Yang XPathNavigator dapat memproses kueri XPath.

Keterangan

Anda tidak dapat mengedit pohon XML menggunakan XPathNavigator yang dikembalikan oleh metode ini. Properti CanEdit mengembalikan false.

Anda tidak dapat membuat XPathNavigator untuk simpul XDocumentType . Jenis dokumen tidak berpartisipasi dalam model data XPath.

Deklarasi namespace dilaporkan dari kiri ke kanan. Sebaliknya, untuk XmlDocument namespace dilaporkan dari kanan ke kiri. Ini adalah perilaku yang sesuai karena deklarasi namespace tidak diurutkan dalam model data XPath.

Metode MoveToId ini tidak didukung untuk navigator yang dikembalikan oleh metode ini.

Jika Anda menggunakan XmlNameTable dengan metode ini untuk membuat XPathNavigator, Anda akan mendapatkan performa yang lebih baik saat mengevaluasi ekspresi XPath.

Berlaku untuk