2012-05-23 135 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