如何使用xmllint或xmlstarlet解析SOAP文件



我有以下SOAP文件:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<auth:Session xmlns:auth="http://www" SOAP-ENV:mustUnderstand="1">
<auth:IPAddress>1111</auth:IPAddress>
</auth:Session>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<auth:SessionT xmlns:auth="http://www.">result</auth:SessionT>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我想得到结果。我尝试过不同的方法,但每次都会出现相同的错误";SessionT上的命名空间前缀auth未定义">

这是我尝试过的命令之一:xmlstarlet sel -t -v /auth:SessionT test.xml

Br,JD-

使用xmlstarlet,使用-N选项提供源文档中存在的命名空间:

$ xmlstarlet sel -N auth="http://www." -t -v "//auth:SessionT" test.xml
result

使用xmllint,您可以简单地使用local-name()来检查标签名称:

$ xmllint --xpath '//*[local-name() = "SessionT"]/text()' test.xml
result

没有标记,但另一种选择是使用xq(带有yq的jq包装器(,如下所示:

$ xq -r '.. | ."auth:SessionT"? // empty | ."#text"' test.xml
result

相关内容

  • 没有找到相关文章

最新更新