asp.net的XML通用操作类

转载 2012年03月22日 15:55:22
在上班有一个老同学问有asp.net操作xml,所有为了帮助他在网上找来一些asp.net操作xml的操作
using System;
using System.Xml;
using System.Data;

namespace Message.Common
{
        /**//// <summary>
        /// XML相关通用功能
        /// </summary>
        public class Xml
        {
                public Xml() {}        

        /**//// <summary>
        /// XML资源类型
        /// </summary>
        public enum XmlType
        {
            File,
            String
        };

                读取XML资源到DataSet中#region 读取XML资源到DataSet中
        /**//// <summary>
        /// 读取XML资源到DataSet中
        /// </summary>
        /// <param name="source">XML资源,文件为路径,否则为XML字符串</param>
        /// <param name="xmlType">XML资源类型</param>
        /// <returns>DataSet</returns>
        public static DataSet GetDataSet(string source, XmlType xmlType)
        {
            DataSet ds = new DataSet();
            if (xmlType == XmlType.File)
            {
                ds.ReadXml(source);
            }
            else
            {
                XmlDocument xd = new XmlDocument();
                xd.LoadXml(source);
                XmlNodeReader xnr = new XmlNodeReader(xd);
                ds.ReadXml(xnr);
            }

            return ds;
        }

                #endregion

                获取一个字符串xml文档中的ds#region 获取一个字符串xml文档中的ds
                /**////<remarks>
                ///赵洪
                ///</remarks>
                /// <summary>
                /// 获取一个字符串xml文档中的ds
                /// </summary>
                /// <param name="xml_string">含有xml信息的字符串</param>
                public static void get_XmlValue_ds(string xml_string,ref DataSet ds)
                {
                        
                        System.Xml.XmlDocument xd= new XmlDocument();
                        xd.LoadXml(xml_string);
                        XmlNodeReader xnr= new XmlNodeReader(xd);
                        ds.ReadXml(xnr);
                        xnr.Close();
                        int a= ds.Tables.Count;                        

                }

                #endregion

                读取XML资源到DataTable中#region  读取XML资源到DataTable中
        /**//// <summary>
        /// 读取XML资源到DataTable中
        /// </summary>
        /// <param name="source">XML资源,文件为路径,否则为XML字符串</param>
        /// <param name="xmlType">XML资源类型:文件,字符串</param>
        /// <param name="tableName">表名称</param>
        /// <returns>DataTable</returns>
        public static DataTable GetTable(string source, XmlType xmlType, string tableName)
        {
            DataSet ds = new DataSet();
            if (xmlType == XmlType.File)
            {
                ds.ReadXml(source);
            }
            else
            {
                XmlDocument xd = new XmlDocument();
                xd.LoadXml(source);
                XmlNodeReader xnr = new XmlNodeReader(xd);
                ds.ReadXml(xnr);
            }

            return ds.Tables[tableName];
        }

                #endregion

                读取XML资源中指定的DataTable的指定行指定列的值#region 读取XML资源中指定的DataTable的指定行指定列的值
        /**//// <summary>
        /// 读取XML资源中指定的DataTable的指定行指定列的值
        /// </summary>
        /// <param name="source">XML资源</param>
        /// <param name="xmlType">XML资源类型:文件,字符串</param>
        /// <param name="tableName">表名</param>
        /// <param name="rowIndex">行号</param>
        /// <param name="colName">列名</param>
        /// <returns>值,不存在时返回Null</returns>
        public static object GetTableCell(string source, XmlType xmlType, string tableName, int rowIndex, string colName)
        {
            DataSet ds = new DataSet();
            if (xmlType == XmlType.File)
            {
                ds.ReadXml(source);
            }
            else
            {
                XmlDocument xd = new XmlDocument();
                xd.LoadXml(source);
                XmlNodeReader xnr = new XmlNodeReader(xd);
                ds.ReadXml(xnr);
            }

            return ds.Tables[tableName].Rows[rowIndex][colName];
        }

                #endregion

                读取XML资源中指定的DataTable的指定行指定列的值#region 读取XML资源中指定的DataTable的指定行指定列的值
        /**//// <summary>
        /// 读取XML资源中指定的DataTable的指定行指定列的值
        /// </summary>
        /// <param name="source">XML资源</param>
        /// <param name="xmlType">XML资源类型:文件,字符串</param>
        /// <param name="tableName">表名</param>
        /// <param name="rowIndex">行号</param>
        /// <param name="colIndex">列号</param>
        /// <returns>值,不存在时返回Null</returns>
        public static object GetTableCell(string source, XmlType xmlType, string tableName, int rowIndex, int colIndex)
        {
            DataSet ds = new DataSet();
            if (xmlType == XmlType.File)
            {
                ds.ReadXml(source);
            }
            else
            {
                XmlDocument xd = new XmlDocument();
                xd.LoadXml(source);
                XmlNodeReader xnr = new XmlNodeReader(xd);
                ds.ReadXml(xnr);
            }

            return ds.Tables[tableName].Rows[rowIndex][colIndex];
        }        

                #endregion

                获取一个字符串xml文档中的一个table,指定行,指定列的值#region  获取一个字符串xml文档中的一个table,指定行,指定列的值
                /**//// <summary>
                /// 获取一个字符串xml文档中的一个table,指定行,指定列的值
                /// </summary>
                /// <param name="xml_string">含有xml信息的字符串</param>
                /// <param name="tablename">表名</param>
                /// <param name="row_index">指定行</param>
                /// <param name="col_name">指定列名</param>
                /// <returns>相应节点的值</returns>
                public static string get_XmlValue(string xml_string,string tablename,int row_index,string col_name)
                {
                        System.Xml.XmlDocument xd= new XmlDocument();
                        xd.LoadXml(xml_string);
                        XmlElement root = xd.DocumentElement;
                        XmlNode xe= root.CloneNode(false);
                        xe = root.SelectNodes(tablename).Item(row_index);
                        string val="";
                        if(null==xe)
                        {
                                return "";
                        }
                        foreach(XmlNode xn in xe.ChildNodes )
                        {
                                if(xn.LocalName==col_name)
                                {
                                        val = xn.InnerText;
                                        break;
                                }
                        }
                        return val;
                }

                /**//// <summary>
                /// 获取一个xml文件中的一个table,指定行,指定列的值
                /// </summary>
                /// <param name="xml_string">含有xml信息的字符串</param>
                /// <param name="tablename">表名</param>
                /// <param name="row_index">指定行</param>
                /// <param name="col_name">指定列名</param>
                /// <returns>相应节点的值</returns>
                public static string get_XmlValue(string xml_string,string tablename,int row_index,string col_name,bool isfile)
                {
                        System.Xml.XmlDocument xd= new XmlDocument();
                        if(isfile)
                                xd.Load(xml_string);
                        else
                                xd.LoadXml(xml_string);
                        XmlElement root = xd.DocumentElement;
                        XmlNode xe= root.CloneNode(false);
                        xe = root.SelectNodes(tablename).Item(row_index);
                        string val="";
                        if(null==xe)
                        {
                                return "";
                        }
                        foreach(XmlNode xn in xe.ChildNodes )
                        {
                                if(xn.LocalName==col_name)
                                {
                                        val = xn.InnerText;
                                        break;
                                }
                        }
                        return val;
                }

                #endregion

                获取一个字符串xml文档中的dt#region 获取一个字符串xml文档中的dt
                /**////<remarks>
                ///
                ///</remarks>
                /// <summary>
                /// 获取一个字符串xml文档中的dt
                /// </summary>
                /// <param name="xml_string">含有xml信息的字符串</param>
                public static void get_XmlValue_dt(string xml_string,ref DataTable dt,string table_name)
                {
                        DataSet ds = new DataSet();
                        System.Xml.XmlDocument xd= new XmlDocument();
                        xd.LoadXml(xml_string);
                        //System.IO.FileStream fs = new System.IO.FileStream("c://aa.xml",System.IO.FileMode.Open);
                        
                        //xd.Save(fs);
                        //                        System.Xml.XmlReader xr=(System.Xml.XmlReader)((object)sr);
                        //ds=new DataSet();
                        XmlNodeReader xnr= new XmlNodeReader(xd);
                        ds.ReadXml(xnr);
                        xnr.Close();
                        dt = ds.Tables[table_name];
                }
                #endregion

                将DataTable写入XML文件中#region  将DataTable写入XML文件中
        /**//// <summary>
        /// 将DataTable写入XML文件中
        /// </summary>
        /// <param name="dt">含有数据的DataTable</param>
        /// <param name="filePath">文件路径</param>
        public static void SaveTableToFile(DataTable dt, string filePath)
        {
            DataSet ds = new DataSet("Config");
            ds.Tables.Add(dt.Copy());

            ds.WriteXml(filePath);
        }
                #endregion

                将DataTable以指定的根结点名称写入文件#region  将DataTable以指定的根结点名称写入文件
        /**//// <summary>
        /// 将DataTable以指定的根结点名称写入文件
        /// </summary>
        /// <param name="dt">含有数据的DataTable</param>
        /// <param name="rootName">根结点名称</param>
        /// <param name="filePath">文件路径</param>
        public static void SaveTableToFile(DataTable dt, string rootName, string filePath)
        {
            DataSet ds = new DataSet(rootName);
            ds.Tables.Add(dt.Copy());

            ds.WriteXml(filePath);
        }
                #endregion

                使用DataSet方式更新XML文件节点#region 使用DataSet方式更新XML文件节点

        /**//// <summary>
        /// 使用DataSet方式更新XML文件节点
        /// </summary>
        /// <param name="filePath">XML文件路径</param>
        /// <param name="tableName">表名称</param>
        /// <param name="rowIndex">行号</param>
        /// <param name="colName">列名</param>
        /// <param name="content">更新值</param>
        /// <returns>更新是否成功</returns>
        public static bool UpdateTableCell(string filePath, string tableName, int rowIndex, string colName, string content)
        {
            bool flag = false;

            DataSet ds = new DataSet();
            ds.ReadXml(filePath);
            DataTable dt = ds.Tables[tableName];
            
            if (dt.Rows[rowIndex][colName] != null)
            {
                dt.Rows[rowIndex][colName] = content;
                ds.WriteXml(filePath);
                flag = true;
            }
            else
            {
                flag = false;
            }

            return flag;
        }

                #endregion

                使用DataSet方式更新XML文件节点#region  使用DataSet方式更新XML文件节点
        /**//// <summary>
        /// 使用DataSet方式更新XML文件节点
        /// </summary>
        /// <param name="filePath">XML文件路径</param>
        /// <param name="tableName">表名称</param>
        /// <param name="rowIndex">行号</param>
        /// <param name="colIndex">列号</param>
        /// <param name="content">更新值</param>
        /// <returns>更新是否成功</returns>
        public static bool UpdateTableCell(string filePath, string tableName, int rowIndex, int colIndex, string content)
        {
            bool flag = false;

            DataSet ds = new DataSet();
            ds.ReadXml(filePath);
            DataTable dt = ds.Tables[tableName];
            
            if (dt.Rows[rowIndex][colIndex] != null)
            {
                dt.Rows[rowIndex][colIndex] = content;
                ds.WriteXml(filePath);
                flag = true;
            }
            else
            {
                flag = false;
            }

            return flag;
        }
        #endregion

                读取XML资源中的指定节点内容#region 读取XML资源中的指定节点内容

        /**//// <summary>
        /// 读取XML资源中的指定节点内容
        /// </summary>
        /// <param name="source">XML资源</param>
        /// <param name="xmlType">XML资源类型:文件,字符串</param>
        /// <param name="nodeName">节点名称</param>
        /// <returns>节点内容</returns>
        public static object GetNodeValue(string source, XmlType xmlType, string nodeName)
        {
            XmlDocument xd = new XmlDocument();
            if (xmlType == XmlType.File)
            {
                xd.Load(source);
            }
            else
            {
                xd.LoadXml(source);
            }
            XmlElement xe = xd.DocumentElement;
            XmlNode xn = xe.SelectSingleNode("//" + nodeName);
            if(xn != null)
            {
                return xn.InnerText;
            }
            else
            {
                return null;
            }
        }
                /**//// <summary>
                /// 读取XML资源中的指定节点内容
                /// </summary>
                /// <param name="source">XML资源</param>
                /// <param name="nodeName">节点名称</param>
                /// <returns>节点内容</returns>
                public static object GetNodeValue(string source,string nodeName)
                {
                        if(source == null || nodeName == null || source == "" || nodeName == "" || source.Length < nodeName.Length * 2)
                        {
                                return null;
                        }
                        else
                        {
                                int start = source.IndexOf("<" + nodeName + ">") + nodeName.Length + 2;
                                int end = source.IndexOf("</" + nodeName + ">");
                                if(start == -1 || end == -1)
                                {
                                        return null;
                                }
                                else if(start >= end)
                                {
                                        return null;
                                }
                                else
                                {
                                        return source.Substring(start,end - start);
                                }
                        }
                }


                #endregion

                更新XML文件中的指定节点内容#region 更新XML文件中的指定节点内容
        /**//// <summary>
        /// 更新XML文件中的指定节点内容
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <param name="nodeName">节点名称</param>
        /// <param name="nodeValue">更新内容</param>
        /// <returns>更新是否成功</returns>
        public static bool UpdateNode(string filePath, string nodeName, string nodeValue)
        {
            bool flag = false;

            XmlDocument xd = new XmlDocument();
            xd.Load(filePath);
            XmlElement xe = xd.DocumentElement;
            XmlNode xn = xe.SelectSingleNode("//" + nodeName);
            if (xn != null)
            {
                xn.InnerText = nodeValue;
                flag = true;
            }
            else
            {
                flag = false;
            }

            return flag;
        }
                #endregion

                操作xml文件中指定节点的数据#region 操作xml文件中指定节点的数据 
                /**//// <summary>
                /// 获得xml文件中指定节点的节点数据
                /// </summary>
                /// <param name="TableName"></param>
                /// <returns></returns>
                public static string GetNodeInfoByNodeName(string path,string nodeName)
                {                        
                        string XmlString="";
                        XmlDocument xml=new XmlDocument();
                        xml.Load(path);
                        System.Xml.XmlElement root=xml.DocumentElement;
                        System.Xml.XmlNode node=root.SelectSingleNode("//"+nodeName);
                        if (node!=null)
                        {
                                XmlString=node.InnerText;
                        }
                        return XmlString;
                }
                #endregion

                /**//// <summary>
                /// 根据xml路径获取DataSet。如果Table名为空:flag=false 返回所有xml的数据;flag=true 将xml中的table名作为数据项返回。否则根据table名获取相应的table信息返回。
                /// </summary>
                /// <param name="XmlPath">xml文件路径</param>
                /// <param name="TableName">所要获取的Table名,可为空</param>
                /// <param name="flag">若为true,则只将所有表名作为数据项返回;若为false,则返回所要获取的Table的所有数据</param>
                /// <returns>返回所获取的DataSet</returns>
                /// <summary>
                /// 根据xml路径获取DataSet。如果Table名为空:flag=false 返回所有xml的数据;flag=true 将xml中的table名作为数据项返回。否则根据table名获取相应的table信息返回。
                /// </summary>
                /// <param name="XmlPath">xml文件路径</param>
                /// <param name="TableName">所要获取的Table名,可为空</param>
                /// <param name="flag">若为true,则只将所有表名作为数据项返回;若为false,则返回所要获取的Table的所有数据</param>
                /// <returns>返回所获取的DataSet</returns>
                public static DataSet GetTableByXml(string XmlPath,string TableName,bool flag)
                {
                        DataSet ds=new DataSet();
                        if (TableName=="")
                        {
                                DataSet ds1=new DataSet();
                                ds1.ReadXml(XmlPath);
                                if (ds1.Tables.Count>0)
                                {
                                        if (flag)
                                        {
                                                DataTable dt=new DataTable("typeTable");
                                                dt.Columns.Add("TableName",typeof(string));
                                                ds.Tables.Add(dt);
                                                for (int i=0;i<ds1.Tables.Count;i++)
                                                {
                                                        DataRow dr=dt.NewRow();
                                                        dr["TableName"]=ds1.Tables[i].TableName;
                                                        ds.Tables["typeTable"].Rows.Add(dr);
                                                }
                                        }
                                        else
                                        {
                                                ds=ds1.Copy();
                                        }
                                }
                        }
                        else
                        {
                                DataSet ds2=new DataSet();
                                ds2.ReadXml(XmlPath);
                                if (ds2.Tables[TableName]!=null)
                                {
                                        ds.Tables.Add(ds2.Tables[TableName].Copy());
                                }
                        }
                        return ds;                        
                }
                /**//// <summary>
                /// escape invalid Unicode in XML
                /// </summary>
                /// <param name="str"></param>
                /// <returns></returns>
                public static string Replaceinvalid(string str)
                {
                        System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex("[/x00-/x08|/x0b-/x0c|/x0e-/x1f]");
                        return r.Replace(str," ");
                }

                /**//// <summary>
                /// 获得接口错误信息
                /// </summary>
                /// <param name="errCode">错误编码</param>
                /// <returns></returns>
                public static string GetInterfaceErrorString(string errCode)
                {
                        System.Text.StringBuilder sb = new System.Text.StringBuilder();
                        sb.Append("<?xml version=/"1.0/" encoding=/"GB2312/"?>");
                        sb.Append("<Root>");
                        sb.Append("<Result><return_result>"+errCode+"</return_result></Result>");
                        sb.Append("</Root>");
                        
                        return sb.ToString();
                }
        }
}


asp.net的XML通用操作类

using System;using System.Xml;using System.Data;namespace Message.Common{ /**//// ///...
  • eee365
  • eee365
  • 2009年09月05日 12:53
  • 2531

c#操作xml文档的通用类

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu...
  • zhujunxxxxx
  • zhujunxxxxx
  • 2014年01月19日 13:22
  • 2074

C#操作Xml通用工具类

  1个简单的处理XML的工具类代码1usingSystem;usingSystem.Xml;namespace WLERP.Common.Util{    ///     /// Xml 操作工具类...
  • bobo830
  • bobo830
  • 2011年04月20日 12:21
  • 2772

Asp.net中打造通用数据访问类(c#)

Asp.net中打造通用数据访问类(c#)     刚刚写的,可能里面会有漏洞,望指正.     ASP。NET开发中, 业务实体需要通过数据访问层与数据库交互,因此,你必须为每个业务实体类编写相对应...
  • tielu0144
  • tielu0144
  • 2007年01月23日 21:24
  • 633

c# xml操作类 比较齐全

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu...
  • smartsmile2012
  • smartsmile2012
  • 2014年06月26日 14:17
  • 2745

ASP.NET好用的MySql操作类

这个操作类是在网上淘的,找了好多份,个人觉得这个是最好的,拿出来跟大家分享 using System; using System.Collections.Generic; using Syste...
  • risingsun001
  • risingsun001
  • 2013年06月04日 17:09
  • 2755

XML通用解析

// XML解析.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include //#include #include #include #inc...
  • u011009192
  • u011009192
  • 2016年09月25日 23:12
  • 288

通用的数据库操作类(支持多种数据库)

通用的数据库操作类(支持多种数据库)      我们在软件开发过程中,数据库是一个永久不变的话题,但是根据软件架构与客户要求的不同我们会选择不同的数据库,在C#中不同数据库操作编写代码不尽相同,下面提...
  • emailqjc
  • emailqjc
  • 2009年08月11日 12:12
  • 3508

C# XML操作类 XmlHelper

using System.Xml; using System.Data; namespace DotNet.Utilities {     ///     /// Xml的操作公共类  ...
  • s10141303
  • s10141303
  • 2012年10月26日 00:13
  • 3706

WPF中XML的读写

初学WPF对于XML的用法有些不熟悉,在此纪录一下。 想要读取XML文件,首先在程序中引用XML相关类库,添加如下语句即可。using System.Xml; 1. XML文档创建 X...
  • fandongguang0702
  • fandongguang0702
  • 2017年01月14日 21:40
  • 1169
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net的XML通用操作类
举报原因:
原因补充:

(最多只允许输入30个字)