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