Azure API策略查找和替换-从“ <”到“ <”

时间:2018-09-07 02:10:48

标签: xml azure-api-management

在Azure API管理中,我有一个API,在其出站策略中,我希望这样查找和替换;

<find-and-replace from="&lt;" to="<" />

但是,“ <”字符当然是非法的,因为该策略本身是用XML编写的,因此出现以下错误;

  

解析策略xml文档时出错。 “ <”(十六进制值0x3C)是无效的属性字符。第72行,位置43。

原因:

我的后端API返回一个文本字符串,我想将其“转换”为有效的XML。

问题

  1. 将使用&gt;的字符串吗?和&lt; (减去空格)而不是<和>仍然是XML有效的?
  2. 如果对#1的回答是否定的,那么如何在Azure API策略中查找和替换?

1 个答案:

答案 0 :(得分:0)

由于您要将“ <”(即三个独立的字符)转换为“ <”,并且要编写XML,因此必须对内容进行双重编码。试试:

<find-and-replace from="&amp;lt;" to="&lt;" />

这样,经过XML解码的XML的第一个字符串将变成“ &lt;”,第二个-变成“ <”。

请注意,这不是APIM问题,而是XML编码问题,例如以下代码:

new XElement("el", new XAttribute("at", "&lt;")).ToString()

产生这样的XML:

<el at="&amp;lt;" />