使用xmlstarlet / xpath获取所有子名称

时间:2015-09-30 09:35:04

标签: xml xpath xmlstarlet

使用xmlstarlet / xpath,如何获取某个节点的所有子元素的名称?例如,我想获取/a

的所有子元素名称
<a>
    <b><c/></b>
    <d/>
</a>

应该返回:

b
d

我试过

xmlstarlet sel -t -c 'name(/a/*)' -

但这只给了我b

1 个答案:

答案 0 :(得分:3)

我不认为XPath 1.0表达式可以做到这一点,您需要XPath 2.0 /a/*/name()(我不认为xmlstarlet支持)或者您需要使用XSLT或尝试使用尝试模仿XSLT的xmlstarlet命令行选项。根据{{​​3}}您可以尝试

,我无法访问该工具并且我不熟悉细节
xmlstarlet sel -t -m "/a/*" -v "name()"

未测试。