Поиск и замена политики API Azure - от "<" до "<" - PullRequest
0 голосов
/ 07 сентября 2018

В Azure API Management у меня есть API, в рамках исходящей политики которого я хочу найти и заменить следующим образом:

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

Однако символ "<", конечно, недопустим, поскольку сама политика написана на XML, что приводит к следующей ошибке: </p>

Ошибка анализа политики XML-документа. '<', шестнадцатеричное значение 0x3C, является недопустимым символом атрибута. Строка 72, позиция 43. </p>

Причина:

Мой backend API возвращает текстовую строку, которую я хочу «преобразовать» в действительный XML.

Вопросы

  1. Будет ли строка, которая использует & gt; и & lt; (минус пробелы) вместо <и> все еще будет действителен XML?
  2. Если ответ на вопрос №1 отрицательный, то как я могу найти и заменить в политике API Azure?

1 Ответ

0 голосов
/ 10 сентября 2018

Поскольку вы хотите преобразовать «<» (то есть три отдельных символа) в «<», и вы пишете XML, вам нужно дважды кодировать объекты. Попробуйте: </p>

<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;" />
...