xml格式化工具有哪些 notepad转化xml格式插件( 二 )


想象一下 , 示例 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 , 你便可以查看这些版本的所有代号 。
匹配路径和获取目标值
将 XML 标记视为节点的一个好处是 , 一旦找到节点 , 就可以将其视为当前的数据的“目录” 。它不是一个真正的目录 , 至少不是文件系统意义上的目录 , 但它是一个可以查询的数据集合 。为了帮助你将目标和“里面”的数据分开 , XMLStarlet 把你试图用 –match选项匹配的内容和用–value-of选项匹配的数据值进行了区分 。
假设你知道 节点包含几个元素 。这就是你的目标节点 。一旦到了这里 , 就可以使用 –value-of指定想要哪个元素的值 。要查看所有元素 , 可以使用点(.)来代表当前位置:
$ xmlstarlet sel –template–match \\’/xml/os/linux/distribution/spin\\’–value-of \\’.\\’ –nl myfile.xmlLiveFedoraEverything
与浏览 DOM 一样 , 可以使用 XPath 表达式来限制返回数据的范围 。在本例中 , 我使用 last函数来检索spin节点中的最后一个元素:
$ xmlstarlet select –template–match \\’/xml/os/linux/distribution/spin\\’–value-of \\’*[last()]\\’ –nl myfile.xmlEverything
在本例中 , 我使用 position函数选择spin节点中的特定元素:
$ xmlstarlet select –template–match \\’/xml/os/linux/distribution/spin\\’–value-of \\’*[position() = 2]\\’ –nl myfile.xmlFedora
–match和–value选项可以重叠 , 因此如何将它们一起使用取决于你自己 。对于示例 XML , 这两个表达式执行的是相同的操作:
$ xmlstarlet select–template–match \\’/xml/os/linux/distribution/spin\\’–value-of \\’.\\’–nl myfile.xmlLiveFedoraEverything
$ xmlstarlet select –template–match \\’/xml/os/linux/distribution\\’–value-of \\’spin\\’–nl myfile.xmlLiveFedoraEverything熟悉 XML
【xml格式化工具有哪些 notepad转化xml格式插件】XML 有时看起来过于冗长和笨拙 , 但为与之交互和构建的工具却总是让我吃惊 。如果你想要好好使用 XML , 那么 XMLStarlet 可能是一个很好的切入点 。下次要打开 XML 文件查看其结构化数据时 , 请尝试使用 XMLStarlet , 看看是否可以查询这些数据 。当你对 XML 越熟悉时 , 它就越能作为一种健壮灵活的数据格式而为你服务 。