gpt4 book ai didi

c# - 无法从 XML 反序列化

转载 作者:数据小太阳 更新时间:2023-10-29 02:27:19 27 4
gpt4 key购买 nike

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

最佳答案

问题可能是 XML 文件中的所有标记都是大写字母,但类中的属性表明它们应该是小写字母。

此外,您在属性中说 XML 根是 DTOFournitureListeImporter,但事实并非如此。 XML 根是 ROWSET

总而言之:您尝试创建的结构与 XML 文件不匹配。

关于c# - 无法从 XML 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10723732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com