将 JSON 转换为 XML
适用于:所有 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" />
属性
属性 | 说明 | 需要 | 默认 |
---|---|---|---|
apply | 属性必须设置为以下值之一。 - 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
- 策略参考,其中提供了策略语句及其设置的完整列表
- 策略表达式
- 设置或编辑策略
- 策略示例