需要从ksh脚本解析一些基本的XML(一个根元素,3-4个子元素,每个1-3个属性)(理想情况下坚持使用ksh,因为脚本已经存在并且它只是尝试读取一些额外的配置创建在另一个程序的XML中。)
我知道我可以使用sed并进行模式匹配,但这并不是万无一失的,因为输入XML可以改变,属性可以在各个子元素(或新的子元素)上重复。
到目前为止,我正在考虑使用针对XML的XSLT来提取ksh脚本关注的少数属性(针对特定元素)作为单个字段。鉴于我们是一个数据库驱动的产品,我可以使用Oracle,而Oracle总是安装在我们的系统上,但这看起来有点沉重。
以跨平台方式从输入XML中提取特定属性的任何其他安全方法,不需要访问第三方解析器/转换器?
答案 0 :(得分:1)
如果将所有内容保存在shell脚本中,您可能需要查看此pure bash implementation。
也就是说,其他脚本语言如Python和Perl也非常便携,并且会让您的生活更轻松。例如,Perl的XML::Twig模块带有一个名为“xml_grep”的最终用户脚本,该脚本已经可以传递--text_only
选项,只提取从复杂搜索中找到的节点的文本。修改它以返回指定的属性也不应该那么难。
答案 1 :(得分:1)
根据您“解析”的含义XMLStarlet可能是一个不错的选择。它完全由命令行驱动,支持选择和编辑XML文件,以及XSLT。
答案 2 :(得分:0)
不能完全在ksh中完成,但尝试使用python xml?
如果你想要轻量级,你可以试试libxml2和一个小型的C程序。
答案 3 :(得分:0)
而是使用CSV进行解析,它不仅可以简化逻辑,还可以轻松实现从xls到csv的转换。