求助编写XPath提取XML中Name关联的Resource或ID值
针对需求的XPath及xmllint命令实现
假设你的XML结构类似如下(若实际结构不同,仅需调整XPath中的节点路径即可):
<Root> <Item Name="PROD-TEST" Resource="prod-res-001"> <ID>prod-id-001</ID> </Item> <!-- 其他条目 --> </Root>
需求1:提取Resource属性值并按指定格式输出
使用带字符串拼接的XPath,结合xmllint命令直接生成要求的格式:
xmllint --xpath 'concat("//*[@Name=''PROD-TEST'']/@Name, '' - '', //*[@Name=''PROD-TEST'']/@Resource")' your-file.xml
关键说明:
//*[@Name='PROD-TEST']定位所有Name属性值为PROD-TEST的节点concat()函数用于拼接字符串,将属性值与分隔符组合成要求的输出格式
需求2:提取ID标签内容并按指定格式输出
同样通过concat()实现字符串拼接,目标节点改为对应ID子节点:
xmllint --xpath 'concat("//*[@Name=''PROD-TEST'']/@Name, '' - '', //*[@Name=''PROD-TEST'']/ID/text()")' your-file.xml
关键说明:
/ID/text()定位到目标节点下ID子节点的纯文本内容- 若XML中
ID节点带有命名空间,需给xmllint添加--namespace参数并指定对应命名空间前缀
内容的提问来源于stack exchange,提问作者isilia
相关产品推荐
相关产品推荐

