问题标签 [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.
xml - 如何使用带条件的 XmlStarlet?
源 XML
我想使用 XmlStarlet 使用 Linux shell 脚本将每个<element name="bar">true</element>
的值更新为<element name="foo">
相同的值。<block>
是否可以使用单个xml ed
命令?
预期结果
xml - 如何使用 XmlStarlet 将具有属性的元素插入 XML 文件?
源 XML
目的
我想使用 Linux shell 脚本<el name="c">0</el>
在其中插入一个元素:<block>
我可以使用 XmlStarlet 附加元素:
问题
- 选择每个
<el>
没有name
属性的元素的 XPath 表达式是什么? - 我可以使用单个
xml ed
命令附加元素并插入属性吗?
xml - 如何使用和处理重复的 XML 元素以使用 shell 脚本创建其他元素?
假设我想使用(符合 POSIX 的)shell 脚本创建下一个 XML 文件:
但我只有下一个:
使用 XMLStarlet edit --update
(并且仅使用--update
),我可以使用 XPath 表达式而不是表单中的字符串值:
但 XPath 2.0 字符串函数似乎不起作用(xmlXPathCompOpEval: function lower-case not found
)。然后我如何遍历所有块并使用元素的文本值<title>
来生成<slug>
元素?我怎样才能用最少的xml
动作做到这一点?
xml - Is there any way to get (a lot of) values from a file to filter a big xml using xmlstarlet?
everyone.
I'm trying to filter a big xml file (from a BLAST) to keep only some <Interaction>
nodes defined by a list of <Iteration_iter-num>
values that I define from a file. Here is a simplified example (the real Blast.xml have more than 80000 Iterations):
and I have a file with the iterations to keep (saved as keep_iter):
For this kind of low scale problem I managed to do the filtering with xmlstarlet, creating first a version of the file to store the string for the comparison (saved as filter):
This works as a charm with:
Basically, I removed all the Iteration nodes that were not in the filter file Obtaining:
The problem is that I really have a keep_iter file with 20000 values to filter. When I create the filter file and run the xmlstarlet command above, the argument is obviously too long.
Any suggestion to filter such a Blast.xml file to keep only those Iteration nodes which iteration number is listed in the keep_iter file (with 20k values)? I want to keep the original xml structure.
xml - XMLStarlet 不编辑任何内容
我有以下 XML:
我正在以下列方式使用 xmlstarlet 编辑 serverPropertyFile 的属性值:
我错过了什么?
找到了答案:我使用的 xpath 不正确是:
xpath - 如何从网页复制特定元素
我的目标是从网页中获取特定的文本区域。想象一下,如果您能够在页面上的任何位置绘制一个矩形,并且该矩形中的所有内容都将被复制到您的剪贴板中。我正在使用 FireBug(请随意提出其他解决方案,我已经搜索了插件或书签,但没有找到任何有用的东西),它的控制台窗口和 XPath 用于此目的。我想要获取的值采用以下格式(这是从 FireBug“HTML 检查”中观察到的):
<span class="number3_0" title="Numbers">3.00</span>
所以我最终得到以下代码,我从 FireBug 控制台发出:
$x("//span[@title='Numbers']/text()")
在此之后我得到这样的东西:
[<TextNode textContent="2.00">, <TextNode textContent="2.00">, <TextNode textContent="2.00">, <TextNode textContent="2.00">, <TextNode textContent="3.00">]
在此之后,我单击(用鼠标右键)[
并选择,Inspect in DOM panel
然后按ctrl+a
以下格式复制/粘贴数据:
正如您可以假设的值textContent
是我感兴趣的信息。我尝试修改原始 XPath 查询以仅返回这些数字但没有运气。我曾是:
string()
按照此处的建议将整个查询包装到Xpath - 仅获取节点内容而不获取其他元素
试图弄清楚这个是如何工作的,通过 XPath 等方法在节点之间提取文本。
为了能够获得所需的值,我使用了一些 bash-scripting + xml-formatting,在完成这个乏味/容易出错的任务之后,我得到了以下格式:
现在我用xmlstarlet
以下方式获取这些值(是的,我知道我可以在上一步中使用正则表达式并拥有我需要的所有数据。但我对 DOM/XPath 解析很感兴趣,并试图弄清楚它是如何工作的):
这最终给了我想要的输出:
我的问题有点笼统:
- 这个可怕的漫长过程如何自动化?
- 如何修改 FireBug 中使用的原始 XPath 字符串
$x("//span[@title='Numbers']/text()")
以立即仅获取数字并节省自己的其余步骤? 我还不是很熟悉
xmlstarlet
,尤其是选择(sel
)模式让我抓狂。我见过以下选项的各种组合:-c 或 --copy-of - 打印 XPATH 表达式的副本
-v 或 --value-of - 打印 XPATH 表达式的值
-o 或 --output - 输出字符串文字
-m 或 --match - 匹配 XPATH 表达式
有人可以解释一下什么时候使用哪个吗?如果可能的话,很高兴看到具体的例子。如果感兴趣,有提到的选项的各种组合,我不太了解: http ://www.grahl.ch/blog/minutiae-return-content-element-xmlstarlet 使用 xmlstarlet 提取和转储元素 测试 XML属性
4.)关于最后一个问题xmlstarlet
是一个装饰性的语法糖,如何获得漂亮的换行符分隔输出,正如你所看到的,我通过添加换行符作为分隔符“作弊”,但是当我尝试使用这样的转义字符时:
cat input | xmlstarlet sel -t -m "//TextNode" -v 'concat(@textContent,"\n")'
它没有用,我从中学到很多东西的原始参考也以这种“丑陋”的方式使用它http://www.ibm.com/developerworks/library/x-starlet/index.html
PS:也许这些所有步骤都可以使用 curl + xmlstarlet 来简化,但是对于需要登录或其他类似内容的页面也可以使用 FireBug 选项。
感谢所有的想法。
bash - bash - xmlstarlet -v 到 $variable
该行打印出我拥有的 rss 提要中条目的标题(-v“标题)和 url(-v“链接”)。我想将标题和 url 存储到单独的变量中(例如,$title 和 $url ) 所以我以后可以用它们来卷曲。
我怎样才能做到这一点?
xml - xmlstarlet 不为某个元素返回任何值
以下情况正在发生:
按预期工作的文件:
列出 xml 中的内容:
选择特定元素:
原始数据:
下一次运行 test.xml
查询方式同上一个:
文件内容:
为什么我不能显示那些文件标签的内容?我需要以某种方式逃避它吗?
xml - 使用 xmlstarlet 将子节点插入到具有给定值的子节点
我使用 xmlstarlet 并尝试在给定节点下的子节点处插入。但是如何在具有给定值而不是属性的节点下执行此操作?
尝试使用此命令但插入到许多地方并且只会在 CCDefines 之后执行
而不是xml中我有/project/configuration/settings/data/option/name的任何地方
我的xml文件是:
希望有人有这方面的经验。
xml - 使用 xmlstarlet 连接多个 xml 元素
我正在尝试编写一个 bash 脚本以从诸如此类的 xml 文件中提取多个“导演”,并将它们用管道分隔,即 Tom Tykwer|Andy Wachowski。
相关的xml部分是:
在 bash 脚本中使用 xmlstarlet 执行以下命令:
给我吗
这个命令直接在终端
给我:
当我没有指定 -n 选项时,我不知道为什么要添加新行。
我的一些搜索建议是这样的:
但这只是给了我:
我会很感激我能得到的任何帮助。我在 Debian Wheezy 上使用 xmlstarlet 1.3.1 和在 Xubuntu 13.10 上使用 xmlstarlet 1.5.0 看到了这种行为。