在Azure API Management中,我有一个API,在其出站策略中我希望像这样找到并替换;
<find-and-replace from="<" to="<" />
但是,“<”字符当然是非法的,因为策略本身是用XML编写的,这给我带来了以下错误;
解析策略xml文档时出错。 '<',十六进制值0x3C,是无效的属性字符。第72行,第43位。
原因:
我的后端API返回一个文本字符串,我想将其“转换”为有效的XML。
问题:
由于你想将“<”(即三个单独的字符)转换为“<”并且你正在编写一个XML,你必须对事物进行双重编码。尝试:
<find-and-replace from="&lt;" to="<" />
这种方式XML解码后的第一个字符串将成为“<
”,第二个 - “<
”。
请注意,这不是APIM问题,它是XML编码问题,例如此代码:
new XElement("el", new XAttribute("at", "<")).ToString()
产生这样的XML:
<el at="&lt;" />