XSLT を使用して XML ツリーを変換する (LINQ to XML)
XSLT を使用して XML ツリーを変換できます。読み取りには XmlReader を、書き込みには XmlWriter を使用します。
例: XSLT を使用して XML ツリーを変換する。読み取りには XMLReader
を、書き込みには XMLWriter
を使用する。
この例では XML ツリーを作成し、XSLT を使用してそれを変換します。 XmlReader を使用して元のツリーを読み取り、変換後のバージョンを XmlWriter を使用して書き込みます。
まず、以下が作成されます。
次に、XmlReader を使用して元の XML ツリーを読み取り、変換後のツリーを XmlWriter を使用して新しいドキュメントに書き込む XSLT 変換が呼び出されます。
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)
この例を実行すると、次の出力が生成されます。
<Root>
<C1>Child1 data</C1>
<C2>Child2 data</C2>
</Root>
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示