我正在尝试从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();
我在这里做错了吗?
答案 0 :(得分:2)
您需要检查sDoc类中的“Code”属性。
属性应该是公共读/写才能成为Xml可序列化的。默认情况下,如果没有属性应用于公共属性,则将其序列化为XML元素。在你的情况下,它根本没有序列化,这意味着出了问题。
首先检查:read(get)和write(set)中的属性是公共的吗?
第二次检查:是否标有[XmlIgnoreAttribute]的字段?
最后:用[XmlAttribute]标记Cat属性将xml-serialize作为属性。