JSON から XML への変換

適用対象: すべての API Management レベル

json-to-xml ポリシーは、要求本文または応答本文を JSON から XML に変換します。

Note

ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。

ポリシー ステートメント

<json-to-xml 
    apply="always | content-type-json" 
    consider-accept-header="true | false" 
    parse-date="true | false" 
    namespace-separator="separator character"
    namespace-prefix="namespace prefix"
    attribute-block-name="name" />

属性

属性 説明 必要 Default
apply この属性の値は次のいずれかに設定する必要があります。

- always - 常に変換を適用します。
- content-type-json - 応答の Content-Type ヘッダーに JSON の存在が示されている場合のみ変換を行います。

ポリシー式を使用できます。
はい 該当なし
consider-accept-header この属性の値は次のいずれかに設定する必要があります。

- true - 要求の Accept ヘッダーで XML が要求されている場合に変換を適用します。
- false - 常に変換を適用します。

ポリシー式を使用できます。
いいえ true
parse-date false に設定すると、変換中、日付値がコピーされます。 ポリシー式は使用できません。 いいえ true
namespace-separator 名前空間の区切り文字として使用する文字。 ポリシー式を使用できます。 いいえ アンダースコア
namespace-prefix プロパティを名前空間属性 (通常は "xmlns") として識別する文字列。 指定したプレフィックスで始まる名前のプロパティは、名前空間宣言として現在の要素に追加されます。 ポリシー式を使用できます。 いいえ 該当なし
attribute-block-name 設定すると、指定されたオブジェクト内のプロパティが属性として要素に追加されます。 ポリシー式を使用できます。 いいえ 未設定

使用法

次のポリシーを考慮してください。

<policies>
    <inbound>
        <base />
    </inbound>
    <outbound>
        <base />
        <json-to-xml apply="always" consider-accept-header="false" parse-date="false" namespace-separator=":" namespace-prefix="xmlns" attribute-block-name="#attrs" />
    </outbound>
</policies>

バックエンドが次の JSON を返す場合:

{
  "soapenv:Envelope": {
    "xmlns:soapenv": "http://schemas.xmlsoap.org/soap/envelope/",
    "xmlns:v1": "http://localdomain.com/core/v1",
    "soapenv:Header": {},
    "soapenv:Body": {
      "v1:QueryList": {
        "#attrs": {
          "queryName": "test"
        },
        "v1:QueryItem": {
          "name": "dummy text"
        }
      }
    }
  }
}

クライアントへの XML 応答は次のようになります。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://localdomain.com/core/v1">
  <soapenv:Header />
  <soapenv:Body>
    <v1:QueryList queryName="test">
      <name>dummy text</name>
    </v1:QueryList>
  </soapenv:Body>
</soapenv:Envelope>

ポリシーに対する処理の詳細については、次のトピックを参照してください。