使用xmlstarlet从带命名空间的XML中提取指定属性值的语法是什么
xmlstarlet 提取目标XML中token属性的语法
该XML带有默认命名空间http://tableau.com/api,需要先绑定命名空间再执行查询,假设XML文件保存为tableau-response.xml,使用以下命令即可提取目标字符串:
xmlstarlet sel -N ns=http://tableau.com/api -t -v "/ns:tsResponse/ns:credentials/@token" tableau-response.xml
参数说明:
-N ns=http://tableau.com/api:将XML自带的默认命名空间绑定到自定义前缀ns,后续XPath路径需要统一使用该前缀-t:声明输出模板-v:指定输出匹配到的XPath路径对应的值/ns:tsResponse/ns:credentials/@token:定位到credentials节点的token属性的XPath路径
如果不想显式绑定命名空间,可以用匹配节点本地名称的简化写法,兼容性更强:
xmlstarlet sel -t -v "/*[local-name()='tsResponse']/*[local-name()='credentials']/@token" tableau-response.xml
运行上述任意命令,都会直接输出你需要的目标字符串BkDHOZICQpereh46o84yUQ|mwu76ctmJWcf6heNsvNBudrAaia9xEQH
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

