Autoformat XML字符串/流以编程方式

时间:2013-08-27 07:03:27

标签: c# xml autoformatting

我有一个有效的xml流,并希望以易读的方式将此流写入调试输出。

目前,我得到了类似的内容:

<bla><yadda>hello</yadda><yadda>world</yadda></bla>

但我想要的是:

<bla>
    <yadda>hello</yadda>
    <yadda>world</yadda>
</bla>

有一种简单的方法吗?

到目前为止,这是我的代码:

stream.Position = 0;
byte[] bbb = stream.GetBuffer();
string str = "";
for(int i = 0; i < stream.Length; i++)
{
  byte b = bbb[i];
  str += Convert.ToChar(b).ToString();
}
Debug.WriteLine(str);

5 个答案:

答案 0 :(得分:2)

这应该有效

string xml = "<bla><yadda>hello</yadda><yadda>world</yadda></bla>";
XDocument doc = XDocument.Parse(xml);
Console.WriteLine(doc.ToString());

输出

<bla>
   <yadda>hello</yadda>
   <yadda>world</yadda>
</bla> 

答案 1 :(得分:1)

使用XDocument并加载汽油

XDocument doc= XDocument.Load(stream);

Debug.WriteLine(doc.ToString());

答案 2 :(得分:1)

另一种方法是使用System.Xml.Linq.XElement:

var xel = System.Xml.Linq.XElement.Parse("<bla><yadda>hello</yadda><yadda>world</yadda></bla>");
Console.WriteLine(xel);

答案 3 :(得分:1)

这也有效:

StreamReader strm = new StreamReader(@"D:\\maoh.xml");

while (strm.EndOfStream == false)
{
     Console.WriteLine(strm.ReadLine());
}

并给出:

enter image description here

答案 4 :(得分:0)

您可以使用Tidy.Net库。它允许你:

  • 先开后合BR

    缩进

    缩进的属性

    缩进空间

    标记

    标点符号缠绕

    排序属性

    分割

    标签尺寸

    垂直空间

    涡卷

    包裹-ASP

    总结属性

    包裹-jste

    总结PHP

    包裹式脚本的文本

    涡卷截面

http://tidy.sourceforge.net/docs/quickref.html