C Sharp сериализует XML с HTML-сущностями

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

2 ответа

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

Если вы установите свойство 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.

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