有许多工具可以帮助解析和转换 XML 数据,包括允许你 编写自己的解析器 的软件库,和复杂的命令,如 fop 和 xsltproc。不过有时你不需要处理 XML 数据;你只需要一个方便的方法从 XML 数据中来提取、更新或验证重要数据。对于随手的 XML 交互,我使用 xmlstarlet,这是常见的处理 XML任务的一个典型的“瑞士军刀”式应用。通过运行 --help 命令,你可以看到它提供哪些选项:
1 2 3 4 5 6 7 8 9 10 11 12 13
$ xmlstarlet --help Usage: xmlstarlet [<options>] <command> [<cmd-options>] where <command> is one of: ed (or edit) - Edit/Update XMLdocument(s) sel (or select) - Select data or query XMLdocument(s) (XPATH, etc) tr (or transform) - Transform XMLdocument(s) using XSLT val (or validate) - Validate XMLdocument(s) (well-formed/DTD/XSD/RelaxNG) fo (or format) - Format XMLdocument(s) el (or elements) - Display element structure of XMLdocument c14n (or canonic) - XMLcanonicalization ls (or list) - List directory as XML [...]
你可以通过在这些子命令的末尾附加 -help 来获得进一步的帮助:
1 2 3 4 5 6 7 8
$ xmlstarlet sel --help -Q or --quiet - do not write anything to standard output. -C or --comp - display generated XSLT -R or --root - print root element <xsl-select> -T or --text - output is text (default is XML) -I or --indent - indent output [...]
用 sel 命令选择数据
可以使用 xmlstarlet select(简称 sel)命令查看 XML 格式的数据。下面是一个简单的 XML 文档:
XML 有时看起来过于冗长和笨拙,但为与之交互和构建的工具却总是让我吃惊。如果你想要好好使用 XML,那么 XMLStarlet 可能是一个很好的切入点。下次要打开 XML 文件查看其结构化数据时,请尝试使用 XMLStarlet,看看是否可以查询这些数据。当你对 XML 越熟悉时,它就越能作为一种健壮灵活的数据格式而为你服务。