Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Möglichkeit, eine XML-Struktur aufzufüllen, besteht darin, mit CreateWriter einen XmlWriter zu erstellen und dann in den XmlWriter zu schreiben. Die XML-Struktur wird mit allen Knoten aufgefüllt, die in den XmlWriter geschrieben werden.
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.
Beispiel: Erstellen eines XmlWriters zum Akzeptieren der Ausgabe einer XSLT-Transformation
Sie können CreateWriter verwenden, um einen XmlWriter zu erstellen, der die Ausgabe einer XSLT-Transformation akzeptiert. Dies wird im folgenden Beispiel gezeigt, das die folgenden Aktionen ausführt:
- Erstellt eine XML-Struktur und einen XmlReader, um damit aus ihr zu lesen.
- Erstellt eine neue Struktur und einen XmlWriter, um damit in sie zu schreiben.
- Ruft die XSLT-Transformation auf und stellt ihr den XmlReader und den XmlWriter bereit.
Die Transformation füllt dann die neue Struktur auf.
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);
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 XDocument = _
<?xml version='1.0'?>
<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 transformation 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>