具体描述一下吧:我想做的是,在商品的显示页面中显示商品的基本信息(名字,价格。),这个显示信息问题已经做得差不多了,信息差不多都能显示出来。然后通过一个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
谢谢诸位
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
谢谢诸位
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 时有异常也会马上有提示的。
把两个break语句都删掉,否则查找到第一个节点就结束了服务器上要有cart.xml文件,根节点必须是<orders>
要本地创建XML文件的时候就可以先创建一个TXT文件,将后缀改一下就完成。
依此思想,可以创建一个空的XML文件如 xx.xml
对其写入内容,先写头部(具体忘记了)
再对其追加节点即可。用XML操作,或用IO流操作追加都随便你了。
比你上面的XMLdocument简单多了~
<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>
以前写的
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);
}希望对你有所启发