xml操作类,具体用法看注释

前端之家收集整理的这篇文章主要介绍了xml操作类,具体用法看注释前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Xml;
  6. namespace JqueryAjax.Code.Tools
  7. {
  8. /// <summary>
  9. /// XMLHelper XML文档操作管理器
  10. /// </summary>
  11. public class XMLHelper
  12. {
  13. #region XML文档节点查询和读取
  14. /// <summary>
  15. /// 选择匹配XPath表达式的第一个节点XmlNode.
  16. /// </summary>
  17. /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
  18. /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名")</param>
  19. /// <returns>返回XmlNode</returns>
  20. public static XmlNode GetXmlNodeByXpath(string xmlFileName,string xpath)
  21. {
  22. XmlDocument xmlDoc = new XmlDocument();
  23. try
  24. {
  25. xmlDoc.Load(xmlFileName); //加载XML文档
  26. XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);
  27. return xmlNode;
  28. }
  29. catch (Exception ex)
  30. {
  31. return null;
  32. //throw ex; //这里可以定义你自己的异常处理
  33. }
  34. }
  35. /// <summary>
  36. /// 选择匹配XPath表达式的节点列表XmlNodeList.
  37. /// </summary>
  38. /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
  39. /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名")</param>
  40. /// <returns>返回XmlNodeList</returns>
  41. public static XmlNodeList GetXmlNodeListByXpath(string xmlFileName,string xpath)
  42. {
  43. XmlDocument xmlDoc = new XmlDocument();
  44. try
  45. {
  46. xmlDoc.Load(xmlFileName); //加载XML文档
  47. XmlNodeList xmlNodeList = xmlDoc.SelectNodes(xpath);
  48. return xmlNodeList;
  49. }
  50. catch (Exception ex)
  51. {
  52. return null;
  53. //throw ex; //这里可以定义你自己的异常处理
  54. }
  55. }
  56. /// <summary>
  57. /// 选择匹配XPath表达式的第一个节点的匹配xmlAttributeName的属性XmlAttribute.
  58. /// </summary>
  59. /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
  60. /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
  61. /// <param name="xmlAttributeName">要匹配xmlAttributeName的属性名称</param>
  62. /// <returns>返回xmlAttributeName</returns>
  63. public static XmlAttribute GetXmlAttribute(string xmlFileName,string xpath,string xmlAttributeName)
  64. {
  65. string content = string.Empty;
  66. XmlDocument xmlDoc = new XmlDocument();
  67. XmlAttribute xmlAttribute = null;
  68. try
  69. {
  70. xmlDoc.Load(xmlFileName); //加载XML文档
  71. XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);
  72. if (xmlNode != null)
  73. {
  74. if (xmlNode.Attributes.Count > 0)
  75. {
  76. xmlAttribute = xmlNode.Attributes[xmlAttributeName];
  77. }
  78. }
  79. }
  80. catch (Exception ex)
  81. {
  82. throw ex; //这里可以定义你自己的异常处理
  83. }
  84. return xmlAttribute;
  85. }
  86. #endregion
  87. #region XML文档创建和节点或属性添加修改
  88. /// <summary>
  89. /// 创建一个XML文档
  90. /// </summary>
  91. /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
  92. /// <param name="rootNodeName">XML文档根节点名称(须指定一个根节点名称)</param>
  93. /// <param name="version">XML文档版本号(必须为:"1.0")</param>
  94. /// <param name="encoding">XML文档编码方式</param>
  95. /// <param name="standalone">该值必须是"yes"或"no",如果为null,Save方法不在XML声明上写出独立属性</param>
  96. /// <returns>成功返回true,失败返回false</returns>
  97. public static bool CreateXmlDocument(string xmlFileName,string rootNodeName,string version,string encoding,string standalone)
  98. {
  99. bool isSuccess = false;
  100. try
  101. {
  102. XmlDocument xmlDoc = new XmlDocument();
  103. XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration(version,encoding,standalone);
  104. XmlNode root = xmlDoc.CreateElement(rootNodeName);
  105. xmlDoc.AppendChild(xmlDeclaration);
  106. xmlDoc.AppendChild(root);
  107. xmlDoc.Save(xmlFileName);
  108. isSuccess = true;
  109. }
  110. catch (Exception ex)
  111. {
  112. throw ex; //这里可以定义你自己的异常处理
  113. }
  114. return isSuccess;
  115. }
  116. /// <summary>
  117. /// 依据匹配XPath表达式的第一个节点来创建它的子节点(如果此节点已存在则追加一个新的同名节点
  118. /// </summary>
  119. /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
  120. /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
  121. /// <param name="xmlNodeName">要匹配xmlNodeName的节点名称</param>
  122. /// <param name="innerText">节点文本值</param>
  123. /// <param name="xmlAttributeName">要匹配xmlAttributeName的属性名称</param>
  124. /// <param name="value">属性值</param>
  125. /// <returns>成功返回true,失败返回false</returns>
  126. public static bool CreateXmlNodeByXPath(string xmlFileName,string xmlNodeName,string innerText,string xmlAttributeName,string value)
  127. {
  128. bool isSuccess = false;
  129. XmlDocument xmlDoc = new XmlDocument();
  130. try
  131. {
  132. xmlDoc.Load(xmlFileName); //加载XML文档
  133. XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);
  134. if (xmlNode != null)
  135. {
  136. //存不存在此节点都创建
  137. XmlElement subElement = xmlDoc.CreateElement(xmlNodeName);
  138. subElement.InnerXml = innerText;
  139. //如果属性和值参数都不为空则在此新节点上新增属性
  140. if (!string.IsNullOrEmpty(xmlAttributeName) && !string.IsNullOrEmpty(value))
  141. {
  142. XmlAttribute xmlAttribute = xmlDoc.CreateAttribute(xmlAttributeName);
  143. xmlAttribute.Value = value;
  144. subElement.Attributes.Append(xmlAttribute);
  145. }
  146. xmlNode.AppendChild(subElement);
  147. }
  148. xmlDoc.Save(xmlFileName); //保存到XML文档
  149. isSuccess = true;
  150. }
  151. catch (Exception ex)
  152. {
  153. throw ex; //这里可以定义你自己的异常处理
  154. }
  155. return isSuccess;
  156. }
  157. /// <summary>
  158. /// 依据匹配XPath表达式的第一个节点来创建或更新它的子节点(如果节点存在则更新,不存在则创建)
  159. /// </summary>
  160. /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
  161. /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
  162. /// <param name="xmlNodeName">要匹配xmlNodeName的节点名称</param>
  163. /// <param name="innerText">节点文本值</param>
  164. /// <returns>成功返回true,失败返回false</returns>
  165. public static bool CreateOrUpdateXmlNodeByXPath(string xmlFileName,string innerText)
  166. {
  167. bool isSuccess = false;
  168. bool isExistsNode = false;//标识节点是否存在
  169. XmlDocument xmlDoc = new XmlDocument();
  170. try
  171. {
  172. xmlDoc.Load(xmlFileName); //加载XML文档
  173. XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);
  174. if (xmlNode != null)
  175. {
  176. //遍历xpath节点下的所有子节点
  177. foreach (XmlNode node in xmlNode.ChildNodes)
  178. {
  179. if (node.Name.ToLower() == xmlNodeName.ToLower())
  180. {
  181. //存在此节点则更新
  182. node.InnerXml = innerText;
  183. isExistsNode = true;
  184. break;
  185. }
  186. }
  187. if (!isExistsNode)
  188. {
  189. //不存在此节点则创建
  190. XmlElement subElement = xmlDoc.CreateElement(xmlNodeName);
  191. subElement.InnerXml = innerText;
  192. xmlNode.AppendChild(subElement);
  193. }
  194. }
  195. xmlDoc.Save(xmlFileName); //保存到XML文档
  196. isSuccess = true;
  197. }
  198. catch (Exception ex)
  199. {
  200. throw ex; //这里可以定义你自己的异常处理
  201. }
  202. return isSuccess;
  203. }
  1. /// <summary>
  2. /// 依据匹配XPath表达式的第一个节点来创建或更新它的属性(如果属性存在则更新,不存在则创建)
  3. /// </summary>
  4. /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
  5. /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
  6. /// <param name="xmlAttributeName">要匹配xmlAttributeName的属性名称</param>
  7. /// <param name="value">属性值</param>
  8. /// <returns>成功返回true,失败返回false</returns>
  9. public static bool CreateOrUpdateXmlAttributeByXPath(string xmlFileName,string value)
  10. {
  11. bool isSuccess = false;
  12. bool isExistsAttribute = false;//标识属性是否存在
  13. XmlDocument xmlDoc = new XmlDocument();
  14. try
  15. {
  16. xmlDoc.Load(xmlFileName); //加载XML文档
  17. XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);
  18. if (xmlNode != null)
  19. {
  20. //遍历xpath节点中的所有属性
  21. foreach (XmlAttribute attribute in xmlNode.Attributes)
  22. {
  23. if (attribute.Name.ToLower() == xmlAttributeName.ToLower())
  24. {
  25. //节点中存在此属性则更新
  26. attribute.Value = value;
  27. isExistsAttribute = true;
  28. break;
  29. }
  30. }
  31. if (!isExistsAttribute)
  32. {
  33. //节点中不存在此属性则创建
  34. XmlAttribute xmlAttribute = xmlDoc.CreateAttribute(xmlAttributeName);
  35. xmlAttribute.Value = value;
  36. xmlNode.Attributes.Append(xmlAttribute);
  37. }
  38. }
  39. xmlDoc.Save(xmlFileName); //保存到XML文档
  40. isSuccess = true;
  41. }
  42. catch (Exception ex)
  43. {
  44. throw ex; //这里可以定义你自己的异常处理
  45. }
  46. return isSuccess;
  47. }
  48. #endregion
  49. #region XML文档节点或属性删除
  50. /// <summary>
  51. /// 删除匹配XPath表达式的第一个节点(节点中的子元素同时会被删除)
  52. /// </summary>
  53. /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
  54. /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
  55. /// <returns>成功返回true,失败返回false</returns>
  56. public static bool DeleteXmlNodeByXPath(string xmlFileName,string xpath)
  57. {
  58. bool isSuccess = false;
  59. XmlDocument xmlDoc = new XmlDocument();
  60. try
  61. {
  62. xmlDoc.Load(xmlFileName); //加载XML文档
  63. XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);
  64. if (xmlNode != null)
  65. {
  66. //删除节点
  67. xmlNode.ParentNode.RemoveChild(xmlNode);
  68. }
  69. xmlDoc.Save(xmlFileName); //保存到XML文档
  70. isSuccess = true;
  71. }
  72. catch (Exception ex)
  73. {
  74. throw ex; //这里可以定义你自己的异常处理
  75. }
  76. return isSuccess;
  77. }
  78. /// <summary>
  79. /// 删除匹配XPath表达式的第一个节点中的匹配参数xmlAttributeName的属性
  80. /// </summary>
  81. /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
  82. /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
  83. /// <param name="xmlAttributeName">要删除的xmlAttributeName的属性名称</param>
  84. /// <returns>成功返回true,失败返回false</returns>
  85. public static bool DeleteXmlAttributeByXPath(string xmlFileName,string xmlAttributeName)
  86. {
  87. bool isSuccess = false;
  88. bool isExistsAttribute = false;
  89. XmlDocument xmlDoc = new XmlDocument();
  90. try
  91. {
  92. xmlDoc.Load(xmlFileName); //加载XML文档
  93. XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);
  94. XmlAttribute xmlAttribute = null;
  95. if (xmlNode != null)
  96. {
  97. //遍历xpath节点中的所有属性
  98. foreach (XmlAttribute attribute in xmlNode.Attributes)
  99. {
  100. if (attribute.Name.ToLower() == xmlAttributeName.ToLower())
  101. {
  102. //节点中存在此属性
  103. xmlAttribute = attribute;
  104. isExistsAttribute = true;
  105. break;
  106. }
  107. }
  108. if (isExistsAttribute)
  109. {
  110. //删除节点中的属性
  111. xmlNode.Attributes.Remove(xmlAttribute);
  112. }
  113. }
  114. xmlDoc.Save(xmlFileName); //保存到XML文档
  115. isSuccess = true;
  116. }
  117. catch (Exception ex)
  118. {
  119. throw ex; //这里可以定义你自己的异常处理
  120. }
  121. return isSuccess;
  122. }
  123. /// <summary>
  124. /// 删除匹配XPath表达式的第一个节点中的所有属性
  125. /// </summary>
  126. /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
  127. /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
  128. /// <returns>成功返回true,失败返回false</returns>
  129. public static bool DeleteAllXmlAttributeByXPath(string xmlFileName,string xpath)
  130. {
  131. bool isSuccess = false;
  132. XmlDocument xmlDoc = new XmlDocument();
  133. try
  134. {
  135. xmlDoc.Load(xmlFileName); //加载XML文档
  136. XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);
  137. if (xmlNode != null)
  138. {
  139. //遍历xpath节点中的所有属性
  140. xmlNode.Attributes.RemoveAll();
  141. }
  142. xmlDoc.Save(xmlFileName); //保存到XML文档
  143. isSuccess = true;
  144. }
  145. catch (Exception ex)
  146. {
  147. throw ex; //这里可以定义你自己的异常处理
  148. }
  149. return isSuccess;
  150. }
  151. #endregion
  152. }
  153. }

猜你在找的XML相关文章