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. windows8安装docker(tool box)

    打开 https://store.docker.com/editions/community/docker-ce-desktop-windows 下载安装包文件 双击安装Docker 出现错误非Win ...

  2. HDU 2504.又见GCD-递归

    又见GCD Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. 哦这。。!C语言scanf输入的坑爹之处

    一. 今天闲来无事,跑去A题,本想3sA了poj1004,结果搞了10分钟,最令人困惑的问题就是为什么定义了double类型的变量,但是用scanf输入的时候标识符用%f的话,输入并不能完成,也就是说 ...

  4. POJ1330 Nearest Common Ancestors(最近公共祖先)(tarjin)

    A - Nearest Common Ancestors Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%lld &am ...

  5. leetcode83 Remove Duplicates from Sorted List

    题意:删掉单链表里重复的节点,如:Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2 ...

  6. Scala实战高手****第3课:在IDE下开发第一个Scala程序纯傻瓜式彻底透彻解析

  7. 【java】LocalDate和Date等新旧日期类的转化

    // 01. java.util.Date --> java.time.LocalDateTime public void UDateToLocalDateTime() { java.util. ...

  8. Android 多线程之IntentService 完全详解

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

  9. iOS:延迟加载和上拉刷新/下拉加载的实现

    lazy懒加载(延迟加载)UITableView 举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要 ...

  10. 利用CMD查看系统硬件信息

    利用CMD查看系统硬件信息对于在windows下查看系统信息大家一定不陌生了,我现在说几个最常用的方法,对命令感兴趣的朋友看看,(给菜鸟看的,老手就不要笑话我了,大家都是从那个时候过来的,^_^).一 ...