Как предотвратить кодирование HTML для встроенных выражений в XML-литералах (VB.NET)?

Со следующим кодом:

Dim x As System.Xml.Linq.XElement = _
<div>
<%= message.ToString() %>
</div>
Dim m = x.ToString()

... если сообщение является HTML, то символы <и> преобразуются в &lt; а также &rt;,

Как я могу заставить его пропустить эту кодировку?

2 ответа

Решение

Какой тип вашего message переменная? Если message является XElement, тогда просто оставь .ToString позвоните так:

Dim x As System.Xml.Linq.XElement = _
    <div>
        <%= message %>
    </div>
Dim m = x.ToString()

Если message это какой-то другой тип (например, StringBuilder), затем сделайте это:

Dim x As System.Xml.Linq.XElement = _
    <div>
        <%= XElement.Parse(message.ToString()) %>
    </div>
Dim m = x.ToString()

Вам нужно открыть фрагмент HTML как документ XML и добавить узел документа к узлу Div, который вы создаете.

Если вы хотите добавить XML (или HTML) к существующему XML-документу, вы должны добавить его как XML, а не как текст (причина, которая кодируется).

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