XmlException при добавлении строки XML в качестве значения в теле запроса XML SOAP - PullRequest
0 голосов
/ 03 апреля 2019

Я пишу приложение, которое использует XML SOAP. Код, который пишет запрос, к сожалению, не в моих руках, так как это файл DLL, который был передан только мне. Я скачал dotPeek Jetbrain, чтобы декомпилировать файл DLL и посмотреть на код, там я обнаружил, что тело запроса мыльного сообщения пишется как таковое

string message = "<Value>" + myValue + "</Value>";

и затем анализируется как XElement.

Теперь это работает большую часть времени, так как большинство запросов принимают нормальные значения (например, <Value>true</Value>). Но в технологии xml, над которой мы работаем, есть специальный протокол, в котором мы должны передавать целые строки xml в качестве значения, например

string myValue = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Foobar ID=\"123\" />";

Это выдает ошибку:

Неожиданное объявление XML. Декларация XML должна быть первым узлом в документе, и символы пробела не допускаются до этого.

Как будет выглядеть мое получившееся XML-тело:

<Value><?xml version="1.0" encoding="utf-8"?><Foobar ID="123" /></Value>

Могу ли я как-нибудь передать эту строку XML, избегая ошибки? Я пишу все это на C #. Спасибо за помощь.

1 Ответ

0 голосов
/ 03 апреля 2019

Наконец-то нашел ответ через пару часов.Самым быстрым решением было бы преобразовать начальный и конечный теги в символьные объекты

string myValue = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Foobar ID=\"123\" />";
myValue = myValue.Replace("<", "&lt;").Replace(">", "&gt;");

. Вы также можете выбрать

  • HttpUtility.HtmlEncode * 1009.*
  • System.Net.WebUtility.HtmlEncode
...