2012-05-23 3 views
3

У меня есть фиксированный, действительный XML-документ. Я пытаюсь десериализировать его, чтобы получить иерархию объектов. Однако есть исключение.Не удается десериализовать из XML

Это мой XML документ:

<ROWSET> 
    <ROW> 
     <LOT>LOT1234</LOT> 
     <DATE_TRANS>2012-05-20</DATE_TRANS> 
     <NUMERO_AA227>AA227_001</NUMERO_AA227> 
     <NUMERO_ETUI>ETUI_001</NUMERO_ETUI> 
     <IDENTITE_BOITE_1>Boite1_1</IDENTITE_BOITE_1> 
     <IDENTITE_BOITE_2>Boite1_2</IDENTITE_BOITE_2> 
     <IDENTITE_BOITE_3>Boite1_3</IDENTITE_BOITE_3> 
     <IDENTITE_BOITE_4>Boite1_5</IDENTITE_BOITE_4> 
     <IDENTITE_BOITE_5>Boite1_5</IDENTITE_BOITE_5> 
    </ROW> 
    <ROW> 
     <LOT>LOT5678</LOT> 
     <DATE_TRANS>2012-05-20</DATE_TRANS> 
     <NUMERO_AA227>AA227_001</NUMERO_AA227> 
     <NUMERO_ETUI>ETUI_001</NUMERO_ETUI> 
     <IDENTITE_BOITE_1>Boite1_1</IDENTITE_BOITE_1> 
     <IDENTITE_BOITE_2>Boite1_2</IDENTITE_BOITE_2> 
     <IDENTITE_BOITE_3>Boite1_3</IDENTITE_BOITE_3> 
     <IDENTITE_BOITE_4>Boite1_5</IDENTITE_BOITE_4> 
     <IDENTITE_BOITE_5>Boite1_5</IDENTITE_BOITE_5> 
    </ROW> 
</ROWSET> 

И это мой объектная модель:

[Serializable] 
[System.Xml.Serialization.XmlRoot("DTOFournitureListeImporter")] 
public class DTOFournitureListeImporter 
{ 
    [XmlArray("ROWSET")] 
    [XmlArrayItem("ROW", typeof(DTOFournitureImporter))] 
    public DTOFournitureImporter[] dtoFournitureImporter { get; set; } 
} 

[Serializable] 
public class DTOFournitureImporter 
{ 
    [System.Xml.Serialization.XmlElement("lot")] 
    public string lot { get; set; } 

    [System.Xml.Serialization.XmlElement("date_trans")] 
    public DateTime date_trans { get; set; } 

    [System.Xml.Serialization.XmlElement("numero_aa227")] 
    public string numero_aa227 { get; set; } 

    [System.Xml.Serialization.XmlElement("numero_etui")] 
    public string numero_etui { get; set; } 

    [System.Xml.Serialization.XmlElement("identite_boite_1")] 
    public string identite_boite_1 { get; set; } 

    [System.Xml.Serialization.XmlElement("identite_boite_2")] 
    public string identite_boite_2 { get; set; } 

    [System.Xml.Serialization.XmlElement("identite_boite_3")] 
    public string identite_boite_3 { get; set; } 

    [System.Xml.Serialization.XmlElement("identite_boite_4")] 
    public string identite_boite_4 { get; set; } 

    [System.Xml.Serialization.XmlElement("identite_boite_5")] 
    public string identite_boite_5 { get; set; } 
} 

Как десериализации:

XmlSerializer serializer = new XmlSerializer(typeof(DTOFournitureListeImporter)); 
TextReader textReader = new StreamReader(model.cheminFichierXML); 
DTOFournitureListeImporter dTOFournitureListeImporter = (DTOFournitureListeImporter)serializer.Deserialize(textReader); 
textReader.Close(); 

И ошибка:

There is an error in XML document (2, 2). - System.InvalidOperationException: was not expected. Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderDTOFournitureListeImporter.Read4_DTOFournitureListeImporter()

+7

Привет, пожалуйста, разместите свой вопрос на английском языке! Не все говорят по-французски. Ce site est anglophone, posez votre question en anglais svp. –

+0

Pouvez-vous mettre cela en anglais? – MilkyWayJoe

+0

Вы можете использовать Google Translate, чтобы перевести свой вопрос. –

ответ

4

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

Кроме того, вы говорите в атрибутах, что корень XML равен DTOFournitureListeImporter, что не так. Корнем XML является ROWSET.

Итак, все: структура, которую вы пытаетесь создать, не соответствует XML-файлу.

+0

+1 XML чувствителен к регистру, хороший catch –

+0

+1 Точное сообщение об ошибке, если вы запустите этот код, не было ' не ожидалось.' – mellamokb

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