Freigeben über


XNode.CreateReader Methode

Definition

Erstellt einen XmlReader für diesen Knoten.

Überlädt

Name Beschreibung
CreateReader()

Erstellt einen XmlReader für diesen Knoten.

CreateReader(ReaderOptions)

Erstellt eine XmlReader mit den durch den readerOptions Parameter angegebenen Optionen.

CreateReader()

Quelle:
XNode.cs
Quelle:
XNode.cs
Quelle:
XNode.cs
Quelle:
XNode.cs
Quelle:
XNode.cs

Erstellt einen XmlReader für diesen Knoten.

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

Gibt zurück

Ein XmlReader Element, das zum Lesen dieses Knotens und seiner Nachfolger verwendet werden kann.

Beispiele

Im folgenden Beispiel wird eine XML-Struktur erstellt, eine XmlReader mithilfe der CreateReader Methode erstellt und mithilfe des Readers ein XmlDocument Objekt erstellt.

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)

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Eine weitere Verwendung für diese Methode ist das Ausführen einer XSLT-Transformation. Sie können eine XML-Struktur erstellen, eine XmlReader aus der XML-Struktur erstellen, ein neues Dokument erstellen und ein XmlWriter Dokument erstellen, das in das neue Dokument geschrieben wird. Anschließend können Sie die XSLT-Transformation aufrufen und die XmlReader Transformation übergeben.XmlWriter Nachdem die Transformation erfolgreich abgeschlossen wurde, wird die neue XML-Struktur mit den Ergebnissen der Transformation aufgefüllt.

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)

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Hinweise

In der Regel verwenden Sie diese Methode, wenn Sie eine andere Komponente mit einer XmlReader. Sie können z. B. eine XmlReader VON EINER LINQ to XML-Struktur erstellen und diesen Reader dann an Loadübergeben.

Alle Leser, die von Create ihnen zurückgegeben werden, normalisieren Leser. Sie führen immer die Linienumbruchnormalisierung und die vollständige Normalisierung von Attributen durch. Im Gegensatz dazu ist der XmlReader zurückgegebene Text kein Normalisierungsleser CreateReader . Es transformiert keine Leerzeichen. Außerdem werden Attribute in der Reihenfolge zurückgegeben, in der sie hinzugefügt wurden, nicht in der Attributnamenreihenfolge.

LINQ to XML enthält keine Informationen darüber, ob Attribute Standardattribute sind. IsDefault gibt immer "false" zurück, unabhängig davon, ob das Attribut aus einem Standardwert aufgefüllt wurde.

Die PUBLIC attribute und SYSTEM pseudo attribute on XDocumentType are not available through the XmlReader.MoveToAttribute method. Sie sind nur über die XmlReader.GetAttribute Methode verfügbar, die den qualifizierten Namen des Attributs als Parameter verwendet. Wenn Sie die PUBLIC Attribute abrufen SYSTEM müssen, sollten Sie die XmlReader.GetAttribute Methode verwenden.

Base64- und BinHex-Daten werden nicht unterstützt. Wenn Sie versuchen, diese Datentypen abzurufen (z. B. durch Aufrufen ReadElementContentAsBase64), löst der Leser aus NotSupportedException.

Die xml Deklaration wird vom Leser nicht angezeigt. Beim Lesen wird kein Knoten vom Typ XmlDeclarationangezeigt.

Weitere Informationen

Gilt für:

CreateReader(ReaderOptions)

Quelle:
XNode.cs
Quelle:
XNode.cs
Quelle:
XNode.cs
Quelle:
XNode.cs
Quelle:
XNode.cs

Erstellt eine XmlReader mit den durch den readerOptions Parameter angegebenen Optionen.

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

Ein ReaderOptions Objekt, das angibt, ob doppelte Namespaces weggelassen werden sollen.

Gibt zurück

Ein XmlReader-Objekt.

Gilt für: