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

<a>
    <b><c/></b>
    <d/>
</a>


应该返回:

b
d


我试过了

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


但这只会给我b

最佳答案

我认为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()"


未经测试。

10-02 10:08