Вызов API возврата XML, как использовать XmlSerializer для десериализации файла в объект? - PullRequest
0 голосов
/ 14 декабря 2018

Недавно я потратил довольно много времени на них и хочу записать некоторые заметки, надеюсь, это поможет.Шаг 1: Сделайте вызов API, обратите внимание, что contentType: «application / xml», вы можете проверить Пример кода ниже.
Шаг 2: Сложная часть - как создать класс «myObject».
Еслиобъект не полностью совпадает с возвращаемым XML, тогда вы всегда получите ошибку десериализации XML и не будете иметь никакого представления.

Проверьте мой ответ ниже на предмет создания класса .cs, который может исправить десериализацию.

try
            {
                byte[] bHeaderBytes = System.Text.Encoding.UTF8.GetBytes(GetUserPasswordString());
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(cRequestString);
                request.Method = WebRequestMethods.Http.Get;
                request.PreAuthenticate = true;
                request.ContentType = "application/xml";
                request.Accept = "application/xml";
                request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(bHeaderBytes));
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(response.GetResponseStream());                                                           
                XmlNodeReader xReader = new XmlNodeReader(xmlDoc.DocumentElement);           
                return (myObject)xSerializer.Deserialize(xReader);                
            }
            catch
            {
                return null;
            }     

1 Ответ

0 голосов
/ 14 декабря 2018
  1. Отладка кода, после запуска этой строки, проверьте xmlDoc -> innerXML, скопируйте в текстовый файл и сохраните как .xml на локальном компьютере.Вы можете перейти на веб-сайт проверки XML в Интернете, чтобы убедиться, что XML является действительным.Иногда добавляются некоторые дополнительные символы, что вызывает проблемы.

    xmlDoc.Load (response.GetResponseStream ());

  2. Создайте файл .xsd, это можно сделать в Интернете.
  3. Создайте файл класса, например: .cs, из файла .xsd с помощью xsd.exe (можно загрузить). Возможно, вы захотите добавить переменную path для этого exe.
    После установки, вы можете открыть Visual Studio Command Propmpt ->
    Введите: c: \ temp> xsd.exe sample.xsd / classes
    , тогда файл .cs будет создан в той же папке.
...