Bagikan melalui


XNode.CreateReader Metode

Definisi

XmlReader Membuat untuk simpul ini.

Overload

Nama Deskripsi
CreateReader()

XmlReader Membuat untuk simpul ini.

CreateReader(ReaderOptions)

XmlReader Membuat dengan opsi yang ditentukan oleh readerOptions parameter .

CreateReader()

Sumber:
XNode.cs
Sumber:
XNode.cs
Sumber:
XNode.cs
Sumber:
XNode.cs
Sumber:
XNode.cs

XmlReader Membuat untuk simpul ini.

public:
 System::Xml::XmlReader ^ CreateReader();
public System.Xml.XmlReader CreateReader();
member this.CreateReader : unit -> System.Xml.XmlReader
Public Function CreateReader () As XmlReader

Mengembalikan

Yang XmlReader dapat digunakan untuk membaca simpul ini dan keturunannya.

Contoh

Contoh berikut membuat pohon XML, membuat XmlReader dengan menggunakan CreateReader metode , dan membuat XmlDocument dengan menggunakan pembaca.

XDocument xmlTree = new XDocument(
    new XElement("Root",
        new XAttribute("Att1", "Attribute Content"),
        new XElement("Child1", 1),
        new XElement("Child2", 2)
    )
);
XmlReader reader = xmlTree.CreateReader();
reader.MoveToContent();
XmlDocument doc = new XmlDocument();
XmlNode cd = doc.ReadNode(reader);
doc.AppendChild(cd);
Console.WriteLine(doc.OuterXml);
Dim xmlTree As XDocument =  _
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
        <Root Att1="Attribute Content">
            <Child1>1</Child1>
            <Child2>2</Child2>
        </Root>
Dim reader As XmlReader = xmlTree.CreateReader()
reader.MoveToContent()
Dim doc As XmlDocument = New XmlDocument()
Dim cd As XmlNode = doc.ReadNode(reader)
doc.AppendChild(cd)
Console.WriteLine(doc.OuterXml)

Contoh ini menghasilkan output berikut:

<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>

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

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.CreateReader(), 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 XElement = _
        <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.CreateReader(), writer)
End Using

Console.WriteLine(newTree)

Contoh ini menghasilkan output berikut:

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

Keterangan

Anda biasanya menggunakan metode ini ketika Anda harus menyediakan komponen lain dengan XmlReader. Misalnya, Anda dapat membuat XmlReader dari pohon LINQ ke XML, lalu meneruskan pembaca tersebut ke Load.

Semua pembaca yang dikembalikan dengan Create menormalkan pembaca. Mereka selalu melakukan normalisasi pemutusan baris dan normalisasi atribut penuh. Sebaliknya, yang XmlReader dikembalikan oleh CreateReader bukan pembaca normalisasi. Ini tidak mengubah ruang kosong apa pun. Ini juga mengembalikan atribut dalam urutan ditambahkan, bukan dalam urutan nama atribut.

LINQ ke XML tidak menyimpan informasi tentang apakah atribut adalah atribut default. IsDefault akan selalu mengembalikan false terlepas dari apakah atribut diisi dari nilai default atau tidak.

SYSTEM Atribut PUBLIC pseudo dan aktif XDocumentType tidak tersedia melalui XmlReader.MoveToAttribute metode . Mereka hanya tersedia melalui XmlReader.GetAttribute metode yang mengambil nama atribut yang memenuhi syarat sebagai parameter. Jika Anda harus mengambil PUBLIC atribut atau SYSTEM , Anda harus menggunakan metode .XmlReader.GetAttribute

Data Base64 dan BinHex tidak didukung. Jika Anda mencoba mengambil jenis data ini (misalnya, dengan memanggil ReadElementContentAsBase64), pembaca akan melemparkan NotSupportedException.

xml Deklarasi tidak muncul oleh pembaca. Saat membaca, Anda tidak akan menemukan node jenis XmlDeclaration.

Lihat juga

Berlaku untuk

CreateReader(ReaderOptions)

Sumber:
XNode.cs
Sumber:
XNode.cs
Sumber:
XNode.cs
Sumber:
XNode.cs
Sumber:
XNode.cs

XmlReader Membuat dengan opsi yang ditentukan oleh readerOptions parameter .

public:
 System::Xml::XmlReader ^ CreateReader(System::Xml::Linq::ReaderOptions readerOptions);
public System.Xml.XmlReader CreateReader(System.Xml.Linq.ReaderOptions readerOptions);
member this.CreateReader : System.Xml.Linq.ReaderOptions -> System.Xml.XmlReader
Public Function CreateReader (readerOptions As ReaderOptions) As XmlReader

Parameter

readerOptions
ReaderOptions

Objek ReaderOptions yang menentukan apakah akan menghilangkan namespace duplikat.

Mengembalikan

Sebuah objekXmlReader.

Berlaku untuk