博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

asp.net的XML通用操作类

Posted on 2008-07-26 10:25  codingsilence  阅读(326)  评论(0)    收藏  举报

 

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中

                
获取一个字符串xml文档中的ds

                
读取XML资源到DataTable中

                
读取XML资源中指定的DataTable的指定行指定列的值

                
读取XML资源中指定的DataTable的指定行指定列的值

                
获取一个字符串xml文档中的一个table,指定行,指定列的值

                
获取一个字符串xml文档中的dt

                
将DataTable写入XML文件中

                
将DataTable以指定的根结点名称写入文件

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

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

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

                
更新XML文件中的指定节点内容

                
操作xml文件中指定节点的数据

                
/// <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();
                }

        }

}