适用于:所有 API 管理层级
              json-to-xml 策略将请求或响应正文从 JSON 转换为 XML。
注意
按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略。
策略语句
<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" />
属性
| 属性 | 说明 | 需要 | 默认 | 
|---|---|---|---|
| 应用 | 属性必须设置为以下值之一。 - always- 始终应用转换。- content-type-json- 仅在响应的 Content-Type 标头指示存在 JSON 的情况下进行转换。允许使用策略表达式。 | 是 | 空值 | 
| consider-accept-header | 属性必须设置为以下值之一。 - true- 如果在请求的 Accept 标头中请求了 XML,则应用转换。- false- 始终应用转换。允许使用策略表达式。 | 否 | true | 
| parse-date | 设为 false时,只在转换时简单地复制日期值。 不允许使用策略表达式。 | 否 | true | 
| 命名空间分隔符 | 用作命名空间分隔符的字符。 允许使用策略表达式。 | 否 | 下划线 | 
| 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>
相关策略
后续步骤
有关使用策略的详细信息,请参阅:
- 教程:转换和保护 API
- 策略参考,其中提供了策略语句及其设置的完整列表
- 策略表达式
- 设置或编辑策略
- 策略示例