XML文件序列化和反序列化的相关内容
问题缘由:
XML反序列化出错,XML 文档(2, 2)中有错误,不应有 <configuration xmlns=''>
解决方法:
其实这个是很简单的,因为一般来说都是XML文档书写错误的问题!
只要把你想反序列化的对象,再序列化为XML文档。之后再对比之前出错的XML文档对比,就知道错误在哪了!
private void SerializeObject(string Xmlname)
{
XmlSerializer ser = new XmlSerializer(typeof(对象类型)); TextWriter writer = new StreamWriter(Xmlname);
ser.Serialize(writer, 对象);//要序列化的对象
writer.Close();
}
调用以上方法,可以把一个对象序列化XML文档(Xmlname:包含路径和Xml文件名)
以上摘自:http://www.cnblogs.com/louyu/archive/2011/01/06/1929038.html
顺手更新了下,见代码:
/// <summary>
/// 序列化成XML文件
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="path">XML文件位置</param>
private static void SerializeXml<T>(string path) where T : new()
{
T t = new T();
var ser = new XmlSerializer(typeof(T));
TextWriter writer = new StreamWriter(path);
ser.Serialize(writer, t);//要序列化的对象
writer.Close();
}
问题深入:
根据上面的方法序列化实体对象,得到的为一个简答的XML文件。但是如果我的XML文件相对略复杂,有多个配置组。 如果只是简单的反序列化,则也会报上面的错误。
经过研究,发现了XML序列化和反序列化的一些规则。一个比较好的资料:http://www.cnblogs.com/johnsmith/archive/2012/12/03/2799795.html,在代码的备注里解释的比较详细。
我的解决方法:
反序列化的方法:
/// <summary>
/// 反序列化
/// </summary>
/// <param name="type">对象类型</param>
/// <param name="filename">文件路径</param>
/// <returns></returns>
public static object XmlDeserialize(Type type, string filename)
{
FileStream fs = null;
try
{
fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(type);
return serializer.Deserialize(fs);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null)
{
fs.Close();
}
}
}
} //调用:
var obj = (List<类>)XmlDeserialize(typeof(List<类>), path);
XML文件:
<?xml version="1.0" ?>
<ArrayOf类 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<类>
<URI>127.0.0.1:61616</URI>
<TopicName>testTopic</TopicName>
<ClientId>testClient</ClientId>
<MessageType>IBytesMessage</MessageType>
<UserName>admin</UserName>
<Password>admin</Password>
</类>
<类>
........
</类>
</ArrayOf类>
<!-这里面的类就是指的要反序列化的类的名字,要保持一致。这是多个实体类,所以上层必须要用”ArrayOf类“来说明,必须要保持一致!->
类的定义:
/// <summary>
/// 实体类
/// </summary>
[XmlRootAttribute("xml", IsNullable = false)]//必须有这个声明,从xml开始为root
public class 类名字
{
…… ……
}
以上是我的解决方法。
在文章http://www.cnblogs.com/johnsmith/archive/2012/12/03/2799795.html有更详细的解释。
XML文件序列化和反序列化的相关内容的更多相关文章
- windows phone8.1:Xml,Json序列化和反序列化
原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...
- XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容
一.新建Demo2类: import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXPar ...
- xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................
xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西.xml里面的结构和数据库不一致..................
- (转)C# Xml进行序列化与反序列化
---------------------------------------------------------------文章1---------------------------------- ...
- 通过XmlSerializer 实现XML的序列化与反序列化
通过XmlSerializer 我们可以十分简单的将Model与XML进行转换 官文在点这里 帮助类 using System; using System.Text; using System.Xml ...
- XML的序列化和反序列化 详细介绍
为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...
- C#实现复杂XML的序列化与反序列化
已知.xml(再此命名default.xml)文件,请将其反序列化到一个实例对象. Default.XML文件如下: <?xml version="1.0" encoding ...
- C# XML对象序列化、反序列化
XML 序列化:可以将对象序列化为XML文件,或者将XML文件反序列化为对象还有种方法使用LINQ TO XML或者反序列化的方法从XML中读取数据. 最简单的方法就是.net framework提供 ...
- C# XML对象序列化、反序列化 - PEPE YU
http://www.tuicool.com/articles/IjE7ban http://www.cnblogs.com/johnsmith/archive/2012/12/03/2799795. ...
随机推荐
- Source Insight新建工程文件
options->document options ->document type ->c source file 下 //添加 “.S”结尾的汇编语言支持 project -& ...
- rpmdb: BDB0113 错误
解决方法: rpm --rebuilddb yum clean all
- next_permutation()—遍历全排列
# next_permutation()--遍历全排列 template <class BidirectionalIterator> bool next_permutation (Bidi ...
- LeetCode 283
Move Zeros Given an array nums, write a function to move all 0's to the end of it while maintaining ...
- Ajax返回xml类型数据
ajax可以返回文本类型数据和xml类型数据,xml是计算机通用语言 可以使用js解析返回xml类型数据的dom对象 前端页面 <!doctype html> <html lang= ...
- Jersey(1.19.1) - WebApplicationException and Mapping Exceptions to Responses
Previous sections have shown how to return HTTP responses and it is possible to return HTTP errors u ...
- C#的提交表单方式WebClient
向网站提交页面的主要代码 string postString = "arg1=a&arg2=b";//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form ...
- HDOJ2030汉字统计
汉字统计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 如何查看Windows8.1计算机体验指数评分
如果你已经安装使用了Windows 8.1,你就会发现自从Vista时代开始的计算机体验评分消失了,在文章<微软取消Windows 8 计算机评分功能>中,我猜测了微软取消评分功能的可能原 ...
- 第一篇、微信小程序_01计算器
官方文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/index.html 一.计算器的首页布局 第一部分WXML: <view class=&quo ...