XNode.CreateReader Methode

Definition

Erstellt einen XmlReader für diesen Knoten.

Überlädt

CreateReader()

Erstellt einen XmlReader für diesen Knoten.

CreateReader(ReaderOptions)

Erstellt einen XmlReader mit den im readerOptions-Parameter angegebenen Optionen.

CreateReader()

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

XmlReader

Ein XmlReader, der zum Lesen dieses Knotens und seiner Nachfolgerelemente 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 besteht darin, eine XSLT-Transformation zu erledigen. Sie können eine XML-Struktur erstellen, einen XmlReader aus der XML-Struktur erstellen, ein neues Dokument erstellen und dann einen XmlWriter erstellen, der in das neue Dokument schreibt. Anschließend können Sie die XSLT-Transformation aufrufen und den XmlReader sowie den XmlWriter an die Transformation übergeben. Nach erfolgreichem Abschluss der Transformation 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

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

Alle von ihnen zurückgegebenen Create Leser werden normalisiert. Sie führen immer die Linienumbruch normalisierung und vollständige Normalisierung von Attributen aus. Im Gegensatz dazu ist die XmlReader zurückgegebene Leseausgabe kein Normalisierungsleser CreateReader . Es transformiert keinen Leerraum. Es gibt auch Attribute in der Reihenfolge zurück, 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 ausgefüllt wurde oder nicht.

SYSTEM Die PUBLIC und Pseudoattribute XDocumentType sind über die XmlReader.MoveToAttribute Methode nicht verfügbar. Sie sind nur über die XmlReader.GetAttribute Methode verfügbar, die den qualifizierten Namen des Attributs als Parameter verwendet. Wenn Sie die Attribute abrufen SYSTEM müssen, sollten Sie die PUBLIC XmlReader.GetAttribute Methode verwenden.

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

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

Siehe auch

Gilt für

CreateReader(ReaderOptions)

Erstellt einen XmlReader mit den im 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 ausgelassen werden sollen.

Gibt zurück

XmlReader

Ein XmlReader-Objekt.

Gilt für