我需要将 XML 数据作为测试脚本的一部分输入到系统中。
测试脚本本身是一个shell脚本。
XML 数据在属性中包含时间戳,该时间戳需要接近当前时间。 (事实上,有两个时间戳,一个在当前时间附近,另一个在未来几分钟到几个小时之间。)其余数据是静态的(即有一组不同的 XML 文件,每个测试一个)案件)。
我正在考虑通过使用外部实体来解决这个问题,然后通过脚本生成实体定义。问题:消费者系统仅支持 XML 的一个子集(依赖于 glib XML 解析器)。
因此,我的下一个想法是通过解析器运行 XML,该解析器将解析外部实体并输出扩展了所有实体和包含内容的平面文件 XML。是否有任何此类解析器可用作命令行工具(最好在 Debian/Ubuntu 存储库上)?
答案1
xmlstarlet
就可以解决这个问题,并且可以从 Ubuntu 存储库中获取(从 16.04 开始);大概也来自 Debian 存储库。
语法是:
xmlstarlet c14n foo.xml > bar.xml
bar.xml
将是 的规范化版本foo.xml
,所有实体均已解决。