我正在寻找一个好的工具来对 XML 执行类似 grep 的操作 - 例如,仅提取某些属性。
Grep
本身无法处理它 - 任何 DFA 等效工具只能处理非递归匹配,而我的可能是递归的。
我努力了查找,但是它相当不稳定,我想要一个稳定可靠的工具。
有什么建议吗?
编辑:我更喜欢在 Linux 下运行良好的开源工具。
答案1
XMLStarlet(维基百科)是一个接近的命令行工具grep
。它是开源软件(MIT 许可证),在 Linux 和 Windows 上运行良好。
XMLStarlet 网站描述如下。
XMLStarlet 是一组命令行实用程序(工具),可用于使用简单的 shell 命令集来转换、查询、验证和编辑 XML 文档和文件,其方式类似于使用 UNIX grep、sed、awk、diff、patch、join 等命令对纯文本文件进行操作。
Debian/Ubuntu 软件包名为xmlstarlet
。
但请注意:与手册页所说的相反,二进制文件以 Debian/Ubuntu 命名xmlstarlet
,而不是xml
。
SourceForge 上也有 Windows 二进制文件。
有关简介,请参阅 IBM 的开始使用 XMLStarlet(现在通过archive.org)。
答案2
答案3
在 Linux 下运行的工具是xml_grep。它完全理解 XML,并且不是一个逐行工具。
xml_grep包括作为独立工具中的XML::Twig包。grepping 功能非常强大,因为它支持XPath规格。
示例命令行(从三部曲数据转储):
xml_grep -p --cond="row[@LastEditDate>'2010-02-14']" posts.xml > lateEditedPosts.xml
安装非常简单。
sudo cpan -i "XML::Twig"
,如下面引用的 xml_grep cookbook 中所述。
或者
下载http://xmltwig.org/xmltwig/XML-Twig-3.34.tar.gz或者http://search.cpan.org/CPAN/authors/id/M/MI/MIROD/XML-Twig-3.34.tar.gz.例如
wget http://search.cpan.org/CPAN/authors/id/M/MI/MIROD/XML-Twig-3.34.tar.gz
提炼:
gunzip XML-Twig-3.34.tar.gz; tar -xvf XML-Twig-3.34.tar
进入文件夹:
cd XML-Twig-3.34
安装:
perl Makefile.PL -y
。然后make
,make test
和sudo make install
。
更多信息:
我发现的最好的介绍xml_grep是xml_grep 手册,约两页。其他:
- xml_grep 的手册页。
- 真实主页对于 XML::Twig。
答案4
XML间谍是一个很棒的工具,虽然有点贵。