#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). Есть ли другой способ?