Vorgehensweise: Füllen eines XML-Baums mit einem XmlWriter (LINQ to XML) (C#)How to: Populate an XML Tree with an XmlWriter (LINQ to XML) (C#)

Eine Möglichkeit, eine XML-Struktur aufzufüllen, besteht darin, mit CreateWriter einen XmlWriter zu erstellen und dann in den XmlWriter zu schreiben.One way to populate an XML tree is to use CreateWriter to create an XmlWriter, and then write to the XmlWriter. Die XML-Struktur wird mit allen Knoten aufgefüllt, die in den XmlWriter geschrieben werden.The XML tree is populated with all nodes that are written to the XmlWriter.

Diese Methode kommt in der Regel zum Einsatz, wenn Sie LINQ to XML mit einer anderen Klasse verwenden, die davon ausgeht, dass sie in einen XmlWriter, z.B. XslCompiledTransform, schreibt.You would typically use this method when you use LINQ to XML with another class that expects to write to an XmlWriter, such as XslCompiledTransform.

BeispielExample

CreateWriter kann beispielsweise verwendet werden, wenn eine XSLT-Transformation aufgerufen wird.One possible use for CreateWriter is when invoking an XSLT transformation. In diesem Beispiel wird zunächst eine XML-Struktur erstellt, aus der dann ein XmlReader erstellt wird. Anschließend wird ein neues Dokument angelegt und dann für das Schreiben in das neue Dokument ein XmlWriter erstellt.This example creates an XML tree, creates an XmlReader from the XML tree, creates a new document, and then creates an XmlWriter to write into the new document. Nachfolgend wird die XSLT-Transformation aufgerufen, wobei XmlReader und XmlWriter verwendet werden.It then invokes the XSLT transformation, passing in XmlReader and XmlWriter. Nach erfolgreichem Abschluss der Transformation wird die neue XML-Struktur mit den Ergebnissen der Transformation aufgefüllt.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

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 transformation and output the results to a writer.  
    xslt.Transform(xmlTree.CreateReader(), writer);  
}  

Console.WriteLine(newTree);  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

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

Siehe auchSee Also

CreateWriter
XmlWriter
XslCompiledTransform
Creating XML Trees (C#) (Erstellen von XML-Strukturen (C#))Creating XML Trees (C#)