我有一个包含“名称”属性的标签。标签(xsd:tag1)本身在XML文件中不是唯一,但名称属性(name1)是唯一的。如何使用xmlstarlet
或其他方式搜索并返回标签名称(即返回xsd:tag1)? XML的示例如下所示。
<doc xmlns:xsd="http://example.com">
<xsd:parentTag>
<xsd:tag1 name="name1" />
</xsd:parentTag>
</doc>
答案 0 :(得分:1)
您提供的示例输入有两个问题:
<xsd:tag1 name="name1">
必须关闭xsd:
如果文件input.xml
如下:
<doc xmlns:xsd="http://example.com">
<xsd:parentTag>
<xsd:tag1 name="name1" />
</xsd:parentTag>
</doc>
以下命令
xmlstarlet sel -T -t -m "//*[@name='name1']" -v 'name()' input.xml
收益
xsd:tag1
诀窍是在输入中包含正确的xmlns
声明,以避免xmlstarlet
抱怨未定义的名称空间。