xml到json:用于将XML文件转换为json的库和命令行工具

[图书馆,麻省理工学院,程序,网状物,xml格式][建议标签]

xml-to-json可执行文件(和库)将xml转换为json格式,从而获得可读性,同时丢失注释、属性排序等信息。

对于处理速度较慢的文件,请使用“xml-to-json-fast”,它(从2.0.0版本开始)位于自己的包中。

最初的目的是将基于XML的遗留数据转换为可以导入到CouchDB和MongoDB等JSON数据库中的格式。

该包还包括一个可执行文件,用于直接调用文件上的库(或非windows平台上的url)。

请参见https://github.com/sinelaw/xml-to-json#自述文件了解详细信息和用法。


[跳到自述]

模块

[索引]

下载

维修人员角落

包装维护人员

对于包维护者和黑客托管者

候选人

  • 没有候选人
版本[RSS(RSS)] 0.1.0.0,0.1.1.0,0.1.2.0,1.0.0,1.0.1,2.0.0,2.0.1
依赖关系 伊森,基础(>=4.5.0 && <5),字节删除,容器,卷曲,可散列的,hxt(赫兹),hx曲线,hxt-expat公司,hxt-汤汁,正则表达式posix,塔格汤,文本,无序控制器,矢量,xml到json[细节]
许可证 麻省理工学院
版权所有 Noam Lewis版权所有,2014
作者 诺姆·刘易斯
维护人员 jones.noamle@gmail.com
类别 网状物,XML格式
主页 https://github.com/sinelaw/xml-to-json
Bug跟踪器 https://github.com/sinelaw/xml-to-json/issues
源回购 头部:git克隆https://github.com/sinelaw/xml-to-json.git
已上传 通过诺姆·刘易斯2015年3月30日21:11:48Z
分配
反向依赖关系 1直接,0间接[细节]
可执行程序 xml到json
下载 总计6415人(过去30天内有18人)
额定值 (尚未投票)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 可用文档[生成日志]
上次成功报告时间:2015年3月30日[所有1个报告]

xml-to-json-2.0.1自述文件

[返回包描述]

xml到json

用于将XML文件转换为JSON的快速简便的库和命令行工具。

小心!该项目已分为两个项目。请参见xml-to-json-fast用于功能较少的低内存使用版本。

目录

概述

xml-to-json将xml转换为json。它包括一个Haskell库和一个命令行工具。

xml-to-json附带了两个不同的可执行文件:

  1. xml-to-json-fast(“fast”)使用更少的内存,但无法控制输出。可以用于任何大小的XML文件。
  2. xml到json(“classic”)提供了对json输出格式的一些控制,但使用了大量内存。适用于较小的文件。

“快速”xml-to-json-Fast

所谓的“快速”版本(使用更少的内存)已经分叉到一个单独的项目中,xml-to-json-fast.

“经典”xml-to-json

功能齐全的“经典”xml到json提供了紧凑的json输出,其设计便于使用基于json的数据库进行存储和处理,例如mongoDB(蒙古数据库)沙发DB事实上,xml-to-json的最初动机是使用一个现成的可伸缩json数据库存储和查询一个大型(约10GB)基于xml的数据集。

使用“经典”xml-to-json时,输入xml必须有效。

目前,xml-to-json根据有损规则处理xml,这些规则旨在产生合理的最小输出。如果您需要在不丢失任何信息的情况下进行转换,请考虑jsonml项目。与jsonml不同,此工具-xml-to-json生成的json输出与xml2json-xslt项目.

实施说明

xml-to-json在中实现哈斯克尔.

在撰写本文时,xml-to-json使用hxt(赫兹)使用外籍人士-基于hxt-expat公司解析器。hxt的纯Haskell解析器所有人似乎都有记忆问题hxt-expat没有。

安装

Windows用户注意事项:仅支持本地文件而不支持URL作为命令行参数。这是因为卷曲无法在我的(windows+cygwin)机器上即时编译。

要安装发布版本:由于xml-to-json是在Haskell中实现的,“您需要做的”就是安装最新的Haskell平台然后运行:

阴谋集团更新cabal安装xml-to-json

要安装来自源:在本地克隆此存储库,然后(假设您Haskell平台已安装)运行阴谋集团安装:

cd xml到json电缆安装

用法

基本用法

只需将文件名作为单个参数运行该工具,并将stdout指向文件或管道:

xml-to-json myfile.xml>myfile.js

经典的xml到json:高级用法

使用--帮助选项查看完整的命令行选项。

以下是(可能已经过时)--帮助输出:

用法:<program>[OPTION…]文件。。。-h--help显示此帮助-t TAG--TAG-name=TAG使用名为TAG的节点开始转换(忽略所有父节点)-s—skip-roots忽略所选节点,并从其子节点开始转换(可以与“start-tag”选项结合使用,仅处理匹配节点的子节点)-a--as array在顶级JSON数组中输出结果对象-m—multiline使用“as-array”输出时,在单独的行上打印每个顶级json对象。(如果不使用“as-array”,则不管如何,此选项都将启用,并且输出始终为线性操作。)--no-collapse-text=PATTERN对于标记仅匹配正则表达式的元素PATTERN:不要将只包含文本的元素折叠为简单的字符串属性。相反,始终为文本节点发出“.value”属性,即使元素只包含文本。(输出“模式”将更加稳定。)--no-ignore-nulls不要忽略顶层输出对象中的null(并输出它们)

输出示例

输入文件:

<?xml版本=“1.0”?><!DOCTYPE测试><测试><测试名称=“第一次测试”><SomeText>一些简单文本</SomeText><SomeMoreText>更多文本<描述格式=“FooFormat”>只是个傻瓜<!-- 注释-->Xml文件。</说明></测试><测试名称=“秒”/></测试>

使用默认设置的JSON输出:

{“测试”:{“测试”:[{“名称”:“第一个测试”,“SomeText”:“一些简单文本”,“描述”:{“格式”:“FooFormat”,“值”:“只是一个伪的\n\nXml文件。”}},{“名称”:“第二个”}]}}

格式化以便于阅读(不是实际输出):

{“测试”:{“测试”:[{“Name”:“第一次测试”,“SomeMoreText”:“更多文本”,“SomeText”:“一些简单文本”,“说明”:{“Format”:“FooFormat”,“value”:“只是一个虚拟的\n\nXml文件。”}},{“名称”:“第二个”}]}}

注意,当前xml-to-json没有保留元素/属性的顺序。

使用各种选项,您可以控制输出的各个方面,例如:

  • 转换在哪个顶级节点开始工作(-t)
  • 是否将输出封装在顶级JSON数组中,
  • 是否将简单字符串元素(例如示例中的元素)折叠为简单字符串属性(可以指定正则表达式模式来决定折叠哪些节点)
  • 还有更多。。。

使用--帮助选项查看选项的完整列表。

“经典”xml-to-json的性能

“经典”xml-to-json无法操作大型文件。然而,在操作多个小文件时速度很快。对于大型XML文件,core-i5机器上的速度约为2MB XML/sec,100MB XML文件产生56MB json输出。处理1GB的xml数据大约需要10分钟。主要的性能限制是内存,因为每个大文件(几十兆字节)都会消耗大量内存,所以只有一个单线程进程在运行,大约是文件大小的50倍。

一些简单的测试表明,这一速度至少是jsonml的基于xlst的转换器(然而,如上所述,输出并不相似)。

目前,该程序串行处理文件。如果在许多小的XML文件(<5MB)上并行运行,性能将受到cpu限制,处理可能会许多的速度更快,具体取决于体系结构。一个简单的测试表明,性能约为5MB/秒(在同一个内核上,即i5)。