检索具有特定属性名称的所有 xml 元素的节点名称
Retrieving the node names of all the xml elements with specific attribute name
我有一个 xml,我们称它为 example.xml,如下所示:
<a>
<b ref="lala">text of node b
</b>
<c ref="hihi">text of node c
</c>
<d somethingelse="foo">text of the node d
</d>
</a>
我想获取 所有 节点的 names 具有名为“ref”的属性的节点
所以我的输出是:
b
c
我试过:
xmlstarlet sel -t -v "name(//*[@ref])" example.xml
但我只得到第一个节点的名称作为输出,即 b
。我获取所有节点名称的命令中缺少什么?
注意:我 运行 在 debian bulleyes 上,这是我的 xmlstarlet 版本:
xmlstarlet --version
1.6.1
compiled against libxml2 2.9.10, linked with 20910
compiled against libxslt 1.1.34, linked with 10134
试试这个 获取具有 "ref"
属性的节点的名称:
//*[@ref]/name()
找到似乎有效的东西:
xmlstarlet sel -t -m "//*[@ref]" -v "name()" -n example.xml
-n
是在不同行上给出输出的标签。
可能是版本问题(不确定)。无论如何,这个 post 关于 xmlstarlet 的唯一输出与多个输出给了我一些帮助:
Why doesn't xmlstarlet select all nodes?
我有一个 xml,我们称它为 example.xml,如下所示:
<a>
<b ref="lala">text of node b
</b>
<c ref="hihi">text of node c
</c>
<d somethingelse="foo">text of the node d
</d>
</a>
我想获取 所有 节点的 names 具有名为“ref”的属性的节点
所以我的输出是:
b
c
我试过:
xmlstarlet sel -t -v "name(//*[@ref])" example.xml
但我只得到第一个节点的名称作为输出,即 b
。我获取所有节点名称的命令中缺少什么?
注意:我 运行 在 debian bulleyes 上,这是我的 xmlstarlet 版本:
xmlstarlet --version
1.6.1
compiled against libxml2 2.9.10, linked with 20910
compiled against libxslt 1.1.34, linked with 10134
试试这个 获取具有 "ref"
属性的节点的名称:
//*[@ref]/name()
找到似乎有效的东西:
xmlstarlet sel -t -m "//*[@ref]" -v "name()" -n example.xml
-n
是在不同行上给出输出的标签。
可能是版本问题(不确定)。无论如何,这个 post 关于 xmlstarlet 的唯一输出与多个输出给了我一些帮助:
Why doesn't xmlstarlet select all nodes?