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への変換戦略:

  1. 完全変換 -- ヘッダーを含むエンベロープ全体を変換。ロギングとデバッグに有用。
  2. ボディ抽出 -- エンベロープとヘッダーをスキップし、<Body> コンテンツのみを変換。API統合で最も一般的。
  3. アンラップされたレスポンス -- ボディ内のレスポンスオブジェクトのみを抽出し、エンベロープと操作ラッパーの両方を除去。最もクリーンなJSONを生成。

SOAPフォルトの処理:

SOAPフォルトは <soap:Fault> 要素で表されます。JSONに変換すると:

{
  "Fault": {
    "faultcode": "soap:Server",
    "faultstring": "Internal server error",
    "detail": { "errorCode": "DB_TIMEOUT" }
  }
}

SOAPでの名前空間処理:

SOAPレスポンスは多数の名前空間を使用します。JSON出力では通常:

  • すべての名前空間プレフィックスを除去(ns:NameName になる)
  • xmlns 宣言を削除
  • 要素のローカル名のみを保持

これにより、名前空間情報が失われる代わりにクリーンで読みやすいJSONが生成されます。

ユースケース

レガシーな銀行サービスからのSOAPレスポンスをクリーンなJSONに変換するAPIゲートウェイを構築し、モダンなモバイルバンキングアプリケーションが消費できるようにする場合。

試してみる — JSON ↔ XML Converter

フルツールを開く