在C#上缩进XML的问题 [英] Problems with indenting XML on C#
问题描述
嘿,伙计们!
我在缩进XmlDocument方面遇到了问题。
I've reached a problem with indenting XmlDocument.
这是我的美化功能:
    {
          StringBuilder sb = new StringBuilder();
          XmlWriterSettings settings = new XmlWriterSettings();
          settings.Indent = true;
          settings.IndentChars =" \t";
          settings.NewLineChars =" \\\\ nn;" \\ n
          settings.NewLineHandling = NewLineHandling.Replace;
          using(XmlWriter writer = XmlWriter.Create(sb,settings))doc.Save(writer);
          return sb.ToString();
    }
{
StringBuilder sb = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
settings.NewLineChars = "\r\n";
settings.NewLineHandling = NewLineHandling.Replace;
using (XmlWriter writer = XmlWriter.Create(sb, settings)) doc.Save(writer);
return sb.ToString();
}
操作后,它首先缩进 tag(<?xml version =" 1.0"?>)
after operating, it indents only first tag (<?xml version="1.0"?>)
所有其他标签都保留在一行中。
All the other tags stay in one line.
出了什么问题?
推荐答案
我试图创建一个示例应用程序来重现问题,但我不能遵循.NET 4.0 SP 1示例代码
I tried to create a sample application reproducing the problem but I couldn't as the following .NET 4.0 SP 1 sample code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(@"<root><items><foo>1</foo><foo>2</foo></items></root>");
doc.Save(Console.Out);
Console.WriteLine();
Console.WriteLine(new Program().Beautify(doc));
}
public string Beautify(XmlDocument doc)
{
StringBuilder sb = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
settings.NewLineChars = "\r\n";
settings.NewLineHandling = NewLineHandling.Replace;
using (XmlWriter writer = XmlWriter.Create(sb, settings)) doc.Save(writer);
return sb.ToString();
}
}
}
输出
<?xml version="1.0" encoding="ibm850"?>
<root>
<items>
<foo>1</foo>
<foo>2</foo>
</items>
</root>
<?xml version="1.0" encoding="utf-16"?>
<root>
<items>
<foo>1</foo>
<foo>2</foo>
</items>
</root>
这篇关于在C#上缩进XML的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!