国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net的XML通用操作類

2024-07-10 13:12:16
字體:
來源:轉載
供稿:網友
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
        };

                #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

                #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

                #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

                #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

                #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

                #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

                #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

                #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

                #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

                #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

                #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

                #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("http://" + 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

                #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("http://" + nodename);
            if (xn != null)
            {
                xn.innertext = nodevalue;
                flag = true;
            }
            else
            {
                flag = false;
            }

            return flag;
        }
                #endregion

                #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("http://"+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();
                }
        }
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 建德市| 乡城县| 宁远县| 邻水| 平塘县| 崇左市| 义马市| 象山县| 民丰县| 邮箱| 扶余县| 上饶县| 中山市| 江安县| 东乡族自治县| 巴马| 布尔津县| 兴安盟| 乌恰县| 湘潭市| 二连浩特市| 武宁县| 梨树县| 洱源县| 张家口市| 青冈县| 海口市| 佛冈县| 红安县| 普定县| 平乡县| 文成县| 阿坝县| 边坝县| 固安县| 雅安市| 龙陵县| 永德县| 巫山县| 呼图壁县| 克山县|