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

mat*_*ash 1 xml xpath xmlstarlet

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

<a>
    <b><c/></b>
    <d/>
</a>
Run Code Online (Sandbox Code Playgroud)

应该返回:

b
d
Run Code Online (Sandbox Code Playgroud)

我试过

xmlstarlet sel -t -c 'name(/a/*)' -
Run Code Online (Sandbox Code Playgroud)

但这只给了我b

Mar*_*nen 6

我不认为 XPath 1.0 表达式可以做到这一点,您要么需要 XPath 2.0 /a/*/name()(我认为 xmlstarlet 不支持),要么需要使用 XSLT 或尝试使用 xmlstarlet 命令行选项来尝试模仿 XSLT。我无权访问该工具,也不熟悉详细信息,根据http://xmlstar.sourceforge.net/doc/xmlstarlet.txt你可以尝试

xmlstarlet sel -t -m "/a/*" -v "name()"
Run Code Online (Sandbox Code Playgroud)

未经测试。