具体描述一下吧:我想做的是,在商品的显示页面中显示商品的基本信息(名字,价格。),这个显示信息问题已经做得差不多了,信息差不多都能显示出来。然后通过一个Button来将这些信息添加到服务器端的一个xml文件中(cart.xml)。由于对c#如何写xml文件不太了解,然后就摸索着写了一个,自我感觉还算中规中矩,但是结论是什么都没实现,只能来跪求各位高手了。本人知道很小白。。下面是后台代码
using System;
using System.Xml;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class detail : System.Web.UI.Page
{
    string path;
    protected void Page_Load(object sender, EventArgs e)
    {
        path = Server.MapPath("cart.xml");
        int id;
        id = Int32.Parse(Request.QueryString["id"]);
        sql s = new sql("pimg",id);
        Image1.ImageUrl = s.returnValue.ToString();//顺便求一下此处为什么图片也会不显示
        sql st=new sql("pintro",id);
        Label1.Text=st.returnValue.ToString();
        sql sn = new sql("pname", id);
        Label2.Text = sn.returnValue.ToString();
        sql spri = new sql("ppri", id);
        Label3.Text =spri.returnValue.ToString();
        
        
    }
    protected void Btnadd_Click(object sender, EventArgs e)
    {
        string pname, price;
        pname = Label1.Text.ToString();
        price = Label3.Text.ToString();
        Selectxml sel = new Selectxml(path,pname);
        if (sel.i == 0)
            Response.Write("已添加至购物车,请勿重复操作");
        else
        {
            Add ad = new Add(path,pname, price);
            Response.Write("添加成功");
           // Response.Redirect("cart.aspx");
        }    }
}接下来是与之有关的类1.数据查询类using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;/// <summary>
/// sql 的摘要说明
/// </summary>
public class sql
{
    public Object returnValue;
public sql(string str,int id)
{
        
        string strcon = "server=.;database=product;user id=sa;pwd=317448437";
        SqlConnection con = new SqlConnection(strcon);
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "select "+str+" from pro where id='" + id + "'";
        con.Open();
        returnValue = cmd.ExecuteScalar();
        con.Close();
       
}
}2.检查节点是否存在的类using System;
using System.Data;
using System.Xml;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;/// <summary>
/// Selectxml 的摘要说明
/// </summary>
public class Selectxml
{
   public int i;
    
   
public Selectxml(string path,string name)
{
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(path);
        i=1;
XmlNodeList nodeList=xmlDoc.SelectSingleNode("orders").ChildNodes;//获取order节点所有子节点
       foreach(XmlNode xn in nodeList)//遍历所有子节点
       {
           XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
           XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
           foreach(XmlNode xn1 in nls)//遍历
           {
               XmlElement xe2=(XmlElement)xn1;//转换类型
               if(xe2.Name=="name")//如果找到
               {
                   if(xe2.InnerText==name)
                       i=0;
                   break;
               }
           }
           break;
       }
    }
}
3.节点插入类using System;
using System.Xml;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;/// <summary>
/// xml 的摘要说明
/// </summary>
public class Add
{
public Add(string path,string name,string price)
{   XmlDocument xmlDoc=new XmlDocument();
      xmlDoc.Load(path);
      XmlNode root=xmlDoc.SelectSingleNode("orders");//查找<orders>
      XmlElement xe1=xmlDoc.CreateElement("order");//创建一个<order>节点
      XmlElement xesub1=xmlDoc.CreateElement("name");
      xesub1.InnerText=name;//设置文本节点
      xe1.AppendChild(xesub1);//添加到<order>节点中
      XmlElement xesub2=xmlDoc.CreateElement("price");
      xesub2.InnerText=price;
      xe1.AppendChild(xesub2);
      root.AppendChild(xe1);//添加到<bookstore>节点中
      xmlDoc.Save("cart.xml");
}
}顺便说明一下,我在csdn上找了一些代码(有关读写xml的),然后在控制台应用程序中是可以完美之行的,但是将代码一些到aspx的后台里就没反应了,参见http://blog.csdn.net/yufenghua/archive/2010/06/25/5692882.aspx
  谢谢诸位

解决方案 »

  1.   

    文件夹权限先放开,加上everyone
      

  2.   

    xmlDoc.Save("cart.xml");怎么不用参数
      

  3.   

    其实楼主不用贴 那么多代码,把关键代码,如
          XmlDocument xmlDoc=new XmlDocument();
          xmlDoc.Load(path);
          XmlNode root=xmlDoc.SelectSingleNode("orders");//查找<orders>
          XmlElement xe1=xmlDoc.CreateElement("order");//创建一个<order>节点
          XmlElement xesub1=xmlDoc.CreateElement("name");
          xesub1.InnerText=name;//设置文本节点
          xe1.AppendChild(xesub1);//添加到<order>节点中
          XmlElement xesub2=xmlDoc.CreateElement("price");
          xesub2.InnerText=price;
          xe1.AppendChild(xesub2);
          root.AppendChild(xe1);//添加到<bookstore>节点中
          xmlDoc.Save("cart.xml");贴上即可,然后告诉什么状况,出现什么具体错误,还有楼主说控制台程序行而 aspx 中不行,那得确定这段代码有被执行。Debug 时有异常也会马上有提示的。
      

  4.   

    Selectxml错了
    把两个break语句都删掉,否则查找到第一个节点就结束了服务器上要有cart.xml文件,根节点必须是<orders>
      

  5.   

    xmlDoc.Save("cart.xml");错了 ,要真实的物理路径,要不就是保存到C盘去了
      

  6.   

     xml文件所在文件夹要开IIS_WPG的写权限,xmlDoc.Save("cart.xml")的路径要写物理路径:xmlDoc.Save(Server.MapPath("cart.xml")),如果还不行就打个断点跟踪调试一下
      

  7.   

    XML里面的文件结构是灰常简单的。
    要本地创建XML文件的时候就可以先创建一个TXT文件,将后缀改一下就完成。
    依此思想,可以创建一个空的XML文件如 xx.xml
    对其写入内容,先写头部(具体忘记了)
    再对其追加节点即可。用XML操作,或用IO流操作追加都随便你了。
      

  8.   

    你可以创建一个DataTableDataTable对象有直接保存XML的方法,WriteXml() ,非常简单~
    比你上面的XMLdocument简单多了~
      

  9.   

     <XtraSerializer version="1.0" application="View">
      <property name="#LayoutVersion" /> 
      <property name="BestFitMaxRowCount">-1</property> 
      <property name="FooterPanelHeight">-1</property> 
      <property name="Name">dgvTallys</property> 
    - <property name="Columns" iskey="true" value="13">
    - <property name="Item1" isnull="true" iskey="true">
    - <property name="OptionsColumn" isnull="true" iskey="true">
      <property name="AllowSort">False</property> 
      </property>
      <property name="Caption">账户</property> 
      <property name="ColumnEditName" /> 
      <property name="Name">AccountID</property> 
      </property>
    - <property name="Item2" isnull="true" iskey="true">
    - <property name="OptionsColumn" isnull="true" iskey="true">
      <property name="AllowSort">False</property> 
      </property>
      <property name="Caption">会计项目编号</property> 
      <property name="ColumnEditName" /> 
      <property name="Name">AccountCode</property> 
      </property>
    - <property name="Item3" isnull="true" iskey="true">
    - <property name="OptionsColumn" isnull="true" iskey="true">
      <property name="AllowSort">False</property> 
      </property>
      <property name="Caption">会计项目</property> 
      <property name="ColumnEditName" /> 
      <property name="VisibleIndex">0</property> 
      <property name="Name">AccountCodeName</property> 
      <property name="Width">70</property> 
      <property name="Visible">true</property> 
      </property>
    - <property name="Item4" isnull="true" iskey="true">
    - <property name="OptionsColumn" isnull="true" iskey="true">
      <property name="AllowSort">False</property> 
      </property>
      <property name="Caption">会计日期</property> 
      <property name="ColumnEditName" /> 
      <property name="VisibleIndex">1</property> 
      <property name="Name">AccoutDate</property> 
      <property name="Width">102</property> 
      <property name="Visible">true</property> 
      </property>
    - <property name="Item5" isnull="true" iskey="true">
      <property name="Caption">+</property> 
      <property name="ColumnEditName" /> 
      <property name="VisibleIndex">2</property> 
      <property name="Name">AmountIn</property> 
      <property name="Width">80</property> 
      <property name="Visible">true</property> 
      </property>
    - <property name="Item6" isnull="true" iskey="true">
      <property name="Caption">——</property> 
      <property name="ColumnEditName" /> 
      <property name="VisibleIndex">3</property> 
      <property name="Name">AmountOut</property> 
      <property name="Width">74</property> 
      <property name="Visible">true</property> 
      </property>
    - <property name="Item7" isnull="true" iskey="true">
      <property name="Caption">余额</property> 
      <property name="ColumnEditName" /> 
      <property name="VisibleIndex">4</property> 
      <property name="Name">AmountSub</property> 
      <property name="Width">90</property> 
      <property name="Visible">true</property> 
      </property>
    - <property name="Item8" isnull="true" iskey="true">
      <property name="Caption">单据编号</property> 
      <property name="ColumnEditName" /> 
      <property name="VisibleIndex">5</property> 
      <property name="Name">VoucherNO</property> 
      <property name="Width">130</property> 
      <property name="Visible">true</property> 
      </property>
    - <property name="Item9" isnull="true" iskey="true">
      <property name="Caption">单据</property> 
      <property name="ColumnEditName" /> 
      <property name="Name">VoucherType</property> 
      </property>
    - <property name="Item10" isnull="true" iskey="true">
      <property name="Caption">备注</property> 
      <property name="ColumnEditName" /> 
      <property name="VisibleIndex">6</property> 
      <property name="Name">Res</property> 
      <property name="Width">101</property> 
      <property name="Visible">true</property> 
      </property>
    - <property name="Item11" isnull="true" iskey="true">
      <property name="Caption">审核</property> 
      <property name="ColumnEditName" /> 
      <property name="VisibleIndex">7</property> 
      <property name="Name">Approved</property> 
      <property name="Width">55</property> 
      <property name="Visible">true</property> 
      </property>
    - <property name="Item12" isnull="true" iskey="true">
      <property name="Caption">修改</property> 
      <property name="ColumnEditName" /> 
      <property name="VisibleIndex">8</property> 
      <property name="Name">EditedBy</property> 
      <property name="Width">71</property> 
      <property name="Visible">true</property> 
      </property>
    - <property name="Item13" isnull="true" iskey="true">
      <property name="Caption">修改日期</property> 
      <property name="ColumnEditName" /> 
      <property name="VisibleIndex">9</property> 
      <property name="Name">EditedDateTime</property> 
      <property name="Width">59</property> 
      <property name="Visible">true</property> 
      </property>
      </property>
      <property name="ViewCaptionHeight">-1</property> 
      <property name="ChildGridLevelName" /> 
      <property name="FixedLineWidth">2</property> 
      <property name="DetailHeight">350</property> 
      <property name="GroupFormat">{0}: [#image]{1} {2}</property> 
      <property name="RowHeight">-1</property> 
      <property name="GroupFooterShowMode">VisibleIfExpanded</property> 
      <property name="BorderStyle">Default</property> 
      <property name="ScrollStyle">LiveVertScroll, LiveHorzScroll</property> 
      <property name="ColumnPanelRowHeight">-1</property> 
    - <property name="OptionsView" isnull="true" iskey="true">
      <property name="ShowGroupPanel">false</property> 
      </property>
      <property name="ShowButtonMode">ShowForFocusedCell</property> 
      <property name="HorzScrollVisibility">Auto</property> 
      <property name="VertScrollVisibility">Auto</property> 
      <property name="VertScrollTipFieldName" /> 
      <property name="PreviewIndent">-1</property> 
      <property name="CustomizationFormBounds">@1,Y=0@1,X=0@1,Width=0@1,Height=0</property> 
      <property name="ViewCaption" /> 
      <property name="GroupRowHeight">-1</property> 
      <property name="PreviewFieldName" /> 
      <property name="GroupPanelText" /> 
      <property name="IndicatorWidth">-1</property> 
      <property name="DetailTabHeaderLocation">Top</property> 
      <property name="RowSeparatorHeight">0</property> 
      <property name="PreviewLineCount">-1</property> 
      <property name="NewItemRowText" /> 
      <property name="FocusRectStyle">CellFocus</property> 
      <property name="HorzScrollStep">3</property> 
      <property name="ActiveFilterEnabled">true</property> 
      <property name="SynchronizeClones">true</property> 
      <property name="LevelIndent">-1</property> 
      <property name="GroupSummary" iskey="true" value="0" /> 
      <property name="FormatConditions" iskey="true" value="0" /> 
      <property name="ActiveFilterString" /> 
      <property name="GroupSummarySortInfoState" /> 
      </XtraSerializer>
    以前写的
      

  10.   

    XmlNode userNode = null;
            XmlNode node = null;        XmlDocument xmlDoc = new XmlDocument();
            XmlNode rootNode = xmlDoc.CreateNode(XmlNodeType.Element, "Dailys", "");
            xmlDoc.AppendChild(rootNode);        foreach (JournalDaily jd in list)
            {
                userNode = xmlDoc.CreateNode(XmlNodeType.Element, "Daily", "");
                rootNode.AppendChild(userNode);            node = xmlDoc.CreateNode(XmlNodeType.Element, "Id", "");
                node.InnerText = jd.Id;
                userNode.AppendChild(node);            node = xmlDoc.CreateNode(XmlNodeType.Element, "Details", "");
                node.InnerText = jd.Details;
                userNode.AppendChild(node);            node = xmlDoc.CreateNode(XmlNodeType.Element, "Date", "");
                node.InnerText = DateTime.Parse(jd.Date.ToString()).ToString("yyyy-MM-dd");
                userNode.AppendChild(node);
            }希望对你有所启发