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. 【转】appium常用方法整理

    1.相对坐标解锁九宫格 应用场景 QQ解锁屏幕如上,可见九个按键在同一个View下面,要实现解锁,用press   moveTo  release  perform方法 实现代码如下: WebElem ...

  2. [centos6.5]添加eclipse快捷方式

    [Desktop Entry] Version=buzhidao Encoding=UTF-8 Name=eclipse Comment=eclipse-for-php Exec=/opt/eclip ...

  3. MySQL 8.0.13安装教程(windows 64位) (转)

    官先去网下载点击MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini的文件解压后的目录并没有my.ini文件,没关系可以自行创建.在安装根目录下添加my.ini(新建文本文件, ...

  4. 组合数学+错排问题【p4071】[SDOI2016]排列计数

    Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...

  5. POJ1251 Jungle Roads(Kruskal)(并查集)

    Jungle Roads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 23882   Accepted: 11193 De ...

  6. Proxy(2016山东省省赛C)(最短路)(spfa)

    问题 C: Proxy 时间限制: 2 Sec  内存限制: 128 MB提交: 17  解决: 5[提交][状态][讨论版] 题目描述 Because of the GFW (Great Firew ...

  7. NPOI读取Excel2003,2007

    using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Lin ...

  8. BUG The user specified as a definer ('root'@'%') does not exist' in

    BUG描述:通过点击实现页面无刷新提交数据. 链接服务器数据库时-提交成功 当把数据库下载到本地后链接,提交失败 查看日志显示:The user specified as a definer ('ro ...

  9. 优化apk

    1.首先找到Sdk的位置 2.在电脑中找到Sdk之后点击->bulid-tools 3.点击23.0.3,将需要优化的apk复制到23.0.3的目录下(比如aa.apk) 4.回到23.0.3之 ...

  10. SweetAlert和MBProgressHUD冲突的解决办法

    解决方法 :   UIView *view = [UIApplication sharedApplication].keyWindow;             NSLog(@" -- &g ...