xml2csv.py#
此工具可将任意 SUMO XML 文件转换为扁平 CSV(字符分隔值)格式。CSV 文件易于解析,可在 LibreOffice 或 Microsoft Excel 中打开。用法:
python tools/xml/xml2csv.py input.xml
使用选项 --separator <STRING> 可自定义字段分隔符(默认为 ;),选项 --quotechar <STRING> 定义引用字符(如 '),用于引用所有字段。此外,可通过 --xsd <FILE> 提供 XSD 模式文件以辅助解析,并获取当前文件中可能不存在的属性的标题。若附加 --validation 选项,将根据模式验证输入文件。此功能需安装 lxml。
若未使用 --xsd 选项,脚本将从解析的第一行(或块)确定要解析的属性。若文件首个元素未包含所有所需属性,则这些属性将不会被解析!
请注意,输入文件名可替换为数字,该数字将被解释为服务器端口,脚本将在此端口监听传入连接并读取输入数据。输出文件名可通过 --output <FILE> 选项指定,默认为将输入文件路径的 ".xml" 后缀替换为 ".csv"。
该应用程序仅限于简单层级结构:根元素可包含多个不同子元素,但所有子元素仅限一种子元素类型。
Note
Excel 可直接打开 XML 文件。参见 [1]。
csv2xml.py#
此工具为 xml2csv.py 的逆向工具。用法:
python tools/xml/csv2xml.py -x schema.xsd input.csv
选项含义同上。对于节点、边和路径等部分文件类型,转换已硬编码;其他类型需提供模式。无法自动对输出执行验证。
xml2protobuf.py#
若 CSV 表示仍过大,可使用 Google 的 Protocol Buffers 进一步压缩输出。此操作需安装 protoc 编译器以及 Python 和目标语言的 protobuf 包。用法:
python tools/xml/xml2protobuf.py -x schema.xsd input.xml
需通过 --xsd <FILE> 提供 XSD 模式文件,--validation 选项将启用 XML 验证。附加的 --protodir <FILE> 选项可指定保存 protobuf 消息定义和生成的 Python 模块的目录(默认为当前工作目录)。脚本将从模式生成 protobuf 描述,然后写入包含二进制流的 protomsg 文件。
protobuf2xml.py#
此工具为 xml2protobuf.py 的逆向工具。用法:
python tools/xml/protobuf2xml.py -x schema.xsd input.protomsg
选项含义同上。
changeAttribute.py#
此工具在输入文件的所有标签(元素)上设置/移除指定属性,并将结果写入新文件。若未提供选项 --value (-v),则移除属性;否则将其添加/修改为给定值。
python tools/xml/tools/xml/changeAttribute.py -f INPUT_FILE -o OUTPUT_FILE -t TAG -a ATTRIBUTE [-v VALUE]
filterElements.py#
此工具从输入文件中移除指定元素,条件如下:
- 移除元素的所有出现(默认)
- 移除具有指定属性且匹配给定列表中值的所有元素(--attribute ATTR --remove-values VAL1,VAL2)
- 移除具有指定属性且不匹配给定列表中值的所有元素(--attribute ATTR --keep-values VAL1,VAL2)
示例调用:
python tools/xml/tools/xml/filterElements.py -f stopoutput.xml -o filtered.xml -t stopinfo -a delay --remove-values 0


