请给我一些建议。我已经在命名空间“Xml_form_application”中提出了一个序列化类,它看起来像这样:
namespace Xml_form_application
{
public class RecordStore
{
public MyObject MyObjectProperty;
}
public class MyObject
{
public string item = "thing";
}
}
//Class form2 with button2 to calling this action /serialization)
private void button2_Click(object sender, EventArgs e)
{
RecordStore pd = new RecordStore();
TextWriter tr = new StreamWriter("C:/Users/admin/Dokumenty/Visual Studio 2010/Projects/Xml_form_application/Xml_form_application/Cvicna.xml");
XmlSerializer sr = new XmlSerializer(typeof(RecordStore));
sr.Serialize(tr, pd);
tr.Close();
}
在输入中有这个xml代码:
<?xml version="1.0" encoding="utf-8"?>
<RecordStore xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
我想用xml代码输入这个输入(我怎样才能达到这个结果):
<RecordStore>
<MyObjectProperty>
<item>thing</item>
</MyObjectProperty>
</RecordStore>
答案 0 :(得分:0)
<MyObjectProperty><item>thing</item></MyObjectProperty>
输出缺失,因为pd.MyObjectProperty
的计算结果为空。
默认情况下,XmlSerializer会忽略将序列化为 Elements 的非序列类型的空值。
与:比较:
RecordStore pd = new RecordStore {
// It's really a Field, not a Property ..
MyObjectProperty = new MyObject()
};
即使不是必需的,我建议您始终使用[XmlRoot]
,[XmlElement]
和[XmlAttributes]
属性,因为它们可以减轻一些重新分解的变化。
答案 1 :(得分:0)
您的MyObjectProperty
是null
,所以你没有得到那个东西。初始化它以获得预期结果。
RecordStore pd = new RecordStore();
pd.MyObjectProperty = new MyObject();