根据标签 xml bash 中的属性搜索和 return 标签名称
Search and return tag name based off attribute within the tag xml bash
我有一个包含 "name" 属性的标签。标记 (xsd:tag1) 本身在 XML 文件中 不是 唯一,但名称属性 (name1) 是唯一的。我如何使用 xmlstarlet
或其他方式搜索和 return 标签名称(即 return xsd:tag1)? XML 的示例如下所示。
<doc xmlns:xsd="http://example.com">
<xsd:parentTag>
<xsd:tag1 name="name1" />
</xsd:parentTag>
</doc>
您提供的示例输入有两个问题:
<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
抱怨未定义的命名空间。
我有一个包含 "name" 属性的标签。标记 (xsd:tag1) 本身在 XML 文件中 不是 唯一,但名称属性 (name1) 是唯一的。我如何使用 xmlstarlet
或其他方式搜索和 return 标签名称(即 return xsd:tag1)? XML 的示例如下所示。
<doc xmlns:xsd="http://example.com">
<xsd:parentTag>
<xsd:tag1 name="name1" />
</xsd:parentTag>
</doc>
您提供的示例输入有两个问题:
<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
抱怨未定义的命名空间。