<?xml version="1.0" encoding="gb2312"?>
<time>
<year value="2007年">
   <month value="01月">
<day>01</date>
<day>02</date>
   </month>
    <month value="02月">
<day>01</date>
<day>02</date>
   </month>
  </year>
  <year value="2008年">
   <month value="1月">
<day value="">1</date>
<day value="">2</date>
<day value="">3</date>
   </month>
   <month value="2月">
<day>01</date>
<day>02</date>
<day>03</date>
   </month>
</year>
</time>格式如图,我从数据库里取出的数据是这样的
   年    月   日
2007 01 01
2007 01 02
2007 01 03
2007 02 01
2007 02 02
2008 01 01
2008 01 02
2008 01 03
2008 02 01
2008 02 02
2008 02 03这样的XML应该怎样生成呢。我在开始的时候 已经 
                        XmlDocument doc = new XmlDocument();
            StringBuilder sb = new StringBuilder();
            sb.Append("<?xml version=\"1.0\" encoding=\"gb2312\"?>");
            sb.Append("<root>");//root就是time
            sb.Append("<first value=\"\">");//first就是year
            sb.Append("<second value=\"\">");//second就是month
            sb.Append("<third></third>");//third就是day
            sb.Append("</second>");
            sb.Append("</first>");
            sb.Append("</root>");            doc.LoadXml(sb.ToString());
            doc.Save(path);然后就是 XmlDocument doc = new XmlDocument();
       doc.load(name);//这个Xml的Name
然后是取数据
DataTable dt = ReturnDate();
然后,555,就卡这了 不知道怎么办了
初学谢谢各位大侠最好有这样的例子。。谢谢给位了 

解决方案 »

  1.   


     protected void Page_Load(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml("<time></time>");        XmlDeclaration xmldecl;
            xmldecl = doc.CreateXmlDeclaration("1.0", null, null);
            xmldecl.Encoding = "gb2312";        XmlNode root = doc.SelectSingleNode("time");
            doc.InsertBefore(xmldecl, root);        DataTable dt = GetTable();
            ArrayList years = GetYearInstance(dt);        for (int i = 0; i < years.Count; i++)
            {
                XmlElement year = doc.CreateElement("year");
                year.SetAttribute("value", years[i] + "年");
                root.AppendChild(year);            DataRow[] drs = dt.Select("year='" + years[i] + "'");
                ArrayList months = GetMonthInstance(drs);            for (int j = 0; j < months.Count; j++)
                {
                    XmlElement month = doc.CreateElement("month");
                    month.SetAttribute("value", months[j].ToString() + "月");
                    year.AppendChild(month);                DataRow[] days = dt.Select("year='" + years[i] + "' and month='" + months[j] + "'");
                    for (int k = 0; k < days.Length; k++)
                    {
                        XmlElement day = doc.CreateElement("day");
                        day.InnerText = days[k]["day"].ToString();
                        month.AppendChild(day);
                    }
                }
            }
            doc.Save(Server.MapPath("final.xml")); 
        }    private ArrayList GetMonthInstance(DataRow[] drs)
        {
            ArrayList months = new ArrayList();
            foreach (DataRow dr in drs)
            {
                if (!months.Contains(dr["month"].ToString()))
                {
                    months.Add(dr["month"].ToString());
                }
            }
            return months;
        }    private ArrayList GetYearInstance(DataTable dt)
        {
            ArrayList years = new ArrayList();
            foreach (DataRow dr in dt.Rows)
            {
                if (!years.Contains(dr["year"].ToString()))
                {
                    years.Add(dr["year"].ToString());
                }
            }
            return years;
        }    private DataTable GetTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("year");
            dt.Columns.Add("month");
            dt.Columns.Add("day");        DataRow dr = dt.NewRow();
            dr["year"] = "2007";
            dr["month"] = "01";
            dr["day"] = "01";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["year"] = "2007";
            dr["month"] = "01";
            dr["day"] = "02";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["year"] = "2007";
            dr["month"] = "02";
            dr["day"] = "01";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["year"] = "2007";
            dr["month"] = "02";
            dr["day"] = "02";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["year"] = "2008";
            dr["month"] = "01";
            dr["day"] = "01";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["year"] = "2008";
            dr["month"] = "01";
            dr["day"] = "02";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["year"] = "2008";
            dr["month"] = "01";
            dr["day"] = "03";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["year"] = "2008";
            dr["month"] = "02";
            dr["day"] = "01";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["year"] = "2008";
            dr["month"] = "02";
            dr["day"] = "02";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["year"] = "2008";
            dr["month"] = "02";
            dr["day"] = "03";
            dt.Rows.Add(dr);
            return dt;
        }