从 C# 对象生成 XML 时出现问题

本文关键字:问题 XML 对象 | 更新日期: 2023-09-27 18:34:42

我正在尝试从对象生成XML文件。我在生成 XML 文件之前放置了一个断点,以便可以检查值。对象及其值看起来很好。但是,在生成 XML 文件后,它缺少一个关键组件,即代码。

这就是我期望看到的。

<eDocument Code="UN" Cat="ST">                          
  <id myId="5"/>
</eDocument>

这是生成的实际 xml 文件。

<eDocument Cat="EST">                          
  <id myId="5"/>
</eDocument>

这是要序列化以生成 xml 文件的对象。

sDoc eDocument = new sDoc();
eDocument.Code = "UN";
eDocument.Cat = "ST";
eDocument.myId = new ID[1];
eDocument.myId[0].id= 5;

这就是我保存文件的方式

 string fileName= "student.xml";
 XmlSerializer serializeObject = new XmlSerializer(eDocument.GetType());
 TextWriter streamWritter = new StreamWriter(Server.MapPath(@"~/student/" + fileName));
 serializeObject.Serialize(streamWritter, eDocument); // I check the eDocument Object, and it has all the correct inforamtion
 streamWritter.Close();

我在这里做错了什么吗?

从 C# 对象生成 XML 时出现问题

您需要检查 sDoc 类中的 "Code" 属性。

属性应该是公共读/写的,以便 XML 可序列化。默认情况下,如果没有属性应用于公共属性,则会将其序列化为 XML 元素。在您的情况下,它根本没有序列化,这意味着有问题。

第一个检查:属性在读取(获取(和写入(设置(中是否公开?

第二次检查:字段不是标有 [XmlIgnoreAttribute] 吗?

最后:用 [XmlAttribute] 标记 Cat 属性会将其作为属性进行 xml 序列化。