2013-09-12 2 views
0

Это XML, который я пытаюсь десериализовать. Я продолжаю получать «resultConfig xmlns = ''> не ожидалось."}XmlSerializer deserializer возвращает ошибку xmlns

Я устал от решения этой проблемы, когда ничего не делалось. Заранее спасибо.

<?xml version="1.0" encoding="UTF-8" ?> 
<resultConfig> 
    <folders> 
     <folder> 
      <location>C:\</location> 
     </folder> 
     <folder> 
      <location>C:\Temp</location> 
     </folder> 
    </folders> 
    <resultClasses> 
     <resultClass name="ScdExctractSqlXYZ" type="CSV"> 
      <resultTypeQuery>REGEX</resultTypeQuery> 
      <testIdQuery>REGEX</testIdQuery> 
     </resultClass> 
     <resultClass name="SubNotification" type="XML">  
      <resultTypeQuery>XPATH</resultTypeQuery> 
      <testIdQuery>XPATH</testIdQuery> 
      <transformation>something.xsl</transformation>  
     </resultClass> 
    </resultClasses> 
</resultConfig> 

я объявил свой класс объект как:

namespace TestGen 
{ 

    public class ResultClasses 
    { 
     [XmlRoot("resultConfig")] 
     public class resultConfig 
     { 
      [XmlArray("folders")] 
      [XmlArrayItem("folder")] 
      public List<folder> folders { get; set; } 

      [XmlArray("resultClasses")] 
      [XmlArrayItem("resultClass")] 
      public List<resultClass> classes { get; set; } 
     } 

     public class folder 
     { 
      [XmlArray("location")] 
      public string location { get; set; } 
     } 

     public class resultClass 
     { 
      [XmlAttribute("name")] 
      public string name { get; set; } 
      [XmlAttribute("type")] 
      public string type { get; set; } 


      [XmlArrayItem("resultTypeQuery")] 
      public string resultTypeQuery { get; set; } 
      [XmlArrayItem("testIdQuery")] 
      public string testIdQuery { get; set; } 
      [XmlArrayItem("transformation")] 
      public string transformation { get; set; } 

     }  

    } 

} 

Затем я называю мой десериализатор таким образом:

using (FileStream reader = new FileStream(@"C:\ResultConfig.xml", FileMode.Open, FileAccess.Read)) 
{ 

    XmlSerializer serializer = new XmlSerializer(typeof(ResultClasses)); 
    var ei = serializer.Deserialize(reader); 
} 

ответ

0

Что такое внешний класс ResultClasses хорошо? Если вы удалите это и используете new XmlSerializer(typeof(resultConfig)), он должен работать.

+0

Выполнение этой функции возвращает ошибку: произошла ошибка, отражающая тип «TestGen.resultConfig», сверлящий в стек. Я вижу это: {«Произошла ошибка, отражающая папки свойств».} – eetawil

+0

Дальнейшее копание я получаю: -array, вы можете использовать следующие атрибуты: XmlAttribute, XmlText, XmlElement или XmlAnyElement. " , кажется, жалуется на мой элемент – eetawil

+0

Решенный: я заменяю XMLArrayItem XmlElement местоположением моих элементов, resultTypeQuery, testIdQuery и преобразованием. Я также сделал то, что предложил @martinhonnen. – eetawil

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