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. python3图片验证码识别

    http://my.cnki.net/elibregister/CheckCode.aspx每次刷新该网页可以得到新的验证码进行测试 以我本次查看的验证码图片为例,右键保存图片为image.jpg 下 ...

  2. Retrying Operations using Spring's RetryTemplate

    If your application is using Spring then it is easier to use the Spring Framework's RetryTemplate. T ...

  3. ASP.NET Core 2.2 基础知识(七) 选项模式

    承接上一篇 配置, 选项模式是专门用类来表示相关配置的服务. 基本选项配置 新建一个选项类,该类必须是包含无参数的构造函数的非抽象类. public class MyOptions { public ...

  4. 去掉Chrome手机版首屏的“推荐的文章”

    百度可得很多类似的文章,然而都是失效的,,比如此文,本文演示所使用的Chrome版本为59. 百度所得的解决办法都是同一个,排版,截图都是一样的,害我浪费了不少力气. 第一,转载文章未标明文章出处: ...

  5. Python中类方法重载---大部分

    重载方法格式: def __xxx__(self,other): ... 注:重载方法格式------------------------------------------------------- ...

  6. Linux CentOS下Python+robot framework环境搭建

    转载自:http://blog.sina.com.cn/s/blog_13cc013b50102vof1.html 操作系统环境:CentOS 6.5-x86_64 下载地址:http://www.c ...

  7. 【二分】【动态规划】Codeforces Round #393 (Div. 1) B. Travel Card

    水dp,加个二分就行,自己看代码. B. Travel Card time limit per test 2 seconds memory limit per test 256 megabytes i ...

  8. 【枚举】【权值分块】bzoj1112 [POI2008]砖块Klo

    枚举长度为m的所有段,尝试用中位数更新答案. 所以需要数据结构,支持查询k大,以及大于/小于 k大值 的数的和. 平衡树.权值线段树.权值分块什么的随便呢. #include<cstdio> ...

  9. Java高级架构师(一)第14节:新增和列表页面和分页tag

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  10. 杂谈PID控制算法——第一篇:三个量

    电赛训练了大半个暑假,人渐渐开始进入到了疲倦期.既然这样那就好好休息下自己也好吧. 休息也不能光休息,乘机把平常写过的一些东西好好整理也好. 从第一次训练开始我们就接触到了一个新的名词——PID控制理 ...