public class XMLHelper
{
#region 将xml文件转换为object对象类型
/// <summary>
/// 将xml文件转换为object对象类型
/// </summary>
/// <param name="path">xml文件的路径</param>
/// <param name="type">要转换的类型的Type类型</param>
/// <returns></returns>
public static object ConvertXMLToObject(string path, Type type)
{
object obj = null;
using (StreamReader reader = new StreamReader(path))
{
string content = reader.ReadToEnd();
if (null == content)
{
throw new ArgumentNullException("xml");
}
if (null == type)
{
throw new ArgumentNullException("type");
}
XmlSerializer serializer = new XmlSerializer(type);
StringReader strReader = new StringReader(content);
XmlReader xreader = new XmlTextReader(strReader);
try
{
obj = serializer.Deserialize(xreader);
}
catch(InvalidOperationException ie)
{
throw new InvalidOperationException("Can not convert xml to object", ie);
}
finally
{
xreader.Close();
}
return obj;
}
}
#endregion #region 将object对象转成xml保存
/// <summary>
/// 将object对象转成xml保存
/// </summary>
/// <param name="path">保存到xml文件的路径</param>
/// <param name="obj">待转换的对象</param>
/// <param name="toBeIndented">xml是否缩进 true:缩进,false:不缩进</param>
public static void SaveObjectXML(string path, object obj, bool toBeIndented=true)
{
if (null == obj)
{
throw new ArgumentNullException("obj");
}
UTF8Encoding encoding = new UTF8Encoding(false);
XmlSerializer serializer = new XmlSerializer(obj.GetType());
MemoryStream stream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, encoding);
writer.Formatting = toBeIndented ? Formatting.Indented : Formatting.None;
try
{
serializer.Serialize(writer, obj);
}
catch (InvalidOperationException ie)
{
throw new InvalidOperationException("Can not convert object to xml.", ie);
}
finally
{
writer.Close();
}
string xml = encoding.GetString(stream.ToArray());
using (StreamWriter swriter = new StreamWriter(path))
{
swriter.Write(xml);
}
}
#endregion }

Xml帮助类的更多相关文章

  1. 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值

    前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...

  2. 简单的XML操作类

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  3. C#常用操作类库三(XML操作类)

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  4. XML Helper XML操作类

    写的一个XML操作类,包括读取/插入/修改/删除. using System;using System.Data;using System.Configuration;using System.Web ...

  5. XML工具类 - XmlUtils.java

    XML工具类,提供序列化XML.反序列化XML.获取指定节点的值的方法. 源码如下:(点击下载 - XmlUtils.java.dom4j-1.6.1.jar.xstream-1.4.7.jar ) ...

  6. (原)C++解析XML生成类对象_v1.0 函数指针

    要写一个xml解析,解析后获得到的数据变成各个类的对象. 解析有现成的库,使用tinyxml,但是解析出来的类库如何变成各个类的对象, 例如一下这个xml, <musics> <mu ...

  7. hibernate 非xml实体类配置方法!

    hibernate 非xml实体类配置方法! 这个是hibernate.cfg.xml配置文件 <?xml version='1.0' encoding='UTF-8'?> <!DO ...

  8. C#对XML操作类

    C#对XML操作类 该类包含了对XML文件的创建,添加,读取,删除,修改等操作 //#define isUnity #if isUnity using UnityEngine; #endif usin ...

  9. JaxbUtil转json转XML工具类

    json转换为XML工具类 package com.cxf.value; import org.springframework.util.StringUtils; import javax.xml.b ...

  10. xsd与xml和类(class)对象之间的互相转换

    xsd与xml和类(class)对象之间的互相转换 . 第一:通过现有的已经写好的xsd来生成class(.cs)文件. 在您Visual Studio的安装目录下的SDKv2.0Bin中有个应用程序 ...

随机推荐

  1. HDU 1754.I Hate It-结构体版线段树(单点更新+区间查询最值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. Python3 数字

    layout: post title: Python3 数字 author: "luowentaoaa" catalog: true tags: mathjax: true Pyt ...

  3. ubuntu 修改权限

    在linux终端先输入ll,可以看到如: -rwx-r–r– (一共10个参数) 表示文件所属组和用户的对应权限. 第一个跟参数属于管理员,跟chmod无关,先不管. 2-4参数:属于user 5-7 ...

  4. @RequestParam注解的使用

    自SpringMVC4.2之后,RequestParam内部有4个参数: 1.String name; 2.String value; 3.boolean required; 4.String def ...

  5. LVS+Keepalived实现高可用

    http://blog.chinaunix.net/uid-16723279-id-3651396.html

  6. Android闪闪发光字体效果

    原文: http://blog.csdn.net/xu_fu/article/details/24484019 import android.content.Context; import andro ...

  7. Metesploit使用随笔

    平时在工作中真正用到metesploit机会不多,偶尔也会用来做漏洞验证,但是每次使用的时候都需要花点时间回忆一下具体是怎么用的,因此索性记下来方便自己,以使用Nessus扫描YS的某个硬件设备发现的 ...

  8. SQL Server 事务隔离级别的解析

    近来在项目中遇到的一些有关事务的问题,跟同事间讨论了一下,后面翻看了一些书籍和做了一些测试,趁有点时间把它写下来,一来加深印象,二来希望对大家有所帮助,当然,由于自身水平问题,如理解有误,还请大牛指出 ...

  9. 【FTP】java FTPClient 文件上传内容为空,文件大小为0

    问题:如题所述,使用FTPClient上传至FTP服务器, 表现如下:①文件大小为0 ②上传很小的文件,但是要花费很长的时间,20K要花费2分钟甚至更久 ③没有任何的报错,没有任何的乱码 解决方法: ...

  10. SQL 日期格式化函数

    Sql Server 中一个非常强大的日期格式化函数: 获得当前系统时间,GETDATE(): 2008年01月08日 星期二 14:59 Select CONVERT(varchar(100), G ...