如何使用 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 上的命名空间前缀身份验证未定义”。
这是我尝试过的命令之一:
xmlstarlet sel -t -v /auth:SessionT test.xml
Br, 京东
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
xmlstarlet
,使用-N
选项提供源文档中存在的命名空间:使用
xmllint
,您可以简单地使用local -name()
仅检查标签名称:未标记,但另一种替代方法是使用
xq
(由 jq 包装器) “https://github.com/kislyuk/yq” rel="nofollow noreferrer">yq) 像这样:With
xmlstarlet
, provide the namespace present in the source document using the-N
option:Using
xmllint
, you could instead simply uselocal-name()
to just check the tag name:Not tagged, but yet another alternative would be using
xq
(ajq
wrapper provided with yq) like this: