这个问题对我来说是:超难,请帮忙写出方法,或提供思路,不胜感激。我的页面上有一个dropdownlist控件和一个textbox控件。
问题一:我想从xml文件中读取出所有问题绑定在dropdownlist上。
问题二:当textbox中的答案被更改时,当dropdownlist选择的问题被更改时,根据用户ID把这些再写回到xml文件中。
问题三:xml文件如何设计
100表示感谢

解决方案 »

  1.   

    直接用DataTable就可以了,读xml:DataTable.ReadXml, 写Xml:DataTable.WriteXmlDataTable.Columns.Add("用户名")
    DataTable.Columns.Add("问题ID")
    DataTable.Columns.Add("问题内容")
    DataTable.Columns.Add("问题答案")
      

  2.   

    三楼的思路就可以,重点操作DataTable
      

  3.   

    读xml:DataTable.ReadXml, 写Xml:DataTable.WriteXml
    能把这个说的具体点吗?
      

  4.   

    Asp.net的吧,直接上代码,xml文件放在WebSite的App_Data下面 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                BindDropDownList();
        }    private void BindDropDownList()
        {
            DataTable questionsData = new DataTable("QuestionsData");
            questionsData.Columns.Add("UserId");
            questionsData.Columns.Add("QuestionId");
            questionsData.Columns.Add("QuestionContent");
            questionsData.Columns.Add("QuestionAnswer");        questionsData.ReadXml(Server.MapPath("~/App_Data/Questions.xml"));
            this.ViewState[questionsData.TableName] = questionsData;        this.DropDownList1.DataSource = questionsData;
            this.DropDownList1.DataTextField = "QuestionContent";
            this.DropDownList1.DataValueField = "QuestionId";        this.DropDownList1.SelectedIndex = -1;
            this.DropDownList1.DataBind();
            
        }    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.TextBox1.Text = this.DropDownList1.SelectedItem.Text;
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            DataTable questionsData = (DataTable)this.ViewState["QuestionsData"];
            DataRow newQuestion = questionsData.NewRow();
            newQuestion["UserId"] = "test_user";
            newQuestion["QuestionId"] = Guid.NewGuid().ToString("N");
            newQuestion["QuestionContent"] = this.TextBox1.Text;
            newQuestion["QuestionAnswer"] = this.TextBox2.Text;
            questionsData.Rows.Add(newQuestion);        questionsData.WriteXml(Server.MapPath("~/App_Data/Questions.xml"));        BindDropDownList();
        }
      

  5.   

    我还得多问一句,这个xml文件如何写
      

  6.   

    你打开
    http://msdn.microsoft.com/zh-cn/library/system.xml.xmldocument.aspx
    看一下 XmlDocument 类 的方法就完全明白了,。
      

  7.   

    questionsData.WriteXml(Server.MapPath("~/App_Data/Questions.xml"));DataTable就会按照自己的Schema把数据写进去了。
    形如:
    <?xml version="1.0" standalone="yes"?>
    <DocumentElement>
      <QuestionsData>
        <UserId>test_user</UserId>
        <QuestionId>f8ff727802f94703bc3ca37755007ee3</QuestionId>
        <QuestionContent>which day is your birthday?</QuestionContent>
        <QuestionAnswer>2009/11/12</QuestionAnswer>
      </QuestionsData>
      <QuestionsData>
        <UserId>test_user</UserId>
        <QuestionId>77ed3b27891b4373a5b885e7617ffaa5</QuestionId>
        <QuestionContent>what are your name?</QuestionContent>
        <QuestionAnswer>Fillex</QuestionAnswer>
      </QuestionsData>
      <QuestionsData>
        <UserId>test_user</UserId>
        <QuestionId>d07f4f8b054b4d8abc250cfca6299506</QuestionId>
        <QuestionContent>How old are you?</QuestionContent>
        <QuestionAnswer>30</QuestionAnswer>
      </QuestionsData>
    </DocumentElement>
      

  8.   

    按你的方法,写完之后,把原来的encoding="gb2312",写成了standalone="yes"
    这样下次就变成乱码了,我这里有汉字的东西
      

  9.   

    用XmlTextWriter指定encoding        string xmlFilePath = Server.MapPath("~/App_Data/Questions.xml");        using (System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(xmlFilePath, Encoding.UTF8))
            {
                xtw.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
                xtw.Formatting = System.Xml.Formatting.Indented;
                questionsData.WriteXml(xtw);
            }