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