问题缘由:

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文件序列化和反序列化的相关内容的更多相关文章

  1. windows phone8.1:Xml,Json序列化和反序列化

    原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...

  2. XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容

    一.新建Demo2类: import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXPar ...

  3. xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................

    xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西.xml里面的结构和数据库不一致..................

  4. (转)C# Xml进行序列化与反序列化

    ---------------------------------------------------------------文章1---------------------------------- ...

  5. 通过XmlSerializer 实现XML的序列化与反序列化

    通过XmlSerializer 我们可以十分简单的将Model与XML进行转换 官文在点这里 帮助类 using System; using System.Text; using System.Xml ...

  6. XML的序列化和反序列化 详细介绍

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  7. C#实现复杂XML的序列化与反序列化

    已知.xml(再此命名default.xml)文件,请将其反序列化到一个实例对象. Default.XML文件如下: <?xml version="1.0" encoding ...

  8. C# XML对象序列化、反序列化

    XML 序列化:可以将对象序列化为XML文件,或者将XML文件反序列化为对象还有种方法使用LINQ TO XML或者反序列化的方法从XML中读取数据. 最简单的方法就是.net framework提供 ...

  9. C# XML对象序列化、反序列化 - PEPE YU

    http://www.tuicool.com/articles/IjE7ban http://www.cnblogs.com/johnsmith/archive/2012/12/03/2799795. ...

随机推荐

  1. obj 转为Json 时间格式自定义

    var tb = evnWarningBll.GatWarning();             var  timeFormat = new IsoDateTimeConverter();       ...

  2. linux -时间

    cal查看日历 date查看当前系统时间 date -s“”修改系统时间 date +格式化系统时间 date +"%Y%m%d%H%M%S"

  3. LeetCode 80

    Remove Duplicates from Sorted Array II Follow up for "Remove Duplicates": What if duplicat ...

  4. 【推理,贪心】UVa 1319 - Maximum

    看到了大神的代码.理解了好久...真是差距. 题意:给出m, p, a, b,然后xi满足已下两个公式, 求 xp1 + xp2 +...+ xpm 的最大值. 1.-1/sqrt(a) <= ...

  5. Android中IntentService的原理及使用

    在Android开发中,我们或许会碰到这么一种业务需求,一项任务分成几个子任务,子任务按顺序先后执行,子任务全部执行完后,这项任务才算成功.那么,利用几个子线程顺序执行是可以达到这个目的的,但是每个线 ...

  6. (转)工作之路---记录LZ如何在两年半的时间内升为PM

    原文地址:http://www.cnblogs.com/zuoxiaolong/p/life31.html 引言 之前的伪PM纠结之路已经渐渐结束,LZ也终于正式爬上了PM的位置,对于LZ来说,这个时 ...

  7. Ionic条码扫描

    http://m.blog.csdn.net/article/details?id=45843819

  8. Unity3D 之暂停和继续的实现

    Time.timeScale 时间缩放 当timeScale传递时间1.0时和实时时间一样快.当timeScale传递时间0.5时比实时时间慢一半. 当timeScale传递时间为0时游戏基本上暂停了 ...

  9. replace替换语句

    t_sql语句:replace替换语句:update 表名 set 列名=REPLACE(列名,'替换的数据','替换后的数据')

  10. 解决TextView在显示文字的时候,一行还没显示满就跳到下一行

    转载请注明:转自 http://blog.csdn.NET/u011176685/article/details/48295185 一.问题描述: Android的TextView在显示文字的时候,如 ...