WEB开发网
开发学院网页设计JavaScript 应用JScript和XML自定义无刷新多级联动菜单 阅读

应用JScript和XML自定义无刷新多级联动菜单

 2010-09-14 13:39:10 来源:WEB开发网   
核心提示: WriteStartElement方法用于写出指定的开始标记;WriteEndElement方法用于关闭一个元素并弹出相应的命名空间范围;WriteAttributeString方法用于写出具有指定值的属性;WriteStartAttribute方法用于书写属性的起始内容;WriteEnd

WriteStartElement方法用于写出指定的开始标记;

WriteEndElement方法用于关闭一个元素并弹出相应的命名空间范围;

WriteAttributeString方法用于写出具有指定值的属性;

WriteStartAttribute方法用于书写属性的起始内容;

WriteEndAttribute 方法用于关闭上一个 WriteStartAttribute 调用。

下面的代码将演示如何把DataSet中的数据导出到XML文件中并做出详细说明。首先是定义一个类的静态方法DataSetToXML,其程序实现思想是先从DataSet中获得的省级数据,然后做循环来获得每个省所包含的地级市的数据,类似再做地级市数据的循环来获得每个地级市所包含的县(市)级数据。

 
        /// <summary>
        /// 将DataSet中的数据导出到XML文件中
        /// </summary>
        /// <param name="dsSet">要导出的DataSet</param>
        /// <returns>返回1表示方法执行成功,否则返回为-1</returns>
        public static int DataSetToXML(DataSet dsSet)
        {
            //判断当前返回的DataSet是否为空,为空则返回-1
            if (dsSet == null) return -1;
 
            //对XML文件进行必要的设置
            XmlWriterSettings settings = null;
            settings = new XmlWriterSettings();
            if (settings == null) return -1;
            //设置相关属性值
            settings.Indent = true;
            settings.NewLineOnAttributes = false;
 
            //创建XML文件
            XmlWriter writer = null;
            writer = XmlWriter.Create(@"C:Chinadomain.xml", settings);
            if (writer == null) return -1;
 
            //开始写文档
            writer.WriteStartDocument();
 
            //开始写标签
            writer.WriteStartElement("China");
 
            int i = 0, j = 0, k = 0;
                     //获取省级数据的动态数组
            ArrayList provinceList = FindProvince(dsSet);
            for (i = 0; i < provinceList.Count; i++)
            {
                int iCur = (int)provinceList[i];
                writer.WriteStartElement("Province");
                writer.WriteAttributeString("name", (String)dsSet.Tables[0].Rows[iCur].ItemArray[1]);
                writer.WriteAttributeString("value", (String)dsSet.Tables[0].Rows[iCur].ItemArray[0]);
                //查找当前省的所有地级市
                ArrayList cityList = FindCity(dsSet, (String)dsSet.Tables[0].Rows[iCur].ItemArray[0]);
                for (j = 0; j < cityList.Count; j++)
                {
                    int jCur = (int)cityList[j];
                    writer.WriteStartElement("City");
                    writer.WriteAttributeString("name", (String)dsSet.Tables[0].Rows[jCur].ItemArray[1]);
                    writer.WriteAttributeString("value", (String)dsSet.Tables[0].Rows[jCur].ItemArray[0]);
                    //设置当前行的父行
                    dsSet.Tables[0].Rows[jCur].SetParentRow(dsSet.Tables[0].Rows[iCur]);
                    //查找当前地级市的所有县级市
                    ArrayList districtList = FindDistrict(dsSet, (String)dsSet.Tables[0].Rows[jCur].ItemArray[0]);
                    for (k = 0; k < districtList.Count; k++)
                    {
                        int kCur = (int)districtList[k];
                        writer.WriteStartElement("District");
                        writer.WriteAttributeString("name", (String)dsSet.Tables[0].Rows[kCur].ItemArray[1]);
                        writer.WriteAttributeString("value", (String)dsSet.Tables[0].Rows[kCur].ItemArray[0]);
                        //设置当前行的父行
                        dsSet.Tables[0].Rows[kCur].SetParentRow(dsSet.Tables[0].Rows[jCur]);
                        writer.WriteEndElement();
                    }
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
            }
            writer.WriteEndElement();
            writer.WriteEndDocument();
 
            //清空缓存并关闭文件
            writer.Flush();
            writer.Close();
            return 1;
        }
 
        /// <summary>
        /// 查找省级数据
        /// </summary>
        /// <param name="dsSet">要导出的DataSet</param>
        /// <returns>包含省级数据的动态数组</returns>
        private static ArrayList FindProvince(DataSet dsSet)
        {
            int i = 0;
            //申请返回列表空间
            ArrayList pResList = null;
            pResList = new ArrayList();
            if (pResList == null) return null;
 
            //循环查找省级数据
            for (i = 0; i < dsSet.Tables[0].Rows.Count; i++)
            {
                object[] s = dsSet.Tables[0].Rows[i].ItemArray;
                if (((String)s[0]).Substring(2, 4) == "0000")
                {
                    pResList.Add(i);
                }
            }
            return pResList;
        }
 
        /// <summary>
        /// 查找某个省的地级数据
        /// </summary>
        /// <param name="dsSet">要导出的DataSet</param>
        /// <param name="strProvince">某省的国标代码</param>
        /// <returns>包含某个省的地级数据的动态数组</returns>
        private static ArrayList FindCity(DataSet dsSet, String strProvince)
        {
            int i = 0;
            //申请返回列表空间
            ArrayList pResList = null;
            pResList = new ArrayList();
            if (pResList == null) return null;
 
            //循环查找地级数据
            for (i = 0; i < dsSet.Tables[0].Rows.Count; i++)
            {
                object[] s = dsSet.Tables[0].Rows[i].ItemArray;
                if (((String)s[0]).Substring(2, 4) != "0000" &&
                    ((String)s[0]).Substring(4, 2) == "00" &&
                    ((String)s[0]).Substring(0, 2) == strProvince.Substring(0, 2))
                {
                    pResList.Add(i);
                }
            }
            return pResList;
        }
 
        /// <summary>
        /// 查找某个地级市的县级数据
        /// </summary>
        /// <param name="dsSet">要导出的DataSet</param>
        /// <param name="strCity">某地级市的国标代码</param>
        /// <returns>包含某个地级市的县级数据的动态数组</returns>
        private static ArrayList FindDistrict(DataSet dsSet, String strCity)
        {
            int i = 0;
            //申请返回列表空间
            ArrayList pResList = null;
            pResList = new ArrayList();
            if (pResList == null) return null;
 
            //循环查找县级数据
            for (i = 0; i < dsSet.Tables[0].Rows.Count; i++)
            {
                object[] s = dsSet.Tables[0].Rows[i].ItemArray;
                if (((String)s[0]).Substring(2, 4) != "0000" &&
                    ((String)s[0]).Substring(4, 2) != "00" &&
                    ((String)s[0]).Substring(0, 4) == strCity.Substring(0, 4))
                {
                    pResList.Add(i);
                }
            }
            return pResList;
        }

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:应用 JScript XML

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接