由于为了方便大家把代码复制一下,在脱离数据的情况下,就可以看到效果,所以,我把数据存放在xml,所以读取数据不是通过数据库,是通过跟xml文件交互实现的。所以做了下面对xml增删改查页面。
效果图:
首先列出XML文件,方便代码参照
内容.xml
<?xml version="1.0" encoding="utf-8"?>
<config>
<Header ID="ID" class="class" class_name="class_name" year="year" school="school" count="count">
</Header>
<rows ID="01" class="一五班" class_name="实验班" year="2013" school="三峡高级中学" count="30">
</rows>
<rows ID="02" class="一六班" class_name="奥数班" year="2013" school="三峡高级中学" count="45">
</rows>
<rows ID="03" class="一七班" class_name="阳光班" year="2013" school="三峡高级中学" count="60">
</rows>
<rows ID="04" class="一八班" class_name="美术班" year="2013" school="三峡高级中学" count="75">
</rows>
</config>
一,核心代码:
1) 修改xml
/// <summary>
/// 修改XML
/// </summary>
/// <param name="xmlName">XML文件名</param>
/// <param name="ht">存放信息哈希表</param>
/// <param name="ID">主键值</param>
public void saveXML(string xmlName,Hashtable ht,string ID)
{
string fileName=HttpContext.Current.Request.PhysicalApplicationPath+"\\Xml\\"+xmlName+".xml";//xml的物理路径
XmlDocument xmlDoc=new XmlDocument ();
xmlDoc.Load(fileName);
XmlNode node = xmlDoc.SelectSingleNode("config/rows[@ID=" + ID + "]");
foreach (XmlNode node1 in node.Attributes)
{
if (ht.ContainsKey(node1.Name)&&node1.Name!="ID")
{
node1.Value = ht[node1.Name].ToString();
}
}
xmlDoc.Save(fileName);
}
ht:
Hashtable ht = new Hashtable();
ht.Add("ID", this.txt_ID.Value);
ht.Add("class", this.txt_class.Value);
ht.Add("class_name", this.txt_class_name.Value);
ht.Add("year", this.txt_year.Value);
ht.Add("school", this.txt_school.Value);
ht.Add("count", this.txt_count.Value);
2)插入xml
/// <summary>
/// 插入xml
/// </summary>
/// <param name="xmlName">XML文件名</param>
/// <param name="ht">存放信息哈希表</param>
/// <returns></returns>
public string insertXml(string xmlName, Hashtable ht)
{
string fileName = HttpContext.Current.Request.PhysicalApplicationPath + "\\Xml\\" + xmlName + ".xml";//xml的物理路径
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);
XmlNode node = xmlDoc.SelectSingleNode("//rows[last()]");//最后一个行节点
XmlNode MaxNode = xmlDoc.SelectSingleNode("//rows/@ID[not(.<//rows/@ID)]");//获取主键最大值
if (int.Parse(ht[MaxNode.Name].ToString()) <= int.Parse(MaxNode.Value))//如果小于主键最大值,那么返回-
{
return "-1";
}
XmlElement xe = xmlDoc.CreateElement("rows");
xe.InnerText = "";
foreach (XmlNode node1 in node.Attributes)
{
if (ht.ContainsKey(node1.Name))
{
xe.SetAttribute(node1.Name, ht[node1.Name].ToString());
}
else
{
xe.SetAttribute(node1.Name,"");
}
}
node.ParentNode.AppendChild(xe);
xmlDoc.Save(fileName);
return "1";
}
3) 删除xml
/// <summary>
/// 删除xml节点
/// </summary>
/// <param name="xmlName">XML文件名</param>
/// <param name="ID">主键值</param>
/// <param name="primaryKey">主键名</param>
/// <returns></returns>
public string deleteXml(string xmlName,string ID,string primaryKey)
{
string rtn = string.Empty;
string fileName = HttpContext.Current.Request.PhysicalApplicationPath + "\\Xml\\" + xmlName + ".xml";//xml的物理路径
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);
XmlNode node = xmlDoc.SelectSingleNode("//rows[@"+primaryKey+"='"+ID+"']");//最后一个行节点
if (node ==null)
{
rtn = "-1";
}
else
{
node.ParentNode.RemoveChild(node);
rtn = "1";
}
xmlDoc.Save(fileName);
return rtn;
}
4)html显示xml在以前的内容已经介绍过
如果是看具体的实现代码,可以下载:
以上就是xml学习(8) xml增删改查的内容,更多相关内容请关注PHP中文网(www.php.cn)!
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
程序员必备接口测试调试工具:点击使用
Apipost = Postman + Swagger + Mock + Jmeter
Api设计、调试、文档、自动化测试工具
网页生成APP,用做网站的技术去做APP:立即创建
手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包
相关文章
相关视频