鹤壁市长热线,前端git:http://192.168.1.222:3000/clq1010/CallCenter5.0WebUI.git 中的鹤壁12345分支

XmlHelper.cs 8.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. using System.Xml;
  2. namespace CallCenter.Utility
  3. {
  4. /// <summary>
  5. /// C#XML文件操作类 包含常用XML操作信息
  6. /// by CrazyCoder.Cn
  7. /// 转载请注明出处
  8. /// </summary>
  9. public class XmlHelper
  10. {
  11. protected XmlDocument xdoc = new XmlDocument();
  12. public XmlElement root;
  13. #region LoadXml
  14. /// <summary>
  15. /// 加载Xml文档
  16. /// </summary>
  17. /// <param name="xml"></param>
  18. public void LoadXml(string xml)
  19. {
  20. xdoc.Load(xml);
  21. }
  22. /// <summary>
  23. /// 获取XML文件内容
  24. /// </summary>
  25. /// <param name="xml"></param>
  26. public string InnerXml(string xml)
  27. {
  28. xdoc.Load(xml);
  29. return xdoc.InnerXml;
  30. }
  31. #endregion
  32. #region 创建一个节点,并在该节点下加入子节点
  33. /// <summary>
  34. /// 创建一个节点,并在该节点下加入子节点
  35. /// </summary>
  36. /// <param name="RootNode"></param>
  37. /// <param name="ElementName"></param>
  38. /// <param name="ChildName"></param>
  39. /// <param name="ChildValue"></param>
  40. /// <returns></returns>
  41. public void CreateElement(string RootNode, string ElementName, string[] ChildName, string[] ChildValue)
  42. {
  43. XmlNode Root = xdoc.SelectSingleNode(RootNode);
  44. XmlElement Node = xdoc.CreateElement(ElementName);
  45. if (ChildName.Length == ChildValue.Length)
  46. {
  47. for (int i = 0; i < ChildName.Length; i++)
  48. {
  49. XmlElement ChildNode = xdoc.CreateElement(ChildName[i]);
  50. ChildNode.InnerText = ChildValue[i];
  51. Node.AppendChild(ChildNode);
  52. }
  53. }
  54. if (Root != null) Root.AppendChild(Node);
  55. }
  56. #endregion
  57. #region 删除某一节点
  58. /// <summary>
  59. /// 创建一个节点,并在该节点下加入子节点
  60. /// </summary>
  61. /// <param name="RootNode"></param>
  62. /// <param name="ChildName"></param>
  63. /// <param name="ChildValue"></param>
  64. /// <returns></returns>
  65. public void DeleteElement(string RootNode, string ChildName, string ChildValue)
  66. {
  67. XmlNode Root = xdoc.SelectSingleNode(RootNode);
  68. if (Root != null)
  69. {
  70. XmlNodeList Node = Root.ChildNodes;
  71. foreach (XmlNode xn in Node)
  72. {
  73. var selectSingleNode = xn.SelectSingleNode(ChildName);
  74. if (selectSingleNode != null && selectSingleNode.InnerText == ChildValue)
  75. {
  76. Root.RemoveChild(xn);
  77. }
  78. }
  79. }
  80. }
  81. #endregion
  82. #region 编辑某一节点
  83. /// <summary>
  84. /// 创建一个节点,并在该节点下加入子节点
  85. /// </summary>
  86. /// <returns></returns>
  87. public void UpdateElement(string RootNode, string ElementName, string ElementValue, string[] ChildName, string[] ChildValue)
  88. {
  89. XmlNode Root = xdoc.SelectSingleNode(RootNode);
  90. if (Root != null)
  91. {
  92. XmlNodeList Node = Root.ChildNodes;
  93. foreach (XmlNode xn in Node)
  94. {
  95. var selectSingleNode = xn.SelectSingleNode(ElementName);
  96. if (selectSingleNode != null && selectSingleNode.InnerText == ElementValue)
  97. {
  98. if (ChildName.Length == ChildValue.Length)
  99. {
  100. for (int i = 0; i < ChildName.Length; i++)
  101. {
  102. var singleNode = xn.SelectSingleNode(ChildName[i]);
  103. if (singleNode != null)
  104. singleNode.InnerText = ChildValue[i];
  105. }
  106. }
  107. break;
  108. }
  109. }
  110. }
  111. }
  112. public void UpdateElement(string RootNode, string[] ChildName, string[] ChildValue)
  113. {
  114. XmlNode Root = xdoc.SelectSingleNode(RootNode);
  115. if (ChildName.Length == ChildValue.Length)
  116. {
  117. for (int i = 0; i < ChildName.Length; i++)
  118. {
  119. if (Root != null)
  120. {
  121. var selectSingleNode = Root.SelectSingleNode(ChildName[i]);
  122. if (selectSingleNode != null)
  123. selectSingleNode.InnerText = ChildValue[i];
  124. }
  125. }
  126. }
  127. }
  128. public void UpdateElement(string RootNode, string NodeName, string[] ChildName, string[] ChildValue)
  129. {
  130. XmlNode Root = xdoc.SelectSingleNode(RootNode);
  131. if (Root != null)
  132. {
  133. XmlNode Node = Root.SelectSingleNode(NodeName);
  134. if (ChildName.Length == ChildValue.Length)
  135. {
  136. for (int i = 0; i < ChildName.Length; i++)
  137. {
  138. if (Node != null)
  139. {
  140. var selectSingleNode = Node.SelectSingleNode(ChildName[i]);
  141. if (selectSingleNode != null)
  142. selectSingleNode.InnerText = ChildValue[i];
  143. }
  144. }
  145. }
  146. }
  147. }
  148. #endregion
  149. #region 取得名称为name的结点的值
  150. /// <summary>
  151. /// 取得名称为name的结点的值
  152. /// </summary>
  153. /// <param name="name"></param>
  154. /// <returns></returns>
  155. public string GetValue(string name)
  156. {
  157. if (xdoc.DocumentElement != null)
  158. {
  159. XmlNode xn = FindXnByName(xdoc.DocumentElement.ChildNodes, name);
  160. if (xn == null) return null;
  161. return xn.InnerText;
  162. }
  163. return null;
  164. }
  165. #endregion
  166. #region 在某节点下取名称为name的结点的值
  167. /// <summary>
  168. /// 在某节点下取名称为name的结点的值
  169. /// </summary>
  170. /// <returns></returns>
  171. public string GetValue(string NodeName, string name)
  172. {
  173. string BackString = "";
  174. if (xdoc.DocumentElement != null)
  175. {
  176. XmlNode xn = FindXnByName(xdoc.DocumentElement.ChildNodes, NodeName);
  177. if (xn == null)
  178. {
  179. return "";
  180. }
  181. XmlNode nn = FindXnByName(xn.ChildNodes, name);
  182. if (nn == null)
  183. {
  184. return "";
  185. }
  186. BackString = nn.InnerText;
  187. }
  188. return BackString;
  189. }
  190. #endregion
  191. #region 通过节点名称找到指定的节点
  192. /// <summary>
  193. /// 通过节点名称找到指定的节点
  194. /// </summary>
  195. /// <param name="xnl"></param>
  196. /// <param name="strName"></param>
  197. /// <returns></returns>
  198. protected XmlNode FindXnByName(XmlNodeList xnl, string strName)
  199. {
  200. for (int i = 0; i < xnl.Count; i++)
  201. {
  202. var item = xnl.Item(i);
  203. if (item != null && item.LocalName == strName)
  204. {
  205. return xnl.Item(i);
  206. }
  207. }
  208. return null;
  209. }
  210. #endregion
  211. #region 为一个节点指定值
  212. /// <summary>
  213. /// 为一个节点指定值
  214. /// </summary>
  215. /// <param name="strName"></param>
  216. /// <param name="strValue"></param>
  217. public void SetValue(string strName, string strValue)
  218. {
  219. if (xdoc.DocumentElement != null)
  220. {
  221. XmlNodeList xnl = xdoc.DocumentElement.ChildNodes;
  222. for (int i = 0; i < xnl.Count; i++)
  223. {
  224. var xmlNode = xnl.Item(i);
  225. if (xmlNode != null && xmlNode.LocalName == strName)
  226. {
  227. var item = xnl.Item(i);
  228. if (item != null) item.InnerText = strValue;
  229. return;
  230. }
  231. }
  232. }
  233. return;
  234. }
  235. #endregion
  236. #region 保存XML文档
  237. /// <summary>
  238. /// 保存XML文档
  239. /// </summary>
  240. public void Save(string name)
  241. {
  242. xdoc.Save(name);
  243. }
  244. #endregion
  245. }
  246. }