文章插图
学习解析 XML 通常被认为是一件复杂的事情,但它不一定是这样 。XML 是高度严格结构化的,所以也是相对来说可预测的 。也有许多其他工具可以帮助你使这项工作易于管理 。
我最喜欢的 XML 实用程序之一是 XMLStarlet,这是一个用于终端的 XML 工具包,借助这个 XML 工具包,你可以验证、解析、编辑、格式化和转换 XML 数据 。XMLStarLet 是个相对较小的命令,但浏览 XML 却充满潜力,因此本文演示了如何使用它来查询 XML 数据 。
安装XMLStarLet 默认安装在 CentOS、Fedora,和许多其他现代 Linux 发行版上,所以你可以打开终端,输入 xmlstarlet来访问它 。如果 XMLStarLet 还没有被安装,你的操作系统则会为你安装它 。
或者,你可以用包管理器安装 xmlstarlet:
$ sudo dnf install xmlstarlet在 macOS 上,可以使用 MacPorts或Homebrew 。在 Windows 上,可以使用Chocolatey 。
如果都失败了,你可以从 Sourceforge 上的源代码手动安装它 。
用 XMLStarlet 解析 XML有许多工具可以帮助解析和转换 XML 数据,包括允许你 编写自己的解析器的软件库,和复杂的命令,如fop和xsltproc 。不过有时你不需要处理 XML 数据;你只需要一个方便的方法从 XML 数据中来提取、更新或验证重要数据 。对于随手的 XML 交互,我使用xmlstarlet,这是常见的处理 XML任务的一个典型的“瑞士军刀”式应用 。通过运行--help命令,你可以看到它提供哪些选项:
$ xmlstarlet --helpUsage: xmlstarlet [你可以通过在这些子命令的末尾附加 -help来获得进一步的帮助:
$ 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 文件中查找数据时,你的第一个任务是关注要探索的节点 。如果知道节点的路径,请使用 -value of选项指定完整路径 。你越早浏览文档对象模型(DOM)树,就可以看到更多信息:
$ xmlstarlet select --template \--value-of /xml/os/linux/distribution \--nl myfile.xmlFedora7MoonshineLiveFedoraEverythingFedora Core6Zod--nl代表“新的一行”,它插入大量的空白,以确保在输入结果后,终端在新的一行显示 。我已经删除了样本输出中的一些多余空间 。
通过进一步深入 DOM 树来凝聚关注点:
$ xmlstarlet select --template \--value-of /xml/os/linux/distribution/name \--nl myfile.xmlFedoraFedora Core条件选择用于导航和解析 XML 的最强大工具之一被称为 XPath 。它规范了 XML 搜索中使用的语法,并从 XML 库调用函数 。XMLStarlet 能够解析 XPath 表达式,因此可以使用 XPath 函数来有条件的进行选择 。XPath 具有丰富的函数,,但我觉得 Mozilla 的 XPath 文档更简洁 。
可以使用方括号作为测试函数,将元素的内容与某个值进行比较 。下面是对 元素的值的测试,它仅返回与特定匹配相关联的版本号 。
想象一下,示例 XML 文件包含以 1 开头的所有 Fedora 版本 。要查看与旧名称 “Fedora Core” 关联的所有版本号(该项目从版本 7 开始删除了名称中的 “Core”),请执行以下操作:
$ xmlstarlet sel --template \--value-of '/xml/os/linux/distribution[name = "Fedora Core"]/release' \--nl myfile.xml654321通过将路径的 --value-of更改为/xml/os/linux/distribution[name=“Fedora Core”]/codename,你便可以查看这些版本的所有代号 。
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- pdf转ppt简单方法 如何将pdf转化为ppt
- 预言2022年下半年将会发生什么事 疫情过后必有大灾
- 邮政寄信怎么寄
- 数据库常用sql语句 sql语句格式化时间格式
- 高校毕业生创新高 909万毕业生将涌向哪里?
- 国内机票燃油附加费将恢复征收 机票燃油附加费怎么收
- 中年零基础创业 人到中年如何创业
- facebook公司的招聘案例 Facebook将公司名改为Meta
- 白领桌前的养生健身操
- 什么姿势伤腰椎 最伤腰的6个姿势