5

.net で xml 文字列を取得して読みやすくする方法はありますか? つまり、これを変換できますか:

<element1><element2>some data</element2></element1>

これに:

<element1>
    <element2>
        some data
    </element2>
</element1>

このための組み込みクラスはありますか?SQL Server 2005は、スペースなどを節約するためにxmlのすべてのフォーマットを削除しているようです...

4

5 に答える 5

16

.NET 3.5 を使用している場合は、それを としてロードし、XDocument適切にインデントする ToString() を呼び出すだけです。例えば:

using System;
using System.Xml.Linq;

public class Test
{
    static void Main()
    {
        string xml = "<element1><element2>some data</element2></element1>";

        XDocument doc = XDocument.Parse(xml);
        xml = doc.ToString();
        Console.WriteLine(xml);
    }
}

結果:

<element1>
  <element2>some data</element2>
</element1>

ファイルまたは他のストリームに書き込んでいる場合は、XDocument.Save(デフォルトで) それもインデントされます。

XElement実際に が必要ない場合は、すべて同じ機能があると思いますXDocument。)

于 2009-02-26T10:21:35.287 に答える
5

XML をファイルに保存/書き戻すにはどうすればよいですか?

XmlWriter を作成し、それを XmlWriterSettings インスタンスに渡すことができます。ここで、Indent プロパティを true に設定します。

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;

XmlWriter writer = XmlWriter.Create (outputStream, settings);
于 2009-02-26T10:20:10.140 に答える
1

文字列を XDocument オブジェクトにロードし、再度文字列に保存できます。

XDocument doc = XDocument.Load(new StringReader(xmlString));
StringWriter writer = new StringWriter();
doc.Save(writer);
string readable = writer.ToString();

これにより、次のようにフォーマットされた xml が得られます。

<?xml version="1.0" encoding="utf-16"?>
<element1>
    <element2>some data</element2>
</element1>
于 2009-02-26T10:32:52.607 に答える
0

見て

XmlWriterSettings

http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.aspx

Indent と IndentChars を定義できます

于 2009-02-26T10:22:15.893 に答える