一种快速读写xml的方式

  对xml的处理方式多种多样。例如:

  1.可以直接使用.NET中的XmlDocument操作xml文档,涉及XmlDocument、XmlTextReader、XmlElement 等对象的使用。

  2.可以直接把xml当成字符串,然后采用正则表达式进行处理。

  第一种xml处理方式会导致代码结构就像xml一样一层套一层,不够雅观(采用LINQ处理会好些);第二种方式在提取xml某些元素比较有用,也有局限性。其实,处理XML可以采用序列化、反序列化的机制进行处理。

 

  由于.NET中可以把类对象序列化成xml文件,也可以从xml反序列成类对象。基于这个思想,处理一个有效的xml可以分为下列几步:

  1.生成xml的schema文件

  2.基于xml的schema文件构造一个对应的类文件,比如类名叫XmlMock

  3.采用构造好的类XmlMock,从xml文件中反序列,初始化XmlMock对象

  4.对XmlMock对象中的字段进行处理(增、删、改)

  1、2参考:http://msdn.microsoft.com/zh-cn/library/x6c1kb0s(v=vs.80).aspx

  主要使用xsd.exe(如果x64操作系统,C:\Program Files改成C:\Program Files (x86))

      C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\xsd.exe 或

    C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\xsd.exe

  简单的使用方式

  ------------------------------------

  cd C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin

  xsd.exe test1.xml

  xsd.exe test1.xsd /classes

  ------------------------------------

  上述两步,即可生成test1.cs文件,类名是xml文件根节点的名字。

  得到xml文件对应的类文件,剩下就是xml序列化、反序列化了。

 1         /// <summary>
2 /// Convert serializable object to XML.
3 /// </summary>
4 public static string GetSerializedContent<T>(T xmlObj) where T : class
5 {
6 XmlSerializer serializer = new XmlSerializer(typeof(T));
7 MemoryStream stream = new MemoryStream();
8
9 serializer.Serialize(stream, xmlObj);
10 string xmlContent = string.Empty;
11 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
12 {
13 stream.Position = 0;
14 xmlContent = reader.ReadToEnd();
15 }
16
17 return xmlContent;
18 }
19
20 /// <summary>
21 /// deserialize xml content to xmlObj
22 /// </summary>
23 public static object DeserializeObject(Type ObjectType, string ObjectContent)
24 {
25 XmlSerializer serializer = new XmlSerializer(ObjectType);
26 byte[] buffer = Encoding.UTF8.GetBytes(ObjectContent);
27
28 MemoryStream stream = new MemoryStream(buffer);
29 return serializer.Deserialize(stream);
30 }

  上述两个方法即可完成xml的序列化和反序列化。

转载于:https://www.cnblogs.com/ahomer/archive/2012/03/26/2418139.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值