Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz użyć XSLT, aby przekształcić drzewo XML, używając XmlReader polecenia do odczytu i XmlWriter zapisu.
Przykład: użyj XSLT, aby przekształcić drzewo XML, używając XMLReader
polecenia do odczytywania i XMLWriter
zapisywania
W tym przykładzie utworzono drzewo XML i użyto języka XSLT do jego przekształcenia. XmlReader Używa elementu do odczytywania oryginalnego drzewa i elementu XmlWriter do zapisu przekształconej wersji.
Rozpoczyna się od utworzenia:
- Drzewo XML.
- Element XmlReader drzewa XML.
- Nowy dokument do przechowywania danych wyjściowych XSLT.
- Element XmlWriter umożliwiający zapisanie przekształconego drzewa w nowym dokumencie.
Następnie wywołuje przekształcenie XSLT, które używa XmlReader elementu do odczytania oryginalnego drzewa XML, oraz XmlWriter do zapisania przekształconego drzewa w nowym dokumencie.
string xslt = @"<?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>";
var oldDocument = new XDocument(
new XElement("Parent",
new XElement("Child1", "Child1 data"),
new XElement("Child2", "Child2 data")
)
);
var newDocument = new XDocument();
using (var stringReader = new StringReader(xslt))
{
using (XmlReader xsltReader = XmlReader.Create(stringReader))
{
var transformer = new XslCompiledTransform();
transformer.Load(xsltReader);
using (XmlReader oldDocumentReader = oldDocument.CreateReader())
{
using (XmlWriter newDocumentWriter = newDocument.CreateWriter())
{
transformer.Transform(oldDocumentReader, newDocumentWriter);
}
}
}
}
string result = newDocument.ToString();
Console.WriteLine(result);
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)
Ten przykład generuje następujące wyniki:
<Root>
<C1>Child1 data</C1>
<C2>Child2 data</C2>
</Root>