SOAP XMLメッセージのフォーマット — Envelope、Header、Body
SOAP XMLメッセージをフォーマットしてプリティプリントします。SOAP Envelopeの構造、名前空間、HeaderとBody要素、複雑なSOAPリクエスト/レスポンスペイロードの読み方を解説します。
XML Types
詳細な説明
SOAP XMLのフォーマット
SOAP(Simple Object Access Protocol)メッセージは特定の構造を持つXMLドキュメントです:オプションの Header と必須の Body を含む Envelope 要素で構成されます。SOAP XMLのフォーマットにより、深くネストされた名前空間の多いメッセージが読みやすくなります。
SOAP Envelopeの構造
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ws="http://example.com/webservice">
<soap:Header>
<ws:AuthToken>abc123</ws:AuthToken>
</soap:Header>
<soap:Body>
<ws:GetUserRequest>
<ws:UserId>42</ws:UserId>
</ws:GetUserRequest>
</soap:Body>
</soap:Envelope>
名前空間プレフィックス
SOAPメッセージはXML名前空間を多用します。各プレフィックス(soap:、ws:、xsi: など)は xmlns 宣言を通じてURIにバインドされます。良いフォーマッターはこれらの宣言を保持し、読みやすさのために整列させます。
一般的な名前空間URI
http://schemas.xmlsoap.org/soap/envelope/— SOAP 1.1http://www.w3.org/2003/05/soap-envelope— SOAP 1.2http://www.w3.org/2001/XMLSchema-instance— XML Schema Instancehttp://www.w3.org/2001/XMLSchema— XML Schema Definition
SOAP Faultメッセージ
エラーレスポンスはBody内の <soap:Fault> 要素を使用します:
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Invalid user ID</faultstring>
<detail>
<errorCode>USR-404</errorCode>
</detail>
</soap:Fault>
</soap:Body>
Faultメッセージのフォーマットにより、エラーの階層構造が明確に表示されます:フォルトコード、人間が読めるメッセージ、構造化された詳細。
SOAPのフォーマットのヒント
- Bodyのコンテンツを一貫してインデントし、実際のビジネスペイロードがEnvelopeの定型文から目立つようにします。
- 名前空間宣言はルートの
Envelope要素に配置して明確にします。 - SOAPメッセージに埋め込みXML(例:文字列要素内のBase64エンコードXML)が含まれる場合、そのコンテンツを別途デコードしてフォーマットします。
ユースケース
SOAP XMLフォーマットは、Webサービス呼び出しをデバッグするエンタープライズ統合開発者、SOAPリクエスト/レスポンスログをレビューするQAエンジニア、レガシーSOAP APIを維持するチームに不可欠です。フォーマット済みSOAPメッセージにより、リクエスト構造の比較や欠落・不正なフィールドの特定が容易になります。