急:毕业设计:C#操作xml问题 本帖最后由 zhouzhoumin0 于 2010-05-09 14:58:36 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 读取XML数据到dataset,设置datagrid绑定的字段ID,problem在 winform中可单击单元格弹出窗体显示详细信息 1楼的帅哥能具体一些吗?能不能给出代码呢?6月10号要答辩了,现在很急在做,之前因为都在看数据库的,结果上周老师说用文件,问他什么文件,他说不知道,我估摸着是xml,现在急着在做了。 别采用默认先读到DataSet中,然后按照列读取,添加 能给出代码或者类似的例子吗 这两天查xml的资料查的很累。现在做的这个只是程序里其中一个功能,还有其他的还没动手,感觉这个比较简单,所以先做了。 C#操作Xml(增删改查)练习 (转)web.config配置:view plaincopy to clipboardprint?<appSettings> <add key="xmlFile" value="xml/class.xml"/> </appSettings> 前台:view plaincopy to clipboardprint?<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="test_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>C#操作Xml(增删改查)练习</title> </head> <body> <form id="form1" runat="server"> <div id="showXml" runat="server"> 显示Xml文档 </div> <div style="background-color:Green;color:Yellow;" mce_style="background-color:Green;color:Yellow;">为html控件绑定服务器控件的两个要点:<br /> 1.onserverclick="serverMethod"这里只写方法名.<br /> 2.后台代码,必须是<br /> protected void XmlAdd(object sender, EventArgs e){}<br /> 注意两个参数及保护级. </div> <input id="btnAdd" type="button" value="add" runat="server" onserverclick="XmlAdd" /> <input id="btnDelete" type="button" value="delete" runat="server" onserverclick="XmlDelete" /> <input id="btnUpdate" type="button" value="update" runat="server" onserverclick="XmlUpdate" /> <input id="btnQuery" type="button" value="query" runat="server" onserverclick="XmlQuery" /> </form> </body> </html> 后台:view plaincopy to clipboardprint?using System; using System.Data; 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; using System.Xml; public partial class test_Default : System.Web.UI.Page { string xmlFile = System.Configuration.ConfigurationManager.AppSettings["xmlFile"]; XmlDocument XmlDoc = new XmlDocument(); protected void Page_Load(object sender, EventArgs e) { Bind(); } private void Bind() { XmlDoc.Load(Server.MapPath("../" + xmlFile));//向上一级 this.showXml.InnerHtml = System.Web.HttpUtility.HtmlEncode(XmlDoc.InnerXml); } protected void XmlAdd(object sender, EventArgs e) { XmlNode objRootNode = XmlDoc.SelectSingleNode("//Root"); //声明XmlNode对象 XmlElement objChildNode = XmlDoc.CreateElement("Student"); //创建XmlElement对象 objChildNode.SetAttribute("id", "1"); objRootNode.AppendChild(objChildNode); // XmlElement objElement = XmlDoc.CreateElement("Name");//???结点和元素的区别?方法都一样. objElement.InnerText = "tree1"; objChildNode.AppendChild(objElement); //保存 XmlDoc.Save(Server.MapPath("../" + xmlFile)); } protected void XmlDelete(object sender, EventArgs e) { string Node = "//Root/Student[Name='tree1']";//Xml是严格区分大小写的. XmlDoc.SelectSingleNode(Node).ParentNode.RemoveChild(XmlDoc.SelectSingleNode(Node)); //保存 XmlDoc.Save(Server.MapPath("../" + xmlFile)); } protected void XmlUpdate(object sender, EventArgs e) { //XmlDoc.SelectSingleNode("//Root/Student[Name='tree1']/Name").InnerText = "tree2"; XmlDoc.SelectSingleNode("//Root/Student[Name='tree1']").Attributes["id"].Value = "001"; //保存 XmlDoc.Save(Server.MapPath("../" + xmlFile)); } protected void XmlQuery(object sender, EventArgs e) { XmlNodeList NodeList = XmlDoc.SelectNodes("//Root/Student");//查询全部的student节点 //循环遍历节点,查询是否存在该节点 for (int i = 0; i < NodeList.Count; i++) { Response.Write(NodeList[i].ChildNodes[0].InnerText); } //查询单个节点,//表示全部匹配的元素./表示以此为根的子元素.javascript下的查询也是一样. string XmlPathNode = "//Root/Student[Name='rock']/Photo"; Response.Write(XmlDoc.SelectSingleNode(XmlPathNode).InnerText); } } xml文件:view plaincopy to clipboardprint?<?xml version="1.0" encoding="gb2312"?> <Root> <Student Admin="no"> <Name>rock</Name> <NickName>rock1</NickName> <Pwd>123</Pwd> <Sex>男生</Sex> <Birthday>1986-1-1</Birthday> <Email>[email protected]</Email> <QQ>123374355</QQ> <Msn>[email protected]</Msn> <Tel>13005129336</Tel> <Homepage>http://www.loveplc.cn</Homepage> <Address>广州</Address> <Work>asp.net菜鸟</Work> <Photo>images/rock.gif</Photo> <Time>2008-3-18 10:15:29</Time> </Student> <Student Admin="yes"> <Name>tree</Name> <NickName>宿舍老大</NickName> <Pwd>51aspx</Pwd> <Sex>男生</Sex> <Birthday> </Birthday> <Email>[email protected]</Email> <QQ> </QQ> <Msn> </Msn> <Tel> </Tel> <Homepage> </Homepage> <Address> </Address> <Work> </Work> <Photo> </Photo> <Time>2008-3-26 11:39:57</Time> </Student> <Student> <Name>tree2</Name> </Student> <Student id="001"> <Name>tree1</Name> </Student> </Root> 边等回复边编辑别的xml文件。 这样子写的话,datagrid里会以表格的形式列出xml文件里的所有内容,我的想法是只显示其中两列,一个是id,一个是每个条目的标题,点击标题可以显示该条目的具体内容(因为是手机程序,屏幕太小,内容在新窗口中显示),表格的形式好像没法做到这样的查看方式,有高手指教下吗?你可先绑定。或建一个数据集。添加新建项里有。然后再绑定。绑定之后把不要显示的列。隐藏不就可以了。这样比较简单。点击标题查看。只要在CELLCLICK事件写一些东西出来就可以了。 6楼和10的楼的哥们的方法都是和很正确的。楼主,我想说明,XmlDocument对象操作xml是最方便的,最全面的,获取集合后,然后再根据你的需要循环放到一个table或其它数据集中再绑定显示就行了。但是看来你对这个对象并不感冒,没办法。你只能用最简单的dataset来处理了。dataset就是用来处理一些比较规范的,具有一定格式的字符串的。10楼的哥们已经说得相当清楚了。我不知道还能怎么说了。你一边做一边查查资料吧。 不是感冒不感冒的问题,我之前没用过xml当数据库,所以现在都不怎么明白,只能尽量找类似的例子看了。另外就是我编程水平很烂…… 10楼的哥们,请问怎么绑定xml文件的内容呢? 序例化和反序例化,几行简单的代码. 你去msdn找找看看 ds.Tables[0].Columns.Remove("solution");ds.Tables[0].Columns.Remove("others");用这两句把后面两列删掉了,现在只会显示id和problem两列,但是今天下午在网上查资料的时候,有见过文章说如果把列隐藏起来,那隐藏起来的列里的数据还可以使用,我现在这样把他们删了,是不是没法读取了? Xmlnodes nodes = TreeView.nodes.add("");foreach(XmlNOdes var in nodes.ChildNodes)要用if(var .name="knowledge")判断来读取Xml遍历 有项目管理经验的.NET开发的朋友,加上限500人的QQ群28720769,一起交流。 不能删除的,要控制显示的列,在你的绑定控件里控件就行了。比如是gridview,你控制显示的列就行了。很方便 文件传输中如何分片 字典表与常量的矛盾 vista 之后,非administrator 用户不能创建用户 請問大家一個關于DataGridView的問題啊! 1000分求个录音&保存&回放的例程(帮顶得这贴的100分) wpf中,怎样手动控制移动tabcontrol的tab页位置呢。 c#数组问题 c#怎么能实现像LenB()函数那样的功能,我想知道。 C# 如何打印出 背景颜色 月收入1000元的悲哀 散分贴 顶者加分!!!!!!! UP者加分!!!! C#循环压缩文件 C++ 或运算转换 C# ,发现越来越蠢了,帮帮手!
在 winform中可单击单元格弹出窗体显示详细信息
6月10号要答辩了,现在很急在做,之前因为都在看数据库的,结果上周老师说用文件,问他什么文件,他说不知道,我估摸着是xml,现在急着在做了。
先读到DataSet中,然后按照列读取,添加
现在做的这个只是程序里其中一个功能,还有其他的还没动手,感觉这个比较简单,所以先做了。
web.config配置:view plaincopy to clipboardprint?
<appSettings>
<add key="xmlFile" value="xml/class.xml"/>
</appSettings>
前台:view plaincopy to clipboardprint?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="test_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>C#操作Xml(增删改查)练习</title>
</head>
<body>
<form id="form1" runat="server">
<div id="showXml" runat="server">
显示Xml文档
</div>
<div style="background-color:Green;color:Yellow;" mce_style="background-color:Green;color:Yellow;">为html控件绑定服务器控件的两个要点:<br />
1.onserverclick="serverMethod"这里只写方法名.<br />
2.后台代码,必须是<br />
protected void XmlAdd(object sender, EventArgs e){}<br />
注意两个参数及保护级.
</div>
<input id="btnAdd" type="button" value="add" runat="server" onserverclick="XmlAdd" />
<input id="btnDelete" type="button" value="delete" runat="server" onserverclick="XmlDelete" />
<input id="btnUpdate" type="button" value="update" runat="server" onserverclick="XmlUpdate" />
<input id="btnQuery" type="button" value="query" runat="server" onserverclick="XmlQuery" />
</form>
</body>
</html> 后台:view plaincopy to clipboardprint?
using System;
using System.Data;
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;
using System.Xml;
public partial class test_Default : System.Web.UI.Page
{
string xmlFile = System.Configuration.ConfigurationManager.AppSettings["xmlFile"];
XmlDocument XmlDoc = new XmlDocument();
protected void Page_Load(object sender, EventArgs e)
{
Bind();
}
private void Bind()
{
XmlDoc.Load(Server.MapPath("../" + xmlFile));//向上一级
this.showXml.InnerHtml = System.Web.HttpUtility.HtmlEncode(XmlDoc.InnerXml);
}
protected void XmlAdd(object sender, EventArgs e)
{
XmlNode objRootNode = XmlDoc.SelectSingleNode("//Root"); //声明XmlNode对象
XmlElement objChildNode = XmlDoc.CreateElement("Student"); //创建XmlElement对象
objChildNode.SetAttribute("id", "1");
objRootNode.AppendChild(objChildNode);
//
XmlElement objElement = XmlDoc.CreateElement("Name");//???结点和元素的区别?方法都一样.
objElement.InnerText = "tree1";
objChildNode.AppendChild(objElement);
//保存
XmlDoc.Save(Server.MapPath("../" + xmlFile));
}
protected void XmlDelete(object sender, EventArgs e)
{
string Node = "//Root/Student[Name='tree1']";//Xml是严格区分大小写的.
XmlDoc.SelectSingleNode(Node).ParentNode.RemoveChild(XmlDoc.SelectSingleNode(Node));
//保存
XmlDoc.Save(Server.MapPath("../" + xmlFile));
}
protected void XmlUpdate(object sender, EventArgs e)
{
//XmlDoc.SelectSingleNode("//Root/Student[Name='tree1']/Name").InnerText = "tree2";
XmlDoc.SelectSingleNode("//Root/Student[Name='tree1']").Attributes["id"].Value = "001";
//保存
XmlDoc.Save(Server.MapPath("../" + xmlFile));
}
protected void XmlQuery(object sender, EventArgs e)
{
XmlNodeList NodeList = XmlDoc.SelectNodes("//Root/Student");//查询全部的student节点
//循环遍历节点,查询是否存在该节点
for (int i = 0; i < NodeList.Count; i++)
{
Response.Write(NodeList[i].ChildNodes[0].InnerText);
}
//查询单个节点,//表示全部匹配的元素./表示以此为根的子元素.javascript下的查询也是一样.
string XmlPathNode = "//Root/Student[Name='rock']/Photo";
Response.Write(XmlDoc.SelectSingleNode(XmlPathNode).InnerText);
}
} xml文件:view plaincopy to clipboardprint?
<?xml version="1.0" encoding="gb2312"?>
<Root>
<Student Admin="no">
<Name>rock</Name>
<NickName>rock1</NickName>
<Pwd>123</Pwd>
<Sex>男生</Sex>
<Birthday>1986-1-1</Birthday>
<Email>[email protected]</Email>
<QQ>123374355</QQ>
<Msn>[email protected]</Msn>
<Tel>13005129336</Tel>
<Homepage>http://www.loveplc.cn</Homepage>
<Address>广州</Address>
<Work>asp.net菜鸟</Work>
<Photo>images/rock.gif</Photo>
<Time>2008-3-18 10:15:29</Time>
</Student>
<Student Admin="yes">
<Name>tree</Name>
<NickName>宿舍老大</NickName>
<Pwd>51aspx</Pwd>
<Sex>男生</Sex>
<Birthday>
</Birthday>
<Email>[email protected]</Email>
<QQ>
</QQ>
<Msn>
</Msn>
<Tel>
</Tel>
<Homepage>
</Homepage>
<Address>
</Address>
<Work>
</Work>
<Photo>
</Photo>
<Time>2008-3-26 11:39:57</Time>
</Student>
<Student>
<Name>tree2</Name>
</Student>
<Student id="001">
<Name>tree1</Name>
</Student>
</Root>
我的想法是只显示其中两列,一个是id,一个是每个条目的标题,
点击标题可以显示该条目的具体内容(因为是手机程序,屏幕太小,内容在新窗口中显示),
表格的形式好像没法做到这样的查看方式,有高手指教下吗?你可先绑定。或建一个数据集。添加新建项里有。然后再绑定。绑定之后把不要显示的列。隐藏不就可以了。
这样比较简单。点击标题查看。只要在CELLCLICK事件写一些东西出来就可以了。
楼主,我想说明,XmlDocument对象操作xml是最方便的,最全面的,获取集合后,然后再根据你的需要循环放到一个table或其它数据集中再绑定显示就行了。但是看来你对这个对象并不感冒,没办法。你只能用最简单的dataset来处理了。
dataset就是用来处理一些比较规范的,具有一定格式的字符串的。10楼的哥们已经说得相当清楚了。我不知道还能怎么说了。你一边做一边查查资料吧。
另外就是我编程水平很烂……
ds.Tables[0].Columns.Remove("others");用这两句把后面两列删掉了,现在只会显示id和problem两列,
但是今天下午在网上查资料的时候,有见过文章说如果把列隐藏起来,那隐藏起来的列里的数据还可以使用,我现在这样把他们删了,是不是没法读取了?
比如是gridview,你控制显示的列就行了。很方便