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格式插件)的相关内容了,更多精彩内容请关注!

相关内容

热门资讯

以军向也门3个港口的居民发布撤... 当地时间5月14日上午,以色列国防军发布警告,要求也门拉斯伊萨港、荷台达港和萨利夫港当地民众撤离。以...
微软将在全球裁员6000人,目... 当地时间5月13日,科技巨头微软表示,将在所有级别、团队和地区裁员3%,影响约6000人。微软发言人...
乌总统:若与普京会谈,全面停火... 乌克兰总统泽连斯基当地时间13日接受媒体采访时强调,如果普京愿意前往土耳其,他愿意与普京就和平问题进...
高校花75万买299元路由器!... “重庆三峡学院75万元采购防火墙实为299元路由器”事件持续引发关注,记者调查↓整起事件起始于今年4...
外交部:中方对美芬太尼反制仍然... 据央视新闻消息,今天,外交部发言人林剑表示,中美双方在日内瓦的经贸会谈达成多项积极共识,同意大幅降低...
最高人民检察院依法对陆克华决定... 记者今天(14日)从最高人民检察院获悉,重庆市委原常委、政法委原书记陆克华涉嫌受贿一案,由国家监察委...
古巴外长谴责美国再次将古列为“... 古巴外长罗德里格斯。视觉中国 资料图古巴外长罗德里格斯13日强烈谴责美国再次将古巴列入“反恐行动不合...
崔登荣任国家游泳队总教练 5月14日,全国游泳项目训练工作会议在深圳召开,会议宣布了崔登荣为国家游泳队新周期的总教练。国家体育...
我国成功发射太空计算卫星星座 北京时间2025年5月14日12时12分,我国在酒泉卫星发射中心使用长征二号丁运载火箭,成功将太空计...
台行政机构网站删除“汉人”改为... 国务院台办14日举行的例行新闻发布会上,有记者问:近日,台行政机构网站有关台湾人口情况介绍中删除“汉...
中国至越南河内国际道路运输线路... 5月14日10点40分,随着发车指令声响,搭载着电子元器件、新鲜蔬菜、百货的运输车队从广西南宁、云南...
巴方:印度上周导弹袭击造成至少... 巴基斯坦三军新闻局13日发表声明说,上周印度对巴方发动的导弹袭击造成至少40名平民死亡,另有121人...
美政府以拨款为要挟胁迫各州服从... 当地时间13日,美国20个州联合起诉美国联邦政府,称美国交通部和国土安全部非法以联邦拨款为要挟,胁迫...
最新研究:新型合成小分子可“精... 癌细胞法国国家科学研究中心日前在官网介绍,该中心参与的一项研究成功设计并合成了一种新型小分子“磷脂降...
车被冰雹砸坏了能理赔吗?报案时... 5月13日晚,北京出现大面积降水、下冰雹的情况,不少车主由于正在回家的路上或者车辆露天停放,导致车面...
盲人办手机卡,被要求必须“眨眼... 近日,江苏扬州的一位80岁的盲人管先生在某运营商营业厅办理手机卡时,因无法完成“刷脸验证”,只能以亲...
国内首家破产的5A景区游客爆满... 近日,一些网友在短视频平台上分享自己游玩洛阳龙潭大峡谷的经历,并称这是国内第一个倒闭的5A级景区,有...
美国务卿鲁比奥将前往土耳其参加... 当地时间5月13日,美国总统特朗普在沙特-美国投资论坛上表示,本周晚些时候俄乌将在土耳其举行会谈,包...
赴泰游填数字入境卡被收费200... 据人民网报道,泰国外交部发言人尼功德近日表示,自2025年5月1日起,泰国移民局将开始为进出泰国的外...
加拿大新政府宣誓就职 马克·卡尼(资料图)当地时间5月13日,加拿大自由党领袖、现任总理马克·卡尼带领新内阁在位于首都渥太...