123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Xml;
- using System.IO;
- using System.Data;
- namespace Ant.Frame
- {
- #region 实例应用
- //=========================================================
- //实例应用:
- //string strXmlFile = Server.MapPath("TestXml.xml");
- //XmlControl xmlTool = new XmlControl(strXmlFile);
- // 数据显视
- // dgList.DataSource = xmlTool.GetData("Book/Authors[ISBN=\"0002\"]");
- // dgList.DataBind();
- // 更新元素内容
- // xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp");
- // xmlTool.Save();
- // 添加一个新节点
- // xmlTool.InsertNode("Book","Author","ISBN","0004");
- // xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa");
- // xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii");
- // xmlTool.Save();
- // 删除一个指定节点的所有内容和属性
- // xmlTool.Delete("Book/Author[ISBN=\"0004\"]");
- // xmlTool.Save();
- // 删除一个指定节点的子节点
- // xmlTool.Delete("Book/Authors[ISBN=\"0003\"]");
- // xmlTool.Save();
- #endregion
- /// <summary>
- /// XmlHelper 的摘要说明。
- /// xml操作类
- /// </summary>
- public class XmlHelper
- {
- protected string strXmlFile;
- protected XmlDocument objXmlDoc = new XmlDocument();
- public XmlHelper(string XmlFile)
- {
- //
- // TODO: 在这里加入建构函式的程序代码
- //
- try
- {
- objXmlDoc.Load(XmlFile);
- }
- catch (System.Exception ex)
- {
- throw ex;
- }
- strXmlFile = XmlFile;
- }
- public DataTable GetData(string XmlPathNode)
- {
- //查找数据。返回一个DataView
- DataSet ds = new DataSet();
- StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
- ds.ReadXml(read);
- return ds.Tables[0];
- }
- /// <summary>
- /// 新节点内容。
- /// 示例:xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp");
- /// </summary>
- /// <param name="XmlPathNode"></param>
- /// <param name="Content"></param>
- public void Replace(string XmlPathNode, string Content)
- {
- //更新节点内容。
- objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
- }
- /// <summary>
- /// 删除一个指定节点的子节点。
- /// 示例: xmlTool.DeleteChild("Book/Authors[ISBN=\"0003\"]");
- /// </summary>
- /// <param name="Node"></param>
- public void DeleteChild(string Node)
- {
- //删除一个节点。
- string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
- objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
- }
- /// <summary>
- /// * 使用示列:
- /// 示例: XmlHelper.Delete( "/Node", "")
- /// XmlHelper.Delete( "/Node", "Attribute")
- /// </summary>
- /// <param name="node">节点</param>
- /// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>
- public void Delete(string node, string attribute)
- {
- try
- {
- XmlNode xn = objXmlDoc.SelectSingleNode(node);
- XmlElement xe = (XmlElement)xn;
- if (attribute.Equals(""))
- xn.ParentNode.RemoveChild(xn);
- else
- xe.RemoveAttribute(attribute);
- }
- catch { }
- }
- /// <summary>
- /// 插入一节点和此节点的一子节点。
- /// 示例:xmlTool.InsertNode("Book","Author","ISBN","0004");
- /// </summary>
- /// <param name="MainNode">主节点</param>
- /// <param name="ChildNode">子节点</param>
- /// <param name="Element">元素</param>
- /// <param name="Content">内容</param>
- public void InsertNode(string MainNode, string ChildNode, string Element, string Content)
- {
- //插入一节点和此节点的一子节点。
- XmlNode objRootNode = objXmlDoc.SelectSingleNode(MainNode);
- XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
- objRootNode.AppendChild(objChildNode);
- XmlElement objElement = objXmlDoc.CreateElement(Element);
- objElement.InnerText = Content;
- objChildNode.AppendChild(objElement);
- }
- /// <summary>
- /// 插入一个节点,带一属性。
- /// 示例: xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii");
- /// </summary>
- /// <param name="MainNode">主节点</param>
- /// <param name="Element">元素</param>
- /// <param name="Attrib">属性</param>
- /// <param name="AttribContent">属性内容</param>
- /// <param name="Content">元素内容</param>
- public void InsertElement(string MainNode, string Element, string Attrib, string AttribContent, string Content)
- {
- //插入一个节点,带一属性。
- XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
- XmlElement objElement = objXmlDoc.CreateElement(Element);
- objElement.SetAttribute(Attrib, AttribContent);
- objElement.InnerText = Content;
- objNode.AppendChild(objElement);
- }
- /// <summary>
- /// 插入一个节点,不带属性。
- /// 示例:xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa");
- /// </summary>
- /// <param name="MainNode">主节点</param>
- /// <param name="Element">元素</param>
- /// <param name="Content">元素内容</param>
- public void InsertElement(string MainNode, string Element, string Content)
- {
- //插入一个节点,不带属性。
- XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
- XmlElement objElement = objXmlDoc.CreateElement(Element);
- objElement.InnerText = Content;
- objNode.AppendChild(objElement);
- }
- /// <summary>
- /// 对xml文件做插入,更新,删除后需做Save()操作,以保存修改
- /// </summary>
- public void Save()
- {
- //保存文檔。
- try
- {
- objXmlDoc.Save(strXmlFile);
- }
- catch (System.Exception ex)
- {
- throw ex;
- }
- objXmlDoc = null;
- }
- }
- }
|