Xml帮助类

   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

    }

时间: 2024-08-10 02:09:21

Xml帮助类的相关文章

Android中Xml工具类的封装

Android中经常使用到操作XML,其中有一对XmlSerializer和XmlPullParser封装的很好,可是操作起来很复杂,虽然不难,但是感觉做了一点小事却写了一大堆的代码.有点烦,因此封装一下. 其思路为:根据传入的数据,获取字节码后进行反射解析,然后在存储.思路很简单,此demo只写了一个基本的List<T>类型的,其它类型道理与此大同小异,就当这个是抛砖引玉了. 对于一些Model可能有些字段是不需要序列化的,这里可以使用注解来操作 /** * XML操作工具类 * @auth

Java-封装生成JSON数据和XML数据类

1.背景 借鉴与php中 app接口的实现(php写app接口生成xml和json数据),封装了java版的json和xml数据操作类! 2.准备 在使用之前,需要引入 json 的jar 包:点我下载 ! 这里实现了,对象转json , 对象集合转json, 对象转xml,对象集合转xml ; 3.appUtil 工具类实现 具体的实现过程,我就不解释了,一边写,一边测试!直到写成为止! 里面的 tojsonArray() 方法 没有使用,可以删除,不过想生成json数组的 ,就不需要删除了!

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

/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { protected string strXmlFile; protected XmlDocument objXmlDoc = new XmlDocument(); public XmlHelper(string XmlFile) { // // TODO: 在这里加入建构函式的程序代码 // try { objX

[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口IXmlSerializable实现XML序列化及XML通用类

[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口IXmlSerializable实现XML序列化及XML通用类 本节导读:本节主要介绍通过序列化接口IXmlSerializable实现XML序列化和反序列化,整理了XML基础操作及序列化的通用类(包括XML及节点的基础读写操作,XML到DataSet\DataTable互转换操作,XML序列化及反序列化通用方法等). 读前必备: A.类和类的实例 [.net 面向对象编程基础]  (9) 类和类的

C#:XML操作类

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

使用反射和泛型,动态读取XML创建类实例并赋值

[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能.网上的例子倒也不少,但总是觉得缺点什么.比如读取xml文件之后该如何处理?看到的文章基本上都是手动创建一个目标类的实例,然后手动从读取的XML文件的内容中给刚才创建的目标类实例相关字段赋值.缺点什么呢?对嘞,感觉上

XML工具类 - XmlUtils.java

XML工具类,提供序列化XML.反序列化XML.获取指定节点的值的方法. 源码如下:(点击下载 - XmlUtils.java.dom4j-1.6.1.jar.xstream-1.4.7.jar ) 1 import org.dom4j.Document; 2 import org.dom4j.DocumentException; 3 import org.dom4j.DocumentHelper; 4 import org.dom4j.Element; 5 import com.thought

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

前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能.网上的例子倒也不少,但总是觉得缺点什么.比如读取xml文件之后该如何处理?看到的文章基本上都是手动创建一个目标类的实例,然后手动从读取的XML文件的内容中给刚才创建的目标类实例相关字段赋值.缺点什么呢?对嘞,感觉上不够简单和智能. 正所谓驱动科技发展的原因就是懒,为了使我们的小工具能够傻瓜到只需要

[C# | XML] XML 反序列化解析错误:&lt;xml xmlns=&#39;&#39;&gt; was not expected. 附通用XML到类解析方法

使用 XML 反化时出现错误: public static TResult GetObjectFromXml<TResult>(string xmlString) { TResult result; XmlSerializer serializer = new XmlSerializer(typeof(TResult), new XmlRootAttribute("xml")); using (TextReader tr = new StringReader(xmlStri

安卓快速解析xml工具类

xml工具类XmlHelper 利用sax的DefaultHandler做快速的解析,并通过反射把解析结果储存在一个对象里或者一个储存该对象的list里. XmlHelper代码 import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Field; i