如何展平通过转换JSON创建的XML

时间:2019-06-26 09:55:39

标签: c# json xml

使用以下命令将JSON转换为XML之后:

var xml = XDocument.Load(JsonReaderWriterFactory.CreateJsonReader(Encoding.ASCII.GetBytes(json), new XmlDictionaryReaderQuotas()));

我得到的输出类似于:

<a type="object">
    <b type="array">
        <item type="object">
            ...
        </item>
        <item type="object">
            ...
        </item>
    </b>
</a>

有人知道让XML看起来像这样的简单方法吗?

<a type="object">
    <b type="object">
        ...
    </b>
    <b type="object">
        ...
    </b>
</a>

我需要这种格式以匹配我的XSLT转换模板。

非常感谢, 凯

1 个答案:

答案 0 :(得分:0)

使用Xml Linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication117
{
    class Program
    {
        const string INPUT_FILE = @"c:\temp\test.xml";
        const string OUTPUT_FILE = @"c:\temp\test1.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(INPUT_FILE);

            XElement b = doc.Descendants("b").FirstOrDefault();

            List<XElement> items = b.Descendants("item").Select(x =>
                new XElement("b", new object[] {
                        new XAttribute("type", "object"),
                        x.Nodes()
                    })
                ).ToList();

            b.ReplaceWith(items);

            doc.Save(OUTPUT_FILE);
        }
    }
}