从C#Object生成XML的问题

时间:2014-12-19 22:06:57

标签: c# xml xml-deserialization

我正在尝试从Object生成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();

我在这里做错了吗?

1 个答案:

答案 0 :(得分:2)

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

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

首先检查:read(get)和write(set)中的属性是公共的吗?

第二次检查:是否标有[XmlIgnoreAttribute]的字段?

最后:用[XmlAttribute]标记Cat属性将xml-serialize作为属性。