Я получаю данные из сторонних сервисов, например, GetStores, GetStore, GetEmployee и т. Д., URL-адреса которых сделаны в зависимости от моих требований, например
http://service/getstores
http://service/getemployee/123
и т.д..Я использую HttpWebRequest для выполнения этих операций
var hwr = (HttpWebRequest)WebRequest.Create(url);
CredentialCache cc = new CredentialCache();
cc.Add(new Uri(url), "Basic", new NetworkCredential(uname, pword));
hwr.Credentials = cc;
hwr.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(uname+pword)));
var resp = (HttpWebResponse)hwr.GetResponse();
Для начала я посмотрел на каждый XSD для каждого сервиса (GetStores, GetStore, GetEmployee и т. Д. Я думаю, что был еще один XSD, в котором есть ссылки навсе остальные XSD, которые я пропустил и сделал каждый сервис в отдельности) преобразовали его в XML - преобразовали классы XML в C #.Используя онлайн-сервисы (т. Е. http://xmltocsharp.azurewebsites.net/)
, я передаю каждый класс и возвращаю ответ из приведенного выше кода.
private static T GetStoreInfo<T>(string strResponse)
{
XmlSerializer xs= new XmlSerializer(typeof(T));
StringReader sr= new StringReader(strResponse);
T body = (T)xs.Deserialize(sr);
return obj;
}
Проблема, с которой я, похоже, сталкиваюсь, возникает сейчас изатем я получаю запись, которая выдает мне ошибку, такую как «В XML-документе (1, 40) имеется ошибка. Внутреннее исключение: -« xx не ожидалось ».« или подобные ошибки, которые указывают, чточто-то не так.
Я думаю, что классы генерируются неправильно, или даже XML не корректен для генерации классов C # с помощью онлайн-сервиса.
Поэтому я попытался использовать XSD, которыйсоздал класс, но это был один огромный класс. Свойства были примерно такими:
employee employeeType employeeDepartment employeeMedical
Итак, для начала я передал employee в приведенном выше коде, но это не анализирует.
Есть мысли о том, что я делаю не так, или я должен вернуться к рабочему классу, а затем вручную добавить необходимые свойства / классы?
У меня нет рабочего примера использования XSD таким образом, поэтому я не уверен, стоит ли мне попробовать еще раз (в таком случае я не могу найти никаких примеров, которым следует следовать, как разобрать XMLполучил)?
Примите во внимание любые другие идеи по этому вопросу.
Редактировать
Временная ссылка для XSD: http://webservices.vebra.com/export/xsd/v11/propertyexport.xsd
Созданный мной класс находится по адресу
https://rextester.com/ASW40990