SOAPエンベロープXMLからJSONへの変換
モダンAPI統合のためにSOAP XMLメッセージをJSONに変換する方法。エンベロープ構造、ヘッダー、ボディ抽出、フォルト処理、名前空間除去戦略を解説します。
Real-World
詳細な説明
SOAP(Simple Object Access Protocol)はXMLをメッセージ形式として使用します。SOAPエンベロープをJSONに変換することは、APIゲートウェイやミドルウェアを構築する際の最も一般的な実用的XML-JSON変換タスクの一つです。
一般的なSOAPレスポンス:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://example.com/api">
<soap:Header>
<ns:RequestId>REQ-12345</ns:RequestId>
</soap:Header>
<soap:Body>
<ns:GetUserResponse>
<ns:User>
<ns:Id>42</ns:Id>
<ns:Name>Alice Johnson</ns:Name>
<ns:Email>alice@example.com</ns:Email>
</ns:User>
</ns:GetUserResponse>
</soap:Body>
</soap:Envelope>
抽出されたJSON(名前空間除去、ボディのみ):
{
"GetUserResponse": {
"User": {
"Id": "42",
"Name": "Alice Johnson",
"Email": "alice@example.com"
}
}
}
SOAPからJSONへの変換戦略:
- 完全変換 -- ヘッダーを含むエンベロープ全体を変換。ロギングとデバッグに有用。
- ボディ抽出 -- エンベロープとヘッダーをスキップし、
<Body>コンテンツのみを変換。API統合で最も一般的。 - アンラップされたレスポンス -- ボディ内のレスポンスオブジェクトのみを抽出し、エンベロープと操作ラッパーの両方を除去。最もクリーンなJSONを生成。
SOAPフォルトの処理:
SOAPフォルトは <soap:Fault> 要素で表されます。JSONに変換すると:
{
"Fault": {
"faultcode": "soap:Server",
"faultstring": "Internal server error",
"detail": { "errorCode": "DB_TIMEOUT" }
}
}
SOAPでの名前空間処理:
SOAPレスポンスは多数の名前空間を使用します。JSON出力では通常:
- すべての名前空間プレフィックスを除去(
ns:NameはNameになる) xmlns宣言を削除- 要素のローカル名のみを保持
これにより、名前空間情報が失われる代わりにクリーンで読みやすいJSONが生成されます。
ユースケース
レガシーな銀行サービスからのSOAPレスポンスをクリーンなJSONに変換するAPIゲートウェイを構築し、モダンなモバイルバンキングアプリケーションが消費できるようにする場合。