XML序列化和反序列化及实例

XmlSerializer.Deserialize 方法 (XmlReader)  反序列化

 

1.普通xml序列化,不带属性序列化

2.带属性的序列化  SoapAttribute 属性 (本章主要代码)

*****************************************************************************************************

关键1:[SoapAttribute(DataType = "date", AttributeName = "CreationDate")]   //此句告诉编译器 序列化成属性,然后属性name为createiondate

        public DateTime Today;

关键2: 带属性的序列化和反序列化要使用下面的

 

XmlTypeMapping myMapping = (new SoapReflectionImporter().ImportTypeMapping(typeof(T)));

XmlSerializer mySerializer = new XmlSerializer(myMapping);

*******************************************************************************************************

1.基本类

public class Douban
{
public Logininfo Login=new Logininfo();
public Registinfo Regist=new Registinfo();
}

public class Logininfo
{

[SoapAttribute(DataType = "string", AttributeName = "CreationDate")]
public string testValue;

public string LoginUrl;
public string LoginCodeUrl;
}
public class Registinfo
{
public string RegistUrl;
public string RegistCodeUrl;
}

2.序列化的方法

public void XmlSerialize<T>(string filename,T t)
{
// Create an instance of the XmlSerializer class.
XmlTypeMapping myMapping =
(new SoapReflectionImporter().ImportTypeMapping(
typeof(T)));
XmlSerializer mySerializer =
new XmlSerializer(myMapping);
XmlTextWriter writer =
new XmlTextWriter(filename, Encoding.UTF8);
writer.Formatting = Formatting.Indented;

// Serialize the class, and close the TextWriter.
mySerializer.Serialize(writer, t);
writer.WriteEndElement();
writer.Close();
}

3. 使用序列化方法,序列化指定的类

生成douban实例d,并在 Login字段上增加属性CreationDate= wocaonima

 

 


Douban d = new Douban();
d.Login.testValue = "wocaonima";
d.Login.LoginUrl = "1";
d.Login.LoginCodeUrl = "2";
d.Regist.RegistUrl = "3";
d.Regist.RegistCodeUrl = "4";


XmlSerialize<Douban>(@"C:\Users\ipod\Documents\Visual Studio 2010\Projects\douban注册_2013.3.4_DataGridView\datagridvew 实例\datagridvew 实例\ini3.xml", d);

 

生成的ini3.xml 文件内容如下。

 

<wrapper>
<Douban xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="id1">
<Login href="#id2" />
<Regist href="#id3" />
</Douban>
<Logininfo id="id2" d2p1:type="Logininfo" CreationDate="wocaonima" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance">
<LoginUrl xmlns:q1="http://www.w3.org/2001/XMLSchema" d2p1:type="q1:string">1</LoginUrl>
<LoginCodeUrl xmlns:q2="http://www.w3.org/2001/XMLSchema" d2p1:type="q2:string">2</LoginCodeUrl>
</Logininfo>
<Registinfo id="id3" d2p1:type="Registinfo" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance">
<RegistUrl xmlns:q3="http://www.w3.org/2001/XMLSchema" d2p1:type="q3:string">3</RegistUrl>
<RegistCodeUrl xmlns:q4="http://www.w3.org/2001/XMLSchema" d2p1:type="q4:string">4</RegistCodeUrl>
</Registinfo>
</wrapper>

 

 

 

 

 

最后补充带属性的反序列化方法:

 

public void DeserializeOriginal<T>(string filename,T t)
{
// Create an instance of the XmlSerializer class.
XmlTypeMapping myMapping =
(new SoapReflectionImporter().ImportTypeMapping(
typeof(T)));
XmlSerializer mySerializer =
new XmlSerializer(myMapping);


// Reading the file requires an XmlTextReader.
XmlTextReader reader=
new XmlTextReader(filename);
reader.ReadStartElement("wrapper");

// Deserialize and cast the object.

myGroup = (t) mySerializer.Deserialize(reader);
reader.ReadEndElement();
reader.Close();

}


posted on 2013-03-07 15:54 水墨.MR.H 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/StudyLife/archive/2013/03/07/2948223.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值