c# - XML 到文本转换

标签 c# xml string converter

我想用 C# 编写一些东西,它接受 Xml 并将其转换为纯文本。

<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

会变成:

To Tove
From Jani
Heading Reminder
Body don't forget me this weekend!

有这样的东西吗?我该怎么做呢?

粗略地说,我要实现的想法还需要大量工作:

private void dataGridViewResult_SelectionChanged(object sender, EventArgs e)
        {
            if (this.dataGridViewResult.SelectedRows.Count > 0)
            {
                XslCompiledTransform xslt = new XslCompiledTransform();
                xslt.Load("SQL"); //.xml

                xslt.Transform("SQL","SQL"); //.xml, .html
                this.richTextBoxSQL.Text = this.dataGridViewResult.SelectedRows[0].Cells["SQL"].Value.ToString();
            }
        }

最佳答案

以下 XSLT 脚本将执行您想要的操作:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="*">
        <xsl:for-each select="*">
            <xsl:value-of select="local-name()"/>
            <xsl:text> </xsl:text>
            <xsl:value-of  select="."/>
            <xsl:text>
</xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

然后您可以使用 XslCompiledTransform 类来应用脚本:

private string transformXml(string sourceXmlText, string xsltText)
{
    XmlDocument sourceXmlDocument = new XmlDocument();
    sourceXmlDocument.LoadXml(sourceXmlText);
    XslCompiledTransform transformer = new XslCompiledTransform();
    XmlTextReader xsltReader = new XmlTextReader(new StringReader(xsltText));
    transformer.Load(xsltReader);
    MemoryStream outputStream = new MemoryStream();
    XmlWriter xmlWriter = XmlWriter.Create(outputStream, transformer.OutputSettings);
    transformer.Transform(sourceXmlDocument, null, xmlWriter);
    outputStream.Position = 0;
    StreamReader streamReader = new StreamReader(outputStream);
    return streamReader.ReadToEnd();
}

它显然比人们发布的其他解决方案更复杂,但它的主要优点是能够在需要更改格式时轻松更改脚本。

关于c# - XML 到文本转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10980237/

相关文章:

c# - 使用 Linq-To-Entities 时可以创建嵌套类吗?

php - 如何使用 phpstorm 评估特定命名空间的 xpath?

c - 如何在 C 中打开 4 个字符的字符串?

php - 分别生成64个字符的十六进制字符串

c# - 如何在代码隐藏中添加 <%= %> 标签

c# - 无法在 TextBox 样式上设置 CornerRadius

java - 如何构建 HTML org.w3c.dom.Document?

xml - 自动使用 Vim 和 XML 进行拼写检查

string - 比较两个字符串产生一个数字增量

c# - 在 C# 中,是否可以循环遍历相同基类型的多个集合?