使用ksh解析XML的成本最低的跨平台方法是什么?
时间:2020-03-05 18:53:22 来源:igfitidea点击:
需要从ksh脚本中解析一些基本的XML(一个根元素,每个3-4个子元素,每个1-3个属性)(理想情况下,请坚持使用ksh,因为该脚本已经存在,并且它正试图读取XML中创建的一些额外配置)另一个程序)。
我知道我可以使用sed并进行模式匹配,但是这并不是万无一失的,因为输入XML可能会更改,并且属性可以在各种子元素(或者新的子元素)上重复。
到目前为止,我正在考虑对XML使用XSLT来提取ksh脚本作为单个字段关心的一些属性(用于特定元素)。鉴于我们是数据库驱动的产品,因此我可以使用Oracle,并且Oracle总是安装在我们的系统上,但这似乎有点麻烦。
是否有其他安全方法可以跨平台方式从输入XML提取特定属性,而无需访问第三方解析器/转换器?
解决方案
回答
无法完全在ksh中完成操作,但是尝试使用python xml吗?
如果我们想轻量级,则可以尝试libxml2和一个小型C程序。
回答
如果将其全部保留在shell脚本中那么重要,那么我们可能想看一下这种纯bash实现。
也就是说,其他脚本语言(例如Python和Perl)也具有高度的可移植性,这将使生活更加轻松。例如,Perl的XML :: Twig模块附带了一个名为" xml_grep"的最终用户脚本,该脚本已经可以通过--text_only选项传递,以仅提取从复杂搜索中找到的节点文本。修改它以返回指定的属性也应该没有那么难。
回答
根据我们对"解析"的含义,XMLStarlet可能是一个不错的选择。它完全由命令行驱动,并支持XML文件以及XSLT的选择和编辑。
回答
而不是使用CSV进行解析,它不仅可以简化逻辑,而且可以轻松实现从xls到csv的转换。