notepad转化xml格式插件(xml格式化工具有哪些)
admin
2023-09-14 11:25:15
0

借助终端上的 XML 工具包 XMLStarlet,你就是 XML 之星。

学习解析 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 数据,包括允许你 编写自己的解析器的软件库,和复杂的命令,如fopxsltproc。不过有时你不需要处理 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.xml Fedora 7 Moonshine Live Fedora Everything Fedora Core 6 Zod

--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
,你便可以查看这些版本的所有代号。

匹配路径和获取目标值

将 XML 标记视为节点的一个好处是,一旦找到节点,就可以将其视为当前的数据的“目录”。它不是一个真正的目录,至少不是文件系统意义上的目录,但它是一个可以查询的数据集合。为了帮助你将目标和“里面”的数据分开,XMLStarlet 把你试图用 --match选项匹配的内容和用--value-of选项匹配的数据值进行了区分。

假设你知道 节点包含几个元素。这就是你的目标节点。一旦到了这里,就可以使用 --value-of指定想要哪个元素的值。要查看所有元素,可以使用点(.)来代表当前位置:

$ xmlstarlet sel --template --match '/xml/os/linux/distribution/spin' --value-of '.' --nl myfile.xml LiveFedoraEverything

与浏览 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 有时看起来过于冗长和笨拙,但为与之交互和构建的工具却总是让我吃惊。如果你想要好好使用 XML,那么 XMLStarlet 可能是一个很好的切入点。下次要打开 XML 文件查看其结构化数据时,请尝试使用 XMLStarlet,看看是否可以查询这些数据。当你对 XML 越熟悉时,它就越能作为一种健壮灵活的数据格式而为你服务。

以上就是xml格式化工具有哪些(notepad转化xml格式插件)的相关内容了,更多精彩内容请关注!

相关内容

热门资讯

中央网信办从严处置一批违规网络... 近期,中央网信办深入推进“清朗·网络娱乐团播乱象整治”专项行动,针对团播违规PK刺激打赏、不当玩法诱...
酷暑如何运动不伤身?养阳、择时... 运动有度:宜舒缓顺势而行夏季,人体阳气浮于体表,腑脏阳气相对亏虚,此时进行马拉松等高强度的剧烈运动,...
解放军报钧声:中方维护黄岩岛主... 7月31日,中国外交部就菲律宾在中国领土黄岩岛划设所谓“领海基线”发布声明。8月1日,中国人民解放军...
查实作弊!河南通报“三支一扶”... 针对近期备受关注的2026年河南省“三支一扶”计划招募相关舆情,河南省“三支一扶”领导小组协调办公室...
美军称对伊朗海上封锁仍在继续 美军中央司令部2日在社交媒体上表示,美国对伊朗的海上封锁仍在继续。截至8月2日,美军已迫使35艘船只...
最高法发布5起典型案例 规范平... 今天(8月3日),最高人民法院发布5起依法规范平台经营、保护消费者合法权益典型案例。平台经济是数字经...
震感明显!四川宜宾高县发生4.... 据中国地震台网正式测定,2026年8月3日2时21分,在四川宜宾市高县(北纬28.54度,东经104...
局地特大暴雨!中央气象台发布暴... 中央气象台8月3日6时发布暴雨橙色预警和强对流天气蓝色预警。暴雨橙色预警预计,8月3日8时至4日8时...
美国波特兰发生枪击事件 致1死... 央视记者获悉,当地时间8月2日凌晨,美国俄勒冈州波特兰一处住宅发生大规模枪击事件,造成包括一名青少年...
广西灵山县一公司在建楼发生火灾... 2026年8月2日12时许,广西钦州灵山县十里工业园区园园丰食品有限公司一在建楼发生火灾,接报后,灵...
西南、华南等地有强降水 国家防... 8月2日上午,国家防总办公室、应急管理部组织中国气象局、水利部、自然资源部、工业和信息化部、住房城乡...
“欧佩克+”主要产油国宣布9月... 当地时间8月2日,石油输出国组织(欧佩克)发布声明称,沙特阿拉伯、俄罗斯、伊拉克、科威特、哈萨克斯坦...
国家外汇局:将继续稳步扩大外汇... 记者8月2日从国家外汇管理局获悉,今年下半年,外汇管理部门将继续稳步扩大外汇领域制度型开放。国家外汇...
解放军报钧声:中方加强黄岩岛管... 近期,菲律宾在中国领土黄岩岛划设所谓“领海基线”,妄图为2016年那场非法仲裁“续命”,并掀起新一轮...
驻日美军多名士兵涉嫌酒驾和猥亵... 日本冲绳县近日发生多起驻日美军士兵被捕案件,其中两人涉嫌酒驾,一人涉嫌公然猥亵。据冲绳县警方通报,2...
伊朗称重开霍尔木兹海峡计划纯属... 据伊朗方面2日消息,有消息人士称,重开霍尔木兹海峡的计划纯属谣言。一名相关消息人士说,目前尚未就重开...
中东部高温闷热持续 热带低压或... 今天,本轮中东部高温闷热天气持续,多地继续“全天桑拿”模式,动不动就大汗淋漓,户外仿佛大蒸笼,走出空...
看完《八仙!》,来这里“沉浸式... 最近,动画电影《八仙!》热映影片中青绿山水间的蓬莱仙境让无数观众心驰神往而真实的蓬莱比电影里还要“仙...
水利部针对重庆市启动洪水防御Ⅳ... 据预报,8月2日至4日,重庆将有中到大雨,其中重庆中部和东南部将有暴雨,局部将有大暴雨;长江上游干流...
巴基斯坦雪崩致1名中国公民失联... 7月30日,一支国际登山队在喀喇昆仑山脉布洛阿特峰遭遇雪崩后失联。8月1日,中国驻巴基斯坦大使馆领侨...