2011-01-24 82 views
2

对于一个项目我的工作,我需要一个XML文档转换为JSON,但保持它的人类可读的通过保持良好的对齐数据。虽然xml2json-xslt能够创建JSON,但它的格式不是很好。
我的主要问题是它需要在XSLT 1.0中完成,而无需使用任何外部库,JavaScript或其他任何东西。只是纯粹的XSLT。虽然互联网上有很多样本,但我找不到能确保正确(可读,可读)格式的样本。
它不需要通过转换布尔值,数字,日期等来实现火箭科学。它只需要创建JSON,它将被另一个应用程序使用,但是当操作员查看数据时,他们需要缩进并很好地对齐的括号。转换XML格式化的JSON

+1

Alex:你写了*“它不需要做火箭 - 科学“*,是的,但JSON不映射XML。这就是为什么这个翻译有几个约定。我认为你应该选择其中之一。另外,“不错的格式”并不清楚你的意思,以及这是一个有意义的问题。 – 2011-01-24 16:04:08

+0

“不错的格式”仅仅意味着人们可以阅读它,因为事物以适当的方式对齐。 XML节点可能会变得很深,从而导致JSON对象也变得很深。简单,正确的缩进应该已经足够了。 – 2011-01-26 14:08:04

回答

2

最简单的解决方案可能是通过JSON格式,其中似乎有许多可用的推xml2json.xslt的输出 - 我没有任何他们的经验。

+0

如果这样的JSON格式化程序会作为XSLT存在,或者我可以从XSLT调用它,那么问题就解决了。但是这样的格式化器还不存在。 – 2011-01-26 14:12:24

0

http://james.newtonking.com/pages/json-net.aspx

我只用这个库的LINQ to JSON,它是超洁净和方便。我读的文档中一些有关JSON转换到.NET的飞行物体,我记得在那里看到了类JSON为XML ...检查出来

+0

通过超级干净/容易我的意思是从一个JSON字符串使用LINQ到JSON从一行代码中获取一个键值 – 2011-01-25 18:39:09

+0

不是我在寻找的。我需要一个纯粹的XSLT解决方案,因为我可以调整的是一个XSLT文件。我绝对不能使用.NET代码。 – 2011-01-26 14:11:22

1

万一别人得到了相同的特殊要求(从生产缩进JSON“简单”使用XSLT 1.0 XML),我创建了一个缩进版本的xml2json-xslt的要点是:https://gist.github.com/3977454

大家谁是细跟XSLT 2.0或谁已经“复杂”的XML,我建议一个不同的XSLT因为xml2json,XSLT有一些缺点:它缺乏适当的属性,装卸,搬运的多个元素用相同的名称等(在写作时xml2json-XSLT的当前修订版:31)。

在搜索“xml2json xslt”时(例如,可以在github上找到XSLT选项)。 https://github.com/bramstein/xsltjson)。缺点是它们中的大多数不支持缩进,但是这可以通过通过JSON格式器管道输出来补偿(参见例如,https://stackoverflow.com/a/5244011/490560