当前位置:首页 > 生活百科

xml格式化工具有哪些(将xml格式化显示的步骤)

栏目:生活百科日期:2025-03-02浏览:0

学习解析 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格式化工具有哪些(将xml格式化显示的步骤)” 的相关文章

flash制作的动画有哪几种(flash春节动画制作教程)

Flash/An允许我们先构建元件动画,之后再完善细节(填充元件内部纹理),比如说,你可以先用两个方块代替两辆汽车,等你将它们的位移动画创建完成之后,再回过头来...

c++字符串比较大小规则(c++字符串比较函数)

01—char[]和char*之间的比较和转换在C++编程中,很多时候我们会遇到如何对char[]和char*进行比较,当然一般来说都是通过使用strcmp方法...

java项目源码哪里找(java初学者练手项目)

1.前言为什么会接触JavaAgent呢?这起源于笔者最近在读Dubbo的源码,Dubbo有一个很有意思的功能——SPI,它可以根据运行时的URI参数,自适应的...

云计算就业前景报告(云计算未来的发展趋势)

首先,从行业领域的发展前景来看,云计算相关人才的需求量还是比较大的,随着云计算技术体系的逐渐成熟,未来在云计算广泛落地的过程中,行业领域会释放出大量的技能型人才...

nba直播软件哪个好(免费的看球直播软件推荐)

NBA季后赛直播可以通过腾讯体育来观看最新NBA季后赛的直播,在以往,央视CCTV5频道也是可以观看的,但因为“莫雷事件”发生之后,央视暂停转播NBA的比赛。除...

如何做好品牌的市场推广计划,完整的品牌策划方案范文分

在我们日常消费的过程中,我们往往会把更高的信赖度给与品牌更大的产品。那么这些大品牌一般都是怎么建立起来的呢?品牌策划是指人们为了达成某种特定的品牌,借助一定的科...

opengl安装教程(手机查看opengl版本)

1说明:1.1利用python的pygame和OpenGL制作动态正方体cube。1.2安装python3.8和pygame(省略)。1.3安装OpenGL:p...

word文档怎么设置密码保护(详解给文档加密设置密码)

WPS的基本操作(WPS的版本2016版)一,新建文档二,保存文档三,打开和关闭文档四,选择文本五,复制与粘贴文本六,删除和移动文本七,为文档设置密码八,删除文...

2023年国产十大放心奶粉排名(热销榜排名前十款奶粉)

随着国产乳业的不断发展,出现了越来越多值得信赖的品牌,奶粉无论是在品质还是营养成分方面,都是值得各位家长信赖的。那么今天就由排行榜123小编来为大家列出2019...

在中国现在最欢迎什么手机(广受大众喜爱的10款手机品牌

在巨量引擎刚刚发布的五月热门机型排行榜中。可以看到,在国产品牌之中,竟然有五款机型上榜前十,小米11Ultra和RedmiK40游戏增强版更是拿下了前二名!小米...