无法从XML反序列化

3

我有一个固定的、有效的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();

还有错误:

XML文档(2,2)中存在错误。- System.InvalidOperationException:未预期。Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderDTOFournitureListeImporter.Read4_DTOFournitureListeImporter()


7
你好,请使用英语发布你的问题!这里并非所有人都会讲法语。该网站为英语网站,请用英语提问,谢谢。 - user703016
2
我不想失礼,但你应该尝试用英语写作。如果我开始用意大利语写作,其他人用西班牙语或德语写作会发生什么呢?(至少尝试一下,这里有很多人可以纠正你的文本...还有我的 :-)) - Steve
3
I do not understand this question as it is written in French. Could you please translate it to English so that I can understand and possibly help you? - user1203803
12
请勿关闭此页面,我正在将其翻译成奇怪的英语。 - user703016
5
@Cicada:我把它关闭了……然后重新打开了。不客气。 - BoltClock
显示剩余3条评论
1个回答

4
问题可能是XML文件中的所有标记都是大写字母,但您类中的属性表明它们应该是小写字母。
此外,您在属性中说XML根元素是“DTOFournitureListeImporter”,但实际上不是这样。XML根元素是“ROWSET”。
总之,您尝试创建的结构与XML文件不匹配。

运行此代码时的确切错误消息是“<ROWSET xmlns=''> was not expected.” - mellamokb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接