Xml到文本转换

Pom*_*ter 4 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>
Run Code Online (Sandbox Code Playgroud)

会成为:

To Tove
From Jani
Heading Reminder
Body don't forget me this weekend!
Run Code Online (Sandbox Code Playgroud)

有没有这样的事情?我该怎么做呢?

这只是粗暴的想法,我仍然需要大量的工作:

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();
            }
        }
Run Code Online (Sandbox Code Playgroud)

Ste*_*art 6

以下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>
Run Code Online (Sandbox Code Playgroud)

然后您可以使用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();
}
Run Code Online (Sandbox Code Playgroud)

它显然比人们发布的其他解决方案更复杂,但它的主要优点是,如果您需要更改格式,可以轻松更改脚本.


Sim*_*ier 5

像这样的东西:

    XmlDocument doc = new XmlDocument();
    doc.LoadXml(your text string);

    StringBuilder sb = new StringBuilder();
    foreach (XmlNode node in doc.DocumentElement.ChildNodes)
    {
        sb.Append(char.ToUpper(node.Name[0]));
        sb.Append(node.Name.Substring(1));
        sb.Append(' ');
        sb.AppendLine(node.InnerText);
    }

    Console.WriteLine(sb);
Run Code Online (Sandbox Code Playgroud)