2013-09-13 2 views
0

У меня есть следующий код, и он делает то, что я хочу, чтобы он делал. Он получает XML-данные из веб-вызова и помещает его в объект.Получение всего текста с помощью веб-телефона

string url = ConfigurationManager.AppSettings[CONFIGURATION_KEY_XE_COM_URL]; 

     var serialiser = new XmlSerializer(typeof(xedatafeed)); 

     var settings = new XmlReaderSettings {XmlResolver = null, DtdProcessing = DtdProcessing.Parse}; 

     var reader = XmlReader.Create(url, settings); 

     var feed = (xedatafeed) serialiser.Deserialize(reader); 

     return feed; 

Вопрос заключается в том, что я хочу, чтобы получить строковое представление этих данных, а также и делать feed.ToString() почти дает мне все данные, но не все. Есть две вещи, которые отсутствуют

  1. В <?xml version="1.0" encoding="ISO-8859-1"?> декларации
  2. Декларация DTD, которые пришли вместе с ответом.

Мне также нужны эти две вещи. Мне пришлось исключить объявление DTD, поскольку оно не требовалось для десериализации в объект, и это вызвало ошибку, когда я не исключил ее. Какой самый чистый способ получить полный ответ, учитывая приведенный выше код?

ответ

1

По моему опыту, он может добавить объявление в строку после получения результата из webservice или объявить его программным путем.

Метод 1 - Добавить объявление XML после reciept данных

string xmlStr = string.format(@" &lt; ?xml version=\"1.0\" encoding=\"ISO-8859-1\"? &gt; {0}", WebServiceStringResult) 

Затем вы можете создать новый объект XML документа с каскадной строки с:

YourXmlDocumentObject.ReadXML(xmlStr) 
  1. А затем петли over или x выберите нужные значения. или
  2. Приведение/манипулирование объектом YourXmlDocumentObject по мере необходимости.

Метод 2 - Программное добавить объявления XML/DTD после reciept данных

В вашем новом объекте XmlDocument установите свойства, чтобы соответствовать вашей версии XML и DTD информации.

Наконец, просто добавьте свой WebService результирующую строку с:

YourXmlDocumentObject.ReadXML(WebServiceStringResult); 

Примечание: Мыло 1,1 и 1,2 будет падать с декларацией в рамках внедренного запроса. , т. Е. Объявление находится внутри вашего одного из ваших веб-методов.

~^я все еще учусь использовать этот POXY редактор, извините ~

+0

Привет Аарон, не знаю, как я могу интегрировать выше в мой код. –

+0

Плюс, я хочу только получить то, что на самом деле находится в моем ответе, в строку и не предполагать, что он будет содержать конкретную кодировку, например. Мне бы хотелось увидеть подробности здесь. –

+0

Я думаю, вопрос в том, что вы хотите сделать с этим объектом «feed», как только вы его создали? – FlemGrem

Смежные вопросы