1. ホーム
  2. c#

[解決済み】XML文字列をフォーマットして、フレンドリーなXML文字列を印刷する

2022-04-11 05:16:29

質問

このようなXML文字列があります。

<?xml version='1.0'?><response><error code='1'> Success</error></response>

ある要素と別の要素の間に行がないため、非常に読みにくい。上記の文字列を整形する関数が欲しい。

<?xml version='1.0'?>
<response>
<error code='1'> Success</error>
</response> 

自分でフォーマット関数を手動で書くという手段に頼らずに、すぐに使える.Netライブラリやコードスニペットはありますか?

どのように解決するのですか?

使用方法 XmlTextWriter ...

public static string PrintXML(string xml)
{
    string result = "";

    MemoryStream mStream = new MemoryStream();
    XmlTextWriter writer = new XmlTextWriter(mStream, Encoding.Unicode);
    XmlDocument document = new XmlDocument();

    try
    {
        // Load the XmlDocument with the XML.
        document.LoadXml(xml);

        writer.Formatting = Formatting.Indented;

        // Write the XML into a formatting XmlTextWriter
        document.WriteContentTo(writer);
        writer.Flush();
        mStream.Flush();

        // Have to rewind the MemoryStream in order to read
        // its contents.
        mStream.Position = 0;

        // Read MemoryStream contents into a StreamReader.
        StreamReader sReader = new StreamReader(mStream);

        // Extract the text from the StreamReader.
        string formattedXml = sReader.ReadToEnd();

        result = formattedXml;
    }
    catch (XmlException)
    {
        // Handle the exception
    }

    mStream.Close();
    writer.Close();

    return result;
}