SOAP Envelope 元素

SOAP Envelope 元素详解

Envelope 是整个 SOAP 消息的根元素(root element),也是唯一强制存在的顶级元素。它把整个消息封装成一个合法的 XML 文档。

1. 基本语法(SOAP 1.2)

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">   <!-- 可选 -->

    <soap:Header> ... </soap:Header>   <!-- 可选 -->
    <soap:Body>   ... </soap:Body>     <!-- 必须 -->

</soap:Envelope>

2. Envelope 元素的所有合法属性

属性名称是否必须允许值 / 说明SOAP 1.1SOAP 1.2
xmlns:soap必须指定 SOAP 命名空间
SOAP 1.2:http://www.w3.org/2003/05/soap-envelope
SOAP 1.1:http://schemas.xmlsoap.org/soap/envelope/
soap:encodingStyle可选指明 Body 和 Header 中数据的序列化规则
常用值:http://www.w3.org/2003/05/soap-encoding
(SOAP 1.2 不推荐全局使用,建议在具体元素上声明)
是(不推荐全局)
xmlns:其他前缀可选为业务 payload 或 Header 中用到的其他命名空间声明前缀
xml:base可选XML Base,用于解析相对 URI
soap:role (SOAP 1.2)极少用早期提案,已被 role 属性替代(Header 块上使用)否(已废弃)

3. SOAP 1.1 与 SOAP 1.2 Envelope 的区别

项目SOAP 1.1SOAP 1.2
命名空间 URIhttp://schemas.xmlsoap.org/soap/envelope/http://www.w3.org/2003/05/soap-envelope
元素名称<env:Envelope><soap:Envelope>必须是 <soap:Envelope>(前缀可以自定义)
encodingStyle经常在 Envelope 上全局声明强烈不推荐在 Envelope 上声明,建议局部声明
必须子元素顺序Header(可选) → Body(必须)完全相同,但规范更严格

4. 实际最常见的两种写法

SOAP 1.2(推荐)

<soap12:Envelope 
    xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
    ...
</soap12:Envelope>

SOAP 1.1(很多老系统仍在用)

<soap:Envelope 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    ...
</soap:Envelope>

5. Envelope 必须满足的规则(否则算无效消息)

  1. 必须是 XML 文档的根元素
  2. 必须声明 SOAP 命名空间
  3. 只能包含一个 <soap:Header>(最多一个)和一个 <soap:Body>
  4. <soap:Header> 必须出现在 <soap:Body> 之前(如果存在)
  5. 不允许出现其他同级元素(除了 XML 声明和注释)

6. 最小合法 SOAP 消息示例

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <hello>world</hello>
  </soap:Body>
</soap:Envelope>

这就是一个完全符合标准的 SOAP 消息,虽然没有实际业务含义,但语法 100% 正确。

总结:Envelope 是 SOAP 消息的“信封”,所有内容都必须包裹在里面,它决定了消息使用的是 SOAP 1.1 还是 1.2,也承载了全局的编码风格声明(虽然现在不推荐)。

文章已创建 2965

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部