gpt4 book ai didi

xml - 如何列出xmlstarlet中子元素的每个可能的父元素

转载 作者:行者123 更新时间:2023-12-03 17:27:48 29 4
gpt4 key购买 nike

给定此数据:

<root>
<A>
<A1 id="1">
<elem>apple</elem>
</A1>
</A>

<B>
<B1 id="2">
<elem>banana</elem>
</B1>
</B>

<C id="3">
<elem>grapes</elem>
<C1></C1>
</C>
</root>


如何找出元素elem的每个可能的父元素?到目前为止,我可以通过以下方式找到使用-m选项的方法:

$ xmlstarlet sel -t -m '//elem/..' -v 'concat(name(),"=",@id)' -n input3.xml
A1=1
B1=2
C=3

$


但是,如何使用带有-v的xpath表达式来做同样的事情?例如,我只能引用父级的id属性,而不能引用父级元素的名称:

$ xmlstarlet sel -t -v '//elem/../@id' input3.xml
1
2
3
$

最佳答案

您可以这样做:

xmlstarlet sel -t -v "name(//elem/..)" input3.xml


但这只会为您提供第一个匹配项的名称(xmlstarlet是XPath 1.0处理器)。

就像您发现的那样,唯一的方法是先匹配( -m):

xmlstarlet sel -t -m "//elem/.." -v "name()" -n input3.xml


尽管我希望使用稍微不同的XPath:

xmlstarlet sel -t -m "//*[elem]" -v "name()" -n input3.xml

关于xml - 如何列出xmlstarlet中子元素的每个可能的父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42754332/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com