Я работаю с некоторой сериализацией Xml в ASP.NET 2.0 в веб-сервисе. Проблема в том, что у меня есть элемент, который определен, как это:
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable:=True)> _
Public Property COMMENTFIELD() As String
Get
Return CommentField ' This is a string
End Get
Set(ByVal value as String)
CommentField = value
End Set
End Property
В другом месте кода я создаю комментарий и добавляю & # xA; как разрыв строки (в соответствии с правилами веб-службы, которую мы отправляем) между каждым «комментарием», например, так: (Помните, что & # xA; является действительным объектом XML, представляющим символ 10 (перевод строки I верить).
XmlObject.COMMENTFIELD = sComment1 & "
" & sComment2
Проблема в том, что .NET пытается оказать нам услугу и кодирует & в строке комментария, которая в итоге отправляет целевую веб-службу так: &#xA;
, что, очевидно, не то, что мы хотим.
Вот что сейчас происходит:
XmlObject.COMMENTFIELD = sComment1 & "
" & sComment2
Выход:
<COMMENTFIELD>comment1 &#xA comment2</COMMENTFIELD>
Вывод мне НУЖЕН:
<COMMENTFIELD>comment1 
 comment2</COMMENTFIELD>
Вопрос в следующем: Как заставить среду выполнения .NET не пытаться и не оказывать мне никаких услуг в отношении кодирования данных, которые, как я уже знаю, совместимы с XML и уже экранированы (кстати, sComment1 и sComment2 уже сбежать). Я привык заботиться о своем XML, не зависимо от чего-то волшебного, что происходит от всех моих данных за моей спиной!
Мне нужно иметь возможность передавать действительный XML в свойство COMMENTFIELD без кодирования .NET данных, которые я ему даю (так как это уже XML). Мне нужно знать, как сообщить .NET, что получаемые данные являются строкой XML, а не обычной строкой, которую необходимо экранировать.