<?xml version="1.0" encoding="utf-8" ?>
<test>
<room n="3" q="4"></room>
</test>
-----------------------------------------------------------------------------------------------------
// 定制XML格式
[XmlRoot("test")]
public class Clstest
{
public Room myRoom;
}
public class Room
{
[XmlAttribute(AttributeName="n")]
public int iN;
[XmlAttribute(AttributeName="q")]
public int iQ;
}
private void button3_Click(object sender, System.EventArgs e)
{
//对象串行化输出为XML
XmlSerializer aXml=new XmlSerializer(typeof(Clstest));
Clstest cls=new Clstest();
Room rom=new Room();
rom.iN=3;
rom.iQ=4;
cls.myRoom=rom;
//create file for writing out
TextWriter writer = new StreamWriter(@"F:/Order.xml",false, System.Text.Encoding.GetEncoding("gb2312"));
//serialize data to file
aXml.Serialize(writer,cls);
writer.Close();
}
-------------------------------------------------------------------------------------------------------------
又有一个问题
<?xml version="1.0" encoding="utf-8" ?>
<test>
<room n="3" q="4"></room>
<room n="5" q="3"></room>
</test>
这里有两个room,那又应该如何建立对象,并且能反序列化为一个对象集合呢?
---------------------------------------------------------------------------------------------------------------
[XmlRoot("test")]
public class Clstest
{
public Room myRoom;
}
改成:
[XmlRoot("test")]
public class Clstest
{
public Room[] myRoom; //用数组
}
序列化:
Room rom1=new Room();
rom1.iN=3;
rom1.iQ=4;
Room rom2=new Room();
rom2.iN=5;
rom2.iQ=4;
Clstest cls=new Clstest();
cls.myRoom=new Room[2]{rom1,rom2};