问题标签 [xmlstarlet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5523 浏览

xpath - 为什么 xmlstarlet 不选择所有节点?

考虑w3schools 的这个例子

xmlstarlet sel -t -v "//@category" books.xml

仅返回烹饪。如何获取所有名为类别的属性?

奖励问题:如何在不使用编辑器或程序打开 XML 文件的情况下评估 XPath 查询(我想要一个快速工具)。问题是将大文件加载到内存中会使编辑器崩溃。不要告诉我 eXist 是我最好的选择吗?

0 投票
1 回答
1637 浏览

sed - Xmlstarlet 和 sed 替换文件中的字符串

我有大量的 html 文件。我需要分别用html实体 &nsbquo 和 &quto 替换所有的 , 和 "。为此我需要通过两个步骤来成功:1) 找到之间的所有文本

标签。我只需要在此文本之间替换

标签。2) 使用 sed 替换所有必需的字符串

我的命令是:xmlstarlet sel -t -v "*//p" "index.html" | sed 's/,/\&nsbquo/'

这可行,但现在我不知道如何将更改放回 index.html 文件。在 sed 我们有 -i 选项,但为此我需要使用 sed 命令指定文件名。但就我而言,我必须使用 | 从 html 文件中过滤掉所需的字符串。

请帮忙。从 2 天开始,我做了很多搜索,但没有运气。

谢谢你,迪维亚。

0 投票
1 回答
5583 浏览

xmlstarlet - 如何使用 XMLStarlet 在另一个元素之后直接插入一个元素?

使用此示例 XML:

如何使用 XMLStarlet<element-c/>在元素之后直接插入元素?<element-b/>

0 投票
1 回答
846 浏览

xml - xmlstarlet 编辑插入语法

我正在尝试使用 xmlstarlet 插入一个新元素,但是当我运行该命令时,它只会列出我要插入的 xml 文件。任何建议都会很棒。

0 投票
2 回答
9512 浏览

xml - xmlstarlet 更新一个属性

我正在编写一个处理 xml 文件的脚本。我想用 xmlstarlet 更新这个 xml 文件中的属性值,但它不起作用。

这是 xml 文件的示例:

这是在自定义属性节点中更新名称为“XF86Display”的属性的命令。

此输出与输入严格相同...

谢谢

0 投票
3 回答
3322 浏览

xml - 将 INI 转换为 XML?或者任何通用的遗留平面文件?XSL?来自 xmlstarlet 还是 xsltproc?

我正在寻找从 INI 到 XML 的某种转换,INI 语法很简单。我不希望使用 sed/awk/grep,这确实应该在 XML 工具中完成。

这可以用常规 XSL 完成吗?我听说过 Xflat,但我可以通过用 C 编译的工具来做到这一点吗?例如 xsltproc 或 xmlstarlet。

通用 INI 语法是这样的......

这将是这样的xml...

任何帮助将不胜感激。

0 投票
2 回答
168 浏览

xml - xml解析一个值

我有一个不断附加以下 xml 的文件。我想从变量中得到的是 jobStatus 中的 percentComplete 。我怎么会得到那个?不知道如何解析xml。我尝试使用 XMLStarlet 但失败了。我想在我可以在 shell 中使用的变量中获取 percentComplete 。

0 投票
3 回答
11334 浏览

command-line-interface - XMLStarlet 不选择任何内容

我有一个典型的 pom.xml,想打印 groupId、artifactId 和 version,用冒号分隔。我认为XMLStarlet是正确的工具。我尝试了几种方法,但我总是得到一个空行。

预期输出:

实际输出:空行

即使我尝试只打印 groupId 我什么也得不到:

我确信该工具可以看到元素,因为我可以毫无问题地列出它们:

打印以下内容(正确):

怎么了?

这是 pom.xml 的精简版:

0 投票
1 回答
92 浏览

compilation - 在旧系统中编译最新版本的包以供本地使用

我需要知道是否可以在旧的、古老的系统中编译最好和最新的包。为什么?好吧,我的公司受到限制:我需要在旧的 Debian 3.0 服务器上开发一个应用程序,我更愿意使用更新的软件来完成我的任务。不幸的是,我不允许升级或安装任何软件包。

具体来说,我想使用 xmlstarlet 轻松地解析 XML 文件。该服务器没有安装它;如果我下载了系统支持的旧版本的 xmlstarlet,它太旧了,以至于我失去了我需要的功能。它只有三个依赖项:libc6、libxml2 和 libxslt1.1(已安装但对于较新版本的 xmlstarlet 来说太古老了)

所以问题是:有没有办法我可以下载这个包及其依赖项(我认为它们很少而且很简单)并以某种方式编译它们以在本地工作(不一定在系统的路径上,只是在工作目录中)而不影响任何方式的同名旧包?

这个系统也没有 PEAR,也没有 PHP5,也没有 xmllint,我想避免用 PHP4 编码来解析这些 XML。我真的很想使用 xmlstarlet。

0 投票
1 回答
1435 浏览

xml - 通过它们之间的值搜索 XML 标记并在 shell 脚本中插入新标记

假设我有这个包含这些内容的 test.xml 文件

我想为“hello”对象添加一个新的 <s>2.0</s>,如下所示。

我必须使用 shell 脚本来做到这一点。有一种搜索 XML DOM 并使用此处给出的 xmlstarlet 添加标签的方法http://www.technomancy.org/xml/add-a-subnode-command-line-xmlstarlet/。但这仅描述了根据属性值向某些节点添加新标签。我没有任何属性。我该怎么做 ?有没有办法使用 grep 做到这一点?