问题标签 [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 回答
210 浏览

xml - XMLStarles 移除结束标签

xmlstar 遇到问题。它删除了空标签,如何禁用它?

输入:

输出:

而且我想要相同的输出,所以不会删除结束引号。

希望有人能快速回答。

0 投票
1 回答
1514 浏览

xmlstarlet - xmlstarlet - 需要根据另一个属性的值选择性地替换属性值

只是想知道是否有人可以帮助我。我目前正在构建一个 pfsense 防火墙,它使用 VPN 连接来保护流量。VPN 提供商确实提供了端口转发机制,但传入端口号每小时更改一次。我有一个脚本可以让我发现新端口,但我需要一种脚本方式来修改防火墙中的端口转发设置以匹配。

控制这一点的防火墙配置文件片段如下:

在上面的 XML 中,我们有两部分组成 pfsense 的端口转发规则。该部分中包含的<nat>部分是端口转发。中的部分<rule>是特定于接口的传入防火墙规则。两者都必须修改才能使新的端口转发设置生效。

我正在考虑使用 xmlstarlet 来修改配置文件,使用<descr>作为我的密钥来确定要更改的部分。

我知道您可以拥有以下数据:

并修改它:

而且你可以有类似的东西:

并更新属性:

但是,我正在努力将两者合并,以便我有一个匹配<descr>="Torrent"然后更新相关<port><local-port>属性的语句。

对于合适的 xmlstarlet 命令的任何帮助将不胜感激。

0 投票
0 回答
1094 浏览

xml - 我可以通过一次调用 XMLStarlet 插入一个子元素并且仍然具有正确的格式吗?

我正在使用 cellux 的一个很棒的技巧在这个问题的现有元素下添加一个新元素(带有属性和子元素),并遇到了格式挑战。

从文件 example.xml 开始:

如果我使用 cellux 的方法通过一次调用 xml 来执行多个操作...

结果文件包含一个新的 XML 行。

如果我在单独的调用中多次调用 xml...

我得到格式良好(缩进)的 XML。

这两个文件在语法上是相同的,但我希望 XML 尽可能干净。

有谁知道一种对 xml 进行一次调用并仍然获得格式的干净方法?我知道我可以在最后通过“xml fo”运行它,但必须有更好的方法。

0 投票
3 回答
1969 浏览

xmlstarlet - xmlstarlet:如何有条件地添加缺少的元素(upsert)

使用 XMLStarlet,我想在列表中添加另一个属性,

这很容易,除了“properties”标签是可选的并且可能在原始文档中丢失,在这种情况下需要有条件地创建“properties”标签。

0 投票
1 回答
181 浏览

xml - XPath 基本查询以返回标签内的元素/值的最大长度

XPath 基本查询返回标签内的元素/值的最大长度 ================================== ============================================

我们有大型 XML 数据文件。XMLSPY 无法打开此文件。

给定一个包含文本的元素列表:

我想了解 AttachText 元素是否存在数据及其大小/长度。

我尝试在 Linux 中使用 Grep/Sed,但没有得到想要的结果。

我不确定如何完成它。我喜欢从这个论坛的大脑中获取一些想法。

谢谢帮忙。

是否可以使用 xmlstarlet 来获得结果?

0 投票
1 回答
498 浏览

xml - xmlstarlet:如何按字母数字内容选择元素

使用 xmlstarlet 提取和转储元素

在这篇文章中,我发现了如何按内容选择元素。完美运行!

但不是每个值:-(

这是我的xml:

通过 id、索引或时间戳进行选择非常有效。(“xml”是windows版本中的命令...):

但是如果我想通过另一个标签进行选择,例如“name”或“raw-archive-key”,就会出现问题:

此命令不会产生任何输出。在名称和原始存档密钥这两个标签中,都有字母数字字符。如果我将“asdf”更改为“01”,它会起作用!

那么如果它包含字母数字字符,如何按内容选择呢?

提前致谢!

0 投票
1 回答
1560 浏览

xml - 在 xmlstarlet 中针对 XSD 验证 xml

我正在针对给定的 XSD 验证许多 XML 文件。它在命令行中打印一些错误。我需要将错误转换为一个变量。

我正在使用 Perl。我尝试了以下事情,但无法满足我的要求。

返回为 0 或 1

错误看起来像这样

test.xml:5340.23:元素“SP”:不需要此元素。

它只打印有效或无效,我也需要上述错误。

我使用了以下命令

让我知道一些想法来解决错误。

0 投票
2 回答
1695 浏览

xpath - 为什么 xmlstarlet 说没有“ends-with”功能?

我正在使用xmlstarlet从以“v”结尾的liquibase XML 更改日志中提取changeSet节点。viewName

但是,xmlstarlet 抱怨ends-withXPATH 函数不存在:

XML 看起来有点像这样:

我确实知道 XPATH 表达式在其他方面是正确的,因为如果我将选择标准更改为,x:createView[@viewName="myviewnamev"]那么它只会正确选择该changeLog条目。

如何让 xmlstarlet 正确使用ends-with?或者,是否有另一种方法来完成我想做的事情?

0 投票
1 回答
316 浏览

xml - XMLstarlet 和 Windows 任务操作

尝试使用 xmlstarlet 修改导出的 windows 任务

示例任务:

我想改变<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries><StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>“假”。

在 winodws 1.5.0 版上使用 XMLStarlet 在我看来这应该可行:

但它给了我:没有一个 XPath 匹配;要匹配默认命名空间中的节点,请使用 ' ' 作为前缀(参见手册中的第 5.1 节)。例如,使用 / :node 而不是 /node

期待 5.1 下的男人,但我仍然没有变得更聪明:-( 已测试

但这给了我

验证和http://schemas.microsoft.com/windows/2004/02/mit/task看起来已经关闭。

剂量有人对如何继续前进有建议吗?

我应该过去尝试使用 sed for windows 代替吗?

0 投票
1 回答
1456 浏览

xml - xmlstarlet:按位置编号选择元素

我有这个 XML 文件

我想要做的是使用 xmlstarlet 选择每个第 4 个元素。

我设法使用 XmlPad 做到这一点,如下所示://table[@name='XFile']/row/field[4]/text(),但不幸的是我必须使用 xmlstarlet 来做到这一点。

此外,如果我删除 xObject 的属性/命名空间,似乎可以使用以下命令:xml sel -t -v "//table/row/field[4]/text()" test.xml

有谁知道如何做到这一点?这是我第一次尝试评估 xpath。

问候,斯特凡