Serialisieren in einen XmlReader (XSLT aufrufen) (C#)Serializing to an XmlReader (Invoking XSLT) (C#)

Wenn Sie die System.Xml-Interoperabilitätsfunktionen von LINQ to XML verwenden, können Sie CreateReader verwenden, um einen XmlReader zu erstellen.When you use the System.Xml interoperability capabilities of LINQ to XML, you can use CreateReader to create an XmlReader. Das Modul, das aus diesem XmlReader liest, liest die Knoten aus der XML-Struktur und verarbeitet sie entsprechend.The module that reads from this XmlReader reads the nodes from the XML tree and processes them accordingly.

Aufrufen einer XSLT-TransformationInvoking an XSLT Transformation

Diese Methode kann z. B. zum Aufrufen einer XSLT-Transformation verwendet werden.One possible use for this method is when invoking an XSLT transformation. Sie können eine XML-Struktur erstellen, einen XmlReader aus der XML-Struktur erstellen, ein neues Dokument erstellen und dann einen XmlWriter zum Schreiben in das neue Dokument erstellen.You can create an XML tree, create an XmlReader from the XML tree, create a new document, and then create an XmlWriter to write into the new document. Anschließend können Sie die XSLT-Transformation starten, indem Sie XmlReader und XmlWriter übergeben.Then, you can invoke 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

Serialisieren von XML-Strukturen (C#)Serializing XML Trees (C#)