序列化 - 使用XmlSerializer进行序列化
2004-10-22 19:14
447 查看
假设我们需要XML,但是不想要SOAP特有的额外信息,应该怎么办?我们可以使用类库XMLSerializer。
代码如下:
using System;
using System.IO;
using System.Xml.Serialization;
//[Serializable]
public class Insect
class SerializeRawXMLApp
[STAThread]
static void Main(string[] args)
Insect i = new Insect("Meadow Brown", 12);
XmlSerializer x = new XmlSerializer(typeof(Insect));
Stream s = File.Create("AnInsect.xml");
x.Serialize(s, i);
s.Seek(0, SeekOrigin.Begin);
Insect j = (Insect)x.Deserialize(s);
s.Close();
Console.WriteLine(j);
}
}
注意:
1.这里去掉了Serializable属性和NonSerilizable属性,使用XMLIgnore属性完成NonSerialized类似的功能。
2.XmlSerializer不能安全的访地问私有成员,所以我们改为共有成员,也可以提供合适的公有属性(Property)。
3.Xml要求我们的类有一个默认构造器,这个条件可能已经满足了。
我们可以用VS.NET打开AnInsect.xml文件,可以看到以下信息:
<?xml version="1.0"?>
<Insect xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<name>Meadow Brown</name>
</Insect>
代码如下:
using System;
using System.IO;
using System.Xml.Serialization;
//[Serializable]
public class Insect
class SerializeRawXMLApp
[STAThread]
static void Main(string[] args)
Insect i = new Insect("Meadow Brown", 12);
XmlSerializer x = new XmlSerializer(typeof(Insect));
Stream s = File.Create("AnInsect.xml");
x.Serialize(s, i);
s.Seek(0, SeekOrigin.Begin);
Insect j = (Insect)x.Deserialize(s);
s.Close();
Console.WriteLine(j);
}
}
注意:
1.这里去掉了Serializable属性和NonSerilizable属性,使用XMLIgnore属性完成NonSerialized类似的功能。
2.XmlSerializer不能安全的访地问私有成员,所以我们改为共有成员,也可以提供合适的公有属性(Property)。
3.Xml要求我们的类有一个默认构造器,这个条件可能已经满足了。
我们可以用VS.NET打开AnInsect.xml文件,可以看到以下信息:
<?xml version="1.0"?>
<Insect xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<name>Meadow Brown</name>
</Insect>
相关文章推荐
- 使用XmlSerializer 进行xml序列化
- 使用XmlSerializer进行序列化
- Android中使用PULL方式解析XML和XmlSerializer进行序列化
- 使用C#语言进行序列化和反序列化
- System.UnauthorizedAccessException: 拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“NT AUTHORITY\NETWORK SERVICE”没有访问 temp 目录的足够权限。CodeDom 将使用进程正在使用的用户帐户进行编译,这样,如
- 基于kryonet的RPC,使用kryo进行序列化
- 使用 IExtensibleDataObject 进行往返式序列化
- 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
- mvc 使用Newtonsoft.Json进行序列化json数据
- python中使用pickle进行序列化
- java使用serializable进行序列化与反序列化实现对象clone(克隆)
- 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错
- 使用XmlSerializer序列化List对象成XML格式(list对象序列化)
- 【protobuf】 3.使用protobuf-csharp-port进行序列化和反序列化
- 使用XmlSerializer序列化可空属性
- 使用Serializable接口进行JAVA的序列化和反序列化
- C# 串行化与反串行化--使用XmlSerializer进行串行化
- C# 串行化与反串行化--使用XmlSerializer进行串行化
- [★].NET 使用 二进制格式 进行序列化
- WCF 第六章 序列化和编码 为自定义序列化使用XmlSerializer