注册 登录
编程论坛 ASP.NET技术论坛

为什么我的新文件不能保存在xml中这段代码中buttonOK_Click有什么问题

发布于 2010-04-28 15:55, 432 次点击
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Xml;

public partial class EditDiary : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
            return;
        if (Request.QueryString["id"] == "-1")
        {
            labelDate.Text = DateTime.Now.ToShortDateString();
            int dayofWeek = (int)(DateTime.Now.DayOfWeek);
            labelWeek.Text = weekDay[dayofWeek];
        }
        else

            try
            {
                GetDiary(Request.QueryString["id"]);
            }
            catch
            {

            }
               

    }

    private void GetDiary(string p)
    {
        throw new NotImplementedException();
    }
    private string[] weekDay = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };

    private void Getdiary(string id)
    {
        XmlDataDocument diaryXmlDoc;//载入XMl文档
        diaryXmlDoc=new XmlDataDocument();
        diaryXmlDoc.Load(Server.MapPath("diaries.xml"));
        XmlNode diary= diaryXmlDoc.SelectSingleNode("descendant::diary[@id='"+id+"']");
        textTitle.Text=diary.ChildNodes[0].InnerText;
        labelDate.Text=diary.ChildNodes[1].InnerText;
        int dayofWeek=(int)(DateTime.Parse(labelDate.Text).DayOfWeek);
        labelWeek.Text=weekDay[dayofWeek ];
        foreach( ListItem item in listWeather .Items )
        {
            if(item.Text==diary.ChildNodes[2].InnerText)
            {
                listWeather .SelectedItem.Selected=false ;
                item.Selected =true;
                break;
            }
        }
        textContent.Text=diary.ChildNodes[3].InnerText;
    }
    protected void buttonCancel_Click(object sender, ImageClickEventArgs e)
    {
        string strScript = "<script>self.close()</script>";
        RegisterClientScriptBlock("CloseWindow", strScript);
    }
    protected void buttonOK_Click(object sender, ImageClickEventArgs e)
    {
        XmlDataDocument diaryXmlDoc;//载入Xml文档
        diaryXmlDoc = new XmlDataDocument();
        diaryXmlDoc.Load(Server.MapPath("diaries.xml"));
        XmlNode root = diaryXmlDoc.DocumentElement;
        XmlNode newDiary = diaryXmlDoc.CreateElement("diary");
        newDiary.InnerXml = "<title>" + textTitle.Text +"</title>" + "<date>"+labelDate.Text+"</date>"+ "<weather>" + listWeather.SelectedItem.Text + "</weather>" + "<content>" + textContent.Text + "</content>";
        if (Request.QueryString["id"] == "-1")//保存日记
        {
            string diaryID;
            int id = int.Parse(root.LastChild.Attributes["id"].Value);
            diaryID = (id + 1).ToString();
            XmlAttribute attrID = diaryXmlDoc.CreateAttribute("ID");
            newDiary.Attributes.Append(attrID);
            root.AppendChild(newDiary);
        }
        else//保存日记
        {
            XmlAttribute attrID=diaryXmlDoc.CreateAttribute("id");
            attrID.Value=Request.QueryString["id"];
            newDiary.Attributes.Append(attrID);
            XmlNode oldDiary=diaryXmlDoc.SelectSingleNode("descendant::diary[@id='"+Request.QueryString["id"]+"']");
            root.ReplaceChild(newDiary ,oldDiary );
        }
        diaryXmlDoc.Save(Server.MapPath("diaries.xml"));
        string strScript="<script>self.close()</script>";
        RegisterClientScriptBlock("CloseWindow",strScript);
    }



}
1 回复
#2
冰镇柠檬汁儿2010-04-28 17:10
会不会是文件的问题?我原来做过XML文件操作,也遇到过类似的问题,好想只有.NET创建的XML文件才能操作,具体是为什么我也不清楚,可能是文件编码的问题
1