xml学习(8) xml增删改查

互联网 17-2-23
在项目开发中,我们经常会对某张表进行增删改查。我们根据条件刷选表中的数据放到gridview中以列表形式展现,同时给gridview添加各种样式,比如一般必用的鼠标经过,鼠标离开颜色变化,行选中等颜色加深,同时给列表数据项赋值,单击保存按钮可以修改一条已存在的数据或者添加一条新的数据,单击按钮添加,列表数据项清空,单击删除,可以删除一条数据。

由于为了方便大家把代码复制一下,在脱离数据的情况下,就可以看到效果,所以,我把数据存放在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;          }

以上就是xml学习(8) xml增删改查的内容,更多相关内容请关注PHP中文网(www.php.cn)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:xml学习(7) .net 获取xml节点或者属性最大值

相关资讯