在C#上缩进XML的问题 [英] Problems with indenting XML on C#

查看:75
本文介绍了在C#上缩进XML的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿,伙计们!

我在缩进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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆