Как десериализовать фрагмент XML с помощью XML Reader - PullRequest
3 голосов
/ 16 марта 2009

Я пытаюсь десериализовать фрагмент XML. Я почти там, но он выдает ошибку, где он не ожидает первый элемент. Пример XML в потоке выглядит следующим образом:

  <Project xmlns="http://schemas.datacontract.org/2004/07/Swissmod.Service.Model" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <ClientID>1</ClientID> 
  <Created>2009-03-16T20:34:57.022167+00:00</Created> 
  <ID>22</ID> 
  <LastModified>2009-03-11T20:34:57.022167+00:00</LastModified> 
  <ProjectDescription>Description here</ProjectDescription> 
  <ProjectTitle>Poject title</ProjectTitle> 
  <UserID>5</UserID> 
  <Version>1234567</Version> 
  </Project>

Я использую следующий код для десериализации:

  XmlSerializer serializer = new XmlSerializer(typeof(Project));
  XmlReaderSettings settings = new XmlReaderSettings();
  settings.ValidationFlags = XmlSchemaValidationFlags.None;
  settings.ValidationType = ValidationType.None;
  settings.ConformanceLevel = ConformanceLevel.Auto;
  settings.IgnoreProcessingInstructions = true;
  settings.NameTable = new NameTable();
  settings.NameTable.Add("http://schemas.datacontract.org/2004/07/Swissmod.Service.Model");
  XmlReader reader = XmlReader.Create(wresp.GetResponseStream(),settings);
  Project p = (Project)serializer.Deserialize(reader);

Но вышеприведенное выдает следующую ошибку:

There is an error in XML document (1, 2).
"<Project xmlns='http://schemas.datacontract.org/2004/07/Swissmod.Service.Model'> was not expected."

У кого-нибудь есть идеи, как я могу прочитать фрагмент XML с помощью XML Reader?

1 Ответ

4 голосов
/ 16 марта 2009

В своем определении класса Project пытались ли вы указать пространство имен в атрибуте XmlRoot?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...