C Sharp сериализует XML с объектами HTML

У меня есть строка в базе данных, которая содержит угловые скобки (меньше/больше). Мне нужно вставить строку в XElement, а затем сериализовать ее на клиентское устройство. Теперь объекты html, очевидно, кодируются, поэтому скобки отображаются как ‹ и ›, и лучший способ — использовать HttpUtility.HtmlDecode для декодирования объектов обратно на клиентском устройстве. Но мне интересно, есть ли способ избежать кодирования и отправить эти объекты как есть?


person Shahid    schedule 23.07.2010    source источник


Ответы (2)


Используйте метод SecurityElement.Escape.

person Denis Palnitsky    schedule 23.07.2010
comment
Это по-прежнему превращает его в lt; и гт; (не сохраняет как ‹ и ›) - person Shahid; 23.07.2010
comment
Вам нужно обработать это на клиенте. С ‹ и › xml будет искажен. - person Denis Palnitsky; 23.07.2010

Если вы установите свойство XElement.Value, да, оно будет закодировано при сериализации. Но когда вы десериализуете его на клиенте и получите доступ к свойству XElement.Value, оно будет незакодировано. См. этот быстрый пример:

var htmlData = "<some data>";
XElement element = new XElement("data");
element.Value = htmlData;

var xml = element.ToString();
var data = element.Value;
if (data != htmlData)
    throw new NotImplementedException("this didn't work");

Если вы установите точку останова, вы увидите, что переменная 'xml' действительно содержит закодированную строку html.

person PatrickSteele    schedule 23.07.2010