XmlHelper.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Xml;
  6. using System.IO;
  7. using System.Data;
  8. namespace Ant.Frame
  9. {
  10. #region 实例应用
  11. //=========================================================
  12. //实例应用:
  13. //string strXmlFile = Server.MapPath("TestXml.xml");
  14. //XmlControl xmlTool = new XmlControl(strXmlFile);
  15. // 数据显视
  16. // dgList.DataSource = xmlTool.GetData("Book/Authors[ISBN=\"0002\"]");
  17. // dgList.DataBind();
  18. // 更新元素内容
  19. // xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp");
  20. // xmlTool.Save();
  21. // 添加一个新节点
  22. // xmlTool.InsertNode("Book","Author","ISBN","0004");
  23. // xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa");
  24. // xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii");
  25. // xmlTool.Save();
  26. // 删除一个指定节点的所有内容和属性
  27. // xmlTool.Delete("Book/Author[ISBN=\"0004\"]");
  28. // xmlTool.Save();
  29. // 删除一个指定节点的子节点
  30. // xmlTool.Delete("Book/Authors[ISBN=\"0003\"]");
  31. // xmlTool.Save();
  32. #endregion
  33. /// <summary>
  34. /// XmlHelper 的摘要说明。
  35. /// xml操作类
  36. /// </summary>
  37. public class XmlHelper
  38. {
  39. protected string strXmlFile;
  40. protected XmlDocument objXmlDoc = new XmlDocument();
  41. public XmlHelper(string XmlFile)
  42. {
  43. //
  44. // TODO: 在这里加入建构函式的程序代码
  45. //
  46. try
  47. {
  48. objXmlDoc.Load(XmlFile);
  49. }
  50. catch (System.Exception ex)
  51. {
  52. throw ex;
  53. }
  54. strXmlFile = XmlFile;
  55. }
  56. public DataTable GetData(string XmlPathNode)
  57. {
  58. //查找数据。返回一个DataView
  59. DataSet ds = new DataSet();
  60. StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
  61. ds.ReadXml(read);
  62. return ds.Tables[0];
  63. }
  64. /// <summary>
  65. /// 新节点内容。
  66. /// 示例:xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp");
  67. /// </summary>
  68. /// <param name="XmlPathNode"></param>
  69. /// <param name="Content"></param>
  70. public void Replace(string XmlPathNode, string Content)
  71. {
  72. //更新节点内容。
  73. objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
  74. }
  75. /// <summary>
  76. /// 删除一个指定节点的子节点。
  77. /// 示例: xmlTool.DeleteChild("Book/Authors[ISBN=\"0003\"]");
  78. /// </summary>
  79. /// <param name="Node"></param>
  80. public void DeleteChild(string Node)
  81. {
  82. //删除一个节点。
  83. string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
  84. objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
  85. }
  86. /// <summary>
  87. /// * 使用示列:
  88. /// 示例: XmlHelper.Delete( "/Node", "")
  89. /// XmlHelper.Delete( "/Node", "Attribute")
  90. /// </summary>
  91. /// <param name="node">节点</param>
  92. /// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>
  93. public void Delete(string node, string attribute)
  94. {
  95. try
  96. {
  97. XmlNode xn = objXmlDoc.SelectSingleNode(node);
  98. XmlElement xe = (XmlElement)xn;
  99. if (attribute.Equals(""))
  100. xn.ParentNode.RemoveChild(xn);
  101. else
  102. xe.RemoveAttribute(attribute);
  103. }
  104. catch { }
  105. }
  106. /// <summary>
  107. /// 插入一节点和此节点的一子节点。
  108. /// 示例:xmlTool.InsertNode("Book","Author","ISBN","0004");
  109. /// </summary>
  110. /// <param name="MainNode">主节点</param>
  111. /// <param name="ChildNode">子节点</param>
  112. /// <param name="Element">元素</param>
  113. /// <param name="Content">内容</param>
  114. public void InsertNode(string MainNode, string ChildNode, string Element, string Content)
  115. {
  116. //插入一节点和此节点的一子节点。
  117. XmlNode objRootNode = objXmlDoc.SelectSingleNode(MainNode);
  118. XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
  119. objRootNode.AppendChild(objChildNode);
  120. XmlElement objElement = objXmlDoc.CreateElement(Element);
  121. objElement.InnerText = Content;
  122. objChildNode.AppendChild(objElement);
  123. }
  124. /// <summary>
  125. /// 插入一个节点,带一属性。
  126. /// 示例: xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii");
  127. /// </summary>
  128. /// <param name="MainNode">主节点</param>
  129. /// <param name="Element">元素</param>
  130. /// <param name="Attrib">属性</param>
  131. /// <param name="AttribContent">属性内容</param>
  132. /// <param name="Content">元素内容</param>
  133. public void InsertElement(string MainNode, string Element, string Attrib, string AttribContent, string Content)
  134. {
  135. //插入一个节点,带一属性。
  136. XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
  137. XmlElement objElement = objXmlDoc.CreateElement(Element);
  138. objElement.SetAttribute(Attrib, AttribContent);
  139. objElement.InnerText = Content;
  140. objNode.AppendChild(objElement);
  141. }
  142. /// <summary>
  143. /// 插入一个节点,不带属性。
  144. /// 示例:xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa");
  145. /// </summary>
  146. /// <param name="MainNode">主节点</param>
  147. /// <param name="Element">元素</param>
  148. /// <param name="Content">元素内容</param>
  149. public void InsertElement(string MainNode, string Element, string Content)
  150. {
  151. //插入一个节点,不带属性。
  152. XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
  153. XmlElement objElement = objXmlDoc.CreateElement(Element);
  154. objElement.InnerText = Content;
  155. objNode.AppendChild(objElement);
  156. }
  157. /// <summary>
  158. /// 对xml文件做插入,更新,删除后需做Save()操作,以保存修改
  159. /// </summary>
  160. public void Save()
  161. {
  162. //保存文檔。
  163. try
  164. {
  165. objXmlDoc.Save(strXmlFile);
  166. }
  167. catch (System.Exception ex)
  168. {
  169. throw ex;
  170. }
  171. objXmlDoc = null;
  172. }
  173. }
  174. }