Обработка HTML-разметки в XML во время ASP.Net Десериализация

#c# #asp.net #xml #web-services #xml-serialization

#c# #asp.net #xml #веб-сервисы #xml-сериализация

Вопрос:

Я работаю над asp.net Веб-приложение MVC 3, которое отображает данные, которые оно собирает из веб-службы XML. Я определил объекты, представляющие сущности в XML, и вместо ручного синтаксического анализа я десериализую XML-ответ в соответствующий тип объекта.

Моя проблема в том, что данные, возвращаемые в веб-службе, содержат HTML-разметку в некоторых атрибутах.

 <directions>
Take a left <br/> now take right <br/>
</directions>
  

обратите внимание на <br/> вышесказанное, это приводит к сбою десериализатора. к вашему сведению, заставить крупного поставщика веб-услуг исправить эту проблему выходит за рамки простого разработчика.

Был бы очень признателен за любую помощь / предложения по изящному решению этой ситуации. Я не хочу прибегать к ручному синтаксическому анализу по соображениям трудоемкости / эффективности.

Спасибо

Ответ №1:

Окружите HTML тегами CDATA

 <![CDATA[Take a left <br /> now take a right <br />]]>
  

Комментарии:

1. Спасибо @TheGeekYouNeed. Хотя лучше всего решить проблему в ее источнике, это изменение должно быть выполнено на уровне веб-сервиса, и я не думаю, что смогу это сделать. Я должен придумать способ работы с данными на своей стороне.

2. Если подумать, я думаю, было бы нормально для меня записать ответ в строке, а затем изменить теги с недопустимыми данными. Что-то вроде:Response.replace(«<Указания>», «<Указания><! [CDATA[«); Response.replace(«</Directions>», «]]></Directions>»);

3. Я не могу управлять XML (не могу добавить CDATA). Есть ли другой способ?