3个版本
0.1.1 | 2022年9月3日 |
---|---|
0.1.0 | 2022年1月16日 |
#2890在解析实现
每月30次下载
60KB
785 行
anglosaxon - 将大型XML文件转换为其他格式
anglosaxon
是一个命令行工具,用于使用SAX解析XML文件。您可以将XML文件以流式格式转换为其他文本格式。由于它使用SAX,它不会在处理之前将整个XML文件加载到内存中,因此它可以处理大型XML文件,例如一些OpenStreetMap数据转储文件。
示例用法
bzcat ~/osm/data/changeset-examples.osm.bz2 | anglosaxon -S -o changeset_id,tag_key,tag_value --nl -s tag -v ../id -o, -v k -o , -v v --nl
此操作将OSM更改集转储文件转换为CSV文件,包含changeset_id
、changeset_tag_key
、changeset_tag_value
,允许您使用标准Unix工具分析OSM更改集。截至2022年1月,更改集文件为4GB bzip2压缩(40+GB未压缩XML),对于基于DOM的工具来说太大。
安装
cargo install anglosaxon
文档
anglosaxon
从stdin读取xml文件并写入stdout。
输出由CLI标志控制。指定SAX事件使用-S
/-s
/-e
/-E
,然后指定一个或多个对事件执行的操作。与大多数CLI程序不同,标志的顺序很重要。
SAX事件
-S
/--startdoc
:在XML文档开始时发生-s TAG
/--start TAG
:当TAG
打开时发生,即标签的开始。此标签上的XML属性可用-e TAG
/--end TAG
:当TAG
关闭时发生,即标签的结束-E
/--end
:在XML文档结束时发生
XML标签名是简单的字符串。
要执行的操作
可以指定一个或多个操作,并按照您给出的顺序处理。
-o TEXT
:按照原样打印TEXT
--nl
:打印一个换行符--tab
:打印一个制表符-v ATTRIBUTE
:打印这个XML属性的值。如果标签没有该属性,将发生错误-V ATTRIBUTE DEFAULT
:打印这个XML属性的值,如果该属性不存在,则打印DEFAULT
XML属性是纯文本。父节点的属性通过../ATTRIBUTE
指定(例如,../../id
是当前XML节点父节点的父节点的id
属性)。如果所需的父节点不存在,将发生错误。
类似项目
- xmlstarlet的sel/selection功能是灵感来源。但它无法处理大型XML
依赖关系
~2MB
~31K SLoC