Проблема пространства имен Xml с использованием httpclient при десериализации
У меня есть api, который возвращает результат:
<envelope:envelope xmlns:envelope="http://xxx.com/data-hub/envelope"> <envelope:header> <additionalInfo> <Rebates/> <Expenses>930879969</Expenses> <Months>20</Months> </additionalInfo> </envelope:header> </envelope>
Я получаю проблему :
Ошибка в строке 1 позиция 76. Ожидание элемента "конверт" из пространства имен 'http://schemas.datacontract.org/2004/07/'
.. Встреченный "элемент" с именем "конверт", пространство имен "http://xxx.com/data-hub/envelope".
Что я уже пробовал:
using (HttpClient client = new HttpClient()) { var responseTask = await client.GetAsync(uri); responseTask.Wait(); var result = responseTask.Result; if (result.IsSuccessStatusCode) { var readTask = result.Content.ReadAsAsync<t>(); readTask.Wait(); response = readTask.Result; }
Я получаю ошибку в ReadAsynch< t>
Класс T, который я посылаю, это:
[XmlRoot(ElementName = "envelope", Namespace = "http://xxx.com/data-hub/envelope")] public class Envelope { [XmlElement(ElementName = "header", Namespace = "http://xxx.com/data-hub/envelope")] public Header Header { get; set; } [XmlAttribute(AttributeName = "envelope", Namespace = "http://www.w3.org/2000/xmlns/")] public string _envelope { get; set; } }
public class Header { [XmlElement(ElementName = "additionalInfo")] public AdditionalInfo AdditionalInfo { get; set; } }
public class AdditionalInfo { [XmlElement(ElementName = "Rebates")] public string Rebates { get; set; } [XmlElement(ElementName = "Expenses")] public string Expenses { get; set; } [XmlElement(ElementName = "Months")] public string Months{ get; set; } }
PIEBALDconsult
Выглядит непоследовательно.
Не должна ли последняя строка XML быть < / envelope:envelope>?
А в вашем коде почему [XmlAttribute(AttributeName = "envelope", Namespace = "http://www.w3.org/2000/xmlns/")] ?
Я обнаружил, что с пространствами имен XML трудно работать, и особенно если вы связываетесь с пространством имен по умолчанию/пустым пространством имен, поэтому я рекомендую не использовать его.
Graeme_Grant
"Я обнаружил, что с пространствами имен XML трудно работать"... неужели? Тогда вам не понравится программирование на XAML?
PIEBALDconsult
Что меня в любом случае не интересует.
Graeme_Grant
WPF, UWP, Xamarin Forms XAML очень гибкий и мощный инструмент для проектирования пользовательского интерфейса... и особенно для привязки данных по сравнению с приложениями Winform.
PIEBALDconsult
Я не занимаюсь дизайном пользовательского интерфейса (меня просили этого не делать), а привязка данных-это для неженок.
Graeme_Grant
Ржунимагу!