Converting XML to formatted JSON
对于我正在进行的一个项目,我需要将XML文档转换为JSON,同时通过保持数据的良好对齐来保持它的可读性。虽然xml2json xslt能够创建json,但它的格式不太好。
我的主要问题是,它需要在XSLT1.0中完成,而不需要使用任何外部库、JavaScript或其他任何东西。只是纯XSLT。虽然互联网上有许多样本,但我只是找不到一个能保证正确(可读性好)格式的样本。
它不需要通过转换布尔值、数字、日期等来进行火箭科学。它只需要创建JSON,它将被另一个应用程序使用,但是当操作员查看数据时,他们需要缩进和美观。对齐的支架。
最简单的解决方案可能是通过一个JSON格式化程序推送xml2json.xslt的输出,其中似乎有一个可用的数字-我没有任何经验。
为了防止其他人得到同样的特殊要求(使用xslt 1.0从"简单"xml生成缩进的json),我创建了一个作为gist的xml2json xslt的缩进版本:https://gist.github.com/3977454
对于所有使用XSLT2.0或具有"复杂"XML的人,我建议使用不同的XSLT,因为XML2JSON XSLT有一些缺点:它缺乏适当的属性处理、处理多个同名元素等(编写时当前对XML2JSON XSLT的修订:31)。
当搜索"xml2json xslt"时,可以在github上找到xslt替代项(例如:https://github.com/bramstein/xsltjson)。缺点是,它们中的大多数不支持缩进,但可以通过管道将输出通过JSON格式化程序进行补偿(例如,请参阅https://stackoverflow.com/a/5244011/490560)。
我认为你必须咬住子弹,调整xml2json-xslt,直到它按照你想要的方式缩进。
请参见将XML转换为纯文本-我应该如何忽略/处理XSLT中的空白?如何处理空白。
我不认为这是一个令人愉快的过程:(
根据我的经验,对于生成格式良好的输出,XSLT尤其不好。
你能把这个问题推到你的操作人员使用的JSON浏览器上吗?我的很多JSON交互都始于http://jsonformatter.curiousconcept.com/…
其他选项:独立应用程序、Firefox插件等
http://james.newtonking.com/pages/json-net.aspx
我只为linq-to-json使用了这个库,它非常干净和简单。我在文档中读了一些关于将JSON动态转换为.NET对象的内容,我记得在其中看到了一个JSON到XML的类……请看吧。