Преобразование документа XML для поиска и замены & # xD; & # xA; ценности

У меня есть XML-документ, в котором есть SQL-запрос. Допустим, это выглядит, например, так:

<commandText> Select ProductID, ProductName
              From   Product</commandText>

Когда это запускается через octopack и развертывается (через octopus deploy) на моем сервере, это выглядит так:

<commandText> Select ProductID, ProductName&#xD;&#xA;     From   Product</commandText>

(Новая строка была преобразована в &#xD;&#xA;)

Есть ли xml-преобразование, которое я могу запустить после того, как было сделано это изменение, чтобы преобразовать его обратно? (или хотя бы удалить &#xD;&#xA;)

ПРИМЕЧАНИЕ. Мой фактический запрос - сложный оператор слияния, поэтому я бы предпочел, чтобы его не было в нескольких местах.

2 ответа

Решение

Что вам нужно, так это описанная здесь WHITESPACE PRESERVE функция сохранения XmlDocument https://msdn.microsoft.com/en-us/library/system.xml.xmldocument.preservewhitespace%28v=vs.110%29.aspx

Второй (и лучший) подход - позволить XML-декодированию автоматически. Вы используете неправильный метод, чтобы прочитать оператор выбора;)

Не уверен, что это поможет, но если я запускаю этот код (в Linqpad)

string x = "<commandText> Select ProductID, ProductName&#xD;&#xA;     From   Product</commandText>";
var wrapper = new StringReader(x);
XmlReader xr = XmlReader.Create(wrapper);
xr.MoveToContent();
xr.ReadOuterXml().Dump();

Я получаю этот буквальный вывод:

<commandText> Select ProductID, ProductName
     From   Product</commandText>

Поэтому, если вы используете XmlReader на сервере, не должно быть необходимости манипулировать объектами посредством преобразования. XmlReader должен их правильно интерпретировать. Не уверен, что это была проблема, хотя...

Другие вопросы по тегам