国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

基于C#實現XML文件讀取工具類

2019-10-29 21:41:30
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了基于C#實現XML文件讀取工具類,涉及C#針對XML文件各節點獲取的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了基于C#實現XML文件讀取工具類。分享給大家供大家參考。具體如下:

這是我去年寫的一個XML文件讀取工具類,現在做了一些調整

基本能滿足一般的XML文件讀取需求。

更新:

2013年6月26日19:37 Fix了幾個Bug,為所有方法添加單元測試,并運行通過;同時調整了幾個方法的位置。

 

 
  1. /// <summary> 
  2. /// Author: jiangxiaoqiang 
  3. /// </summary> 
  4. public class XmlReader 
  5. //========================================================= // 
  6. #region 獲取XmlDocument對象 
  7. /// <summary> 
  8. /// 根據XML文件內容獲取XmlDocument對象 
  9. /// </summary> 
  10. /// <param name="xmlFileContent"></param> 
  11. /// <returns></returns> 
  12. public static XmlDocument GetXmlDocByXmlContent(string xmlFileContent) 
  13. if (string.IsNullOrEmpty(xmlFileContent)) 
  14. return null
  15. var xDoc = new XmlDocument(); 
  16. try 
  17. xDoc.LoadXml(xmlFileContent); 
  18. catch 
  19. xDoc = null
  20. return xDoc; 
  21. /// <summary> 
  22. /// 根據XML文件路徑獲取XmlDocument對象 
  23. /// </summary> 
  24. /// <param name="xmlFilePath"></param> 
  25. /// <returns></returns> 
  26. public static XmlDocument GetXmlDocByFilePath(string xmlFilePath) 
  27. if (string.IsNullOrEmpty(xmlFilePath) || !File.Exists(xmlFilePath)) 
  28. return null
  29. var xDoc = new XmlDocument(); 
  30. try 
  31. xDoc.Load(xmlFilePath); 
  32. catch 
  33. throw new Exception(string.Format("請確認該XML文件格式正確,路徑為:{0}", xmlFilePath)); 
  34. return xDoc; 
  35. #endregion 
  36. //========================================================= // 
  37. //========================================================= // 
  38. #region 獲取XML節點(或節點列表) 
  39. /// <summary> 
  40. /// 獲取父節點下指定節點名稱的第一個子節點 
  41. /// </summary> 
  42. /// <param name="parentXmlNode"></param> 
  43. /// <param name="childNodeName"></param> 
  44. /// <returns></returns> 
  45. public static XmlNode GetFirstChildNodeByName(XmlNode parentXmlNode, string childNodeName) 
  46. var childXmlNodes = GetChildNodesByName(parentXmlNode, childNodeName); 
  47. if (childXmlNodes != null && childXmlNodes.Count > 0) 
  48. return childXmlNodes[0]; 
  49. return null
  50. /// <summary> 
  51. /// 獲取父節點下指定節點名稱的子節點列表 
  52. /// </summary> 
  53. /// <param name="parentXmlNode">父節點</param> 
  54. /// <param name="nodeName">節點名稱</param> 
  55. /// <returns></returns> 
  56. public static XmlNodeList GetChildNodesByName(XmlNode parentXmlNode, string nodeName) 
  57. if (parentXmlNode == null || string.IsNullOrEmpty(nodeName)) 
  58. return null
  59. return GetChildNodesByXPathExpr(parentXmlNode, string.Format(".//{0}", nodeName)); 
  60. /// <summary> 
  61. /// 獲取父節點下滿足xpathExpr表達式的XML子節點列表 
  62. /// </summary> 
  63. /// <param name="parentXmlNode">父節點</param> 
  64. /// <param name="xpathExpr"></param> 
  65. /// <returns></returns>  
  66. public static XmlNodeList GetChildNodesByXPathExpr(XmlNode parentXmlNode, string xpathExpr) 
  67. if (parentXmlNode == null || string.IsNullOrEmpty(xpathExpr)) 
  68. return null
  69. return parentXmlNode.SelectNodes(xpathExpr); 
  70. /// <summary> 
  71. /// 獲取父節點下的第一個子節點 
  72. /// </summary> 
  73. /// <param name="parentXmlNode"></param> 
  74. /// <returns></returns> 
  75. public static XmlNode GetFirstChildNode(XmlNode parentXmlNode) 
  76. var childXmlNodes = GetChildNodes(parentXmlNode); 
  77. if (childXmlNodes != null && childXmlNodes.Count > 0) 
  78. return childXmlNodes[0]; 
  79. return null
  80. /// <summary> 
  81. /// 獲取父節點的子節點列表 
  82. /// </summary> 
  83. /// <param name="parentXmlNode">父節點</param> 
  84. /// <returns></returns> 
  85. public static XmlNodeList GetChildNodes(XmlNode parentXmlNode) 
  86. return parentXmlNode == null ? null : parentXmlNode.ChildNodes; 
  87. #endregion 
  88. //========================================================= // 
  89. //========================================================= // 
  90. #region 讀取節點屬性值 
  91. /// <summary> 
  92. /// 讀取某個XML節點的屬性值(根據屬性名) 
  93. /// </summary> 
  94. /// <param name="xmlNode"></param> 
  95. /// <param name="attrName"></param> 
  96. /// <returns></returns> 
  97. public static string ReadAttrValue(XmlNode xmlNode, string attrName) 
  98. var xmlElement = xmlNode as XmlElement; 
  99. return xmlElement == null ? null : xmlElement.GetAttribute(attrName); 
  100. /// <summary> 
  101. /// 讀取父節點下指定節點名和屬性名的第一個子節點的屬性值 
  102. /// </summary> 
  103. /// <param name="parentXmlNode">XML父節點</param> 
  104. /// <param name="childNodeName">節點名稱</param> 
  105. /// <param name="attrName">屬性名</param> 
  106. /// <returns></returns> 
  107. public static string ReadFirstAttrValue(XmlNode parentXmlNode, string childNodeName, string attrName) 
  108. var attrVals = ReadAttrValues(parentXmlNode, childNodeName, attrName); 
  109. return (attrVals == null || attrVals.Length == 0) ? null : attrVals[0]; 
  110. /// <summary> 
  111. /// 讀取父節點下指定節點名和屬性名的所有子節點的該屬性值的數組 
  112. /// </summary> 
  113. /// <param name="parentXmlNode">XML文檔</param> 
  114. /// <param name="childNodeName">節點名稱</param> 
  115. /// <param name="attrName">屬性名</param> 
  116. /// <returns></returns> 
  117. public static string[] ReadAttrValues(XmlNode parentXmlNode, string childNodeName, string attrName) 
  118. if (parentXmlNode == null || string.IsNullOrEmpty(childNodeName) || string.IsNullOrEmpty(attrName)) 
  119. return null
  120. var xpathExpr = string.Format("//{0}[@{1}]", childNodeName, attrName); 
  121. var nodes = GetChildNodesByXPathExpr(parentXmlNode, xpathExpr); 
  122. if (nodes != null && nodes.Count > 0) 
  123. var nodeCount = nodes.Count; 
  124. var attrVals = new string[nodeCount]; 
  125. for (var i = 0; i < nodeCount; i++) 
  126. attrVals[i] = ((XmlElement)nodes[i]).GetAttribute(attrName); 
  127. return attrVals; 
  128. return null
  129. #endregion 
  130. //========================================================= // 
  131. //========================================================= // 
  132. #region 讀取父節點下的子節點的文本內容 
  133. /// <summary> 
  134. /// 讀取父節點下指定節點名的第一個子節點的文本 
  135. /// </summary> 
  136. /// <param name="parentXmlNode"></param> 
  137. /// <param name="childNodeName"></param> 
  138. /// <returns></returns> 
  139. public static string ReadFirstChildNodeTextByName(XmlNode parentXmlNode, string childNodeName) 
  140. var childNodeTexts = ReadChildNodeTextsByName(parentXmlNode, childNodeName); 
  141. if (childNodeTexts != null && childNodeTexts.Length > 0) 
  142. return childNodeTexts[0]; 
  143. return null
  144. /// <summary> 
  145. /// 讀取父節點下指定節點名的所有子節點的文本數組 
  146. /// </summary> 
  147. /// <param name="parentXmlNode"></param> 
  148. /// <param name="childNodeName"></param> 
  149. /// <returns></returns> 
  150. public static string[] ReadChildNodeTextsByName(XmlNode parentXmlNode, string childNodeName) 
  151. if (parentXmlNode == null || string.IsNullOrEmpty(childNodeName)) 
  152. return null
  153. var xpathExpr = string.Format(".//{0}", childNodeName); 
  154. var childNodes = GetChildNodesByXPathExpr(parentXmlNode, xpathExpr); 
  155. if (childNodes != null && childNodes.Count > 0) 
  156. var nodeCount = childNodes.Count; 
  157. var nodeTexts = new string[nodeCount]; 
  158. for (var i = 0; i < nodeCount; i++) 
  159. nodeTexts[i] = childNodes[i].InnerText; 
  160. return nodeTexts; 
  161. return null
  162. /// <summary> 
  163. /// 讀取父節點下的第一個子節點的文本 
  164. /// </summary> 
  165. /// <param name="parentXmlNode"></param> 
  166. /// <returns></returns> 
  167. public static string ReadFirstChildNodeText(XmlNode parentXmlNode) 
  168. var childNodeTexts = ReadChildNodeTexts(parentXmlNode); 
  169. if (childNodeTexts != null && childNodeTexts.Length > 0) 
  170. return childNodeTexts[0]; 
  171. return null
  172. /// <summary> 
  173. /// 讀取父節點下的所有子節點的文本數組 
  174. /// </summary> 
  175. /// <param name="parentXmlNode"></param> 
  176. /// <returns></returns> 
  177. public static string[] ReadChildNodeTexts(XmlNode parentXmlNode) 
  178. if (parentXmlNode == null
  179. return null
  180. var childNodes = GetChildNodes(parentXmlNode); 
  181. if (childNodes != null && childNodes.Count > 0) 
  182. var nodeCount = childNodes.Count; 
  183. var nodeTexts = new string[nodeCount]; 
  184. for (var i = 0; i < nodeCount; i++) 
  185. nodeTexts[i] = childNodes[i].InnerText; 
  186. return nodeTexts; 
  187. return null
  188. /// <summary> 
  189. /// 讀取XML節點文本 
  190. /// </summary> 
  191. /// <param name="xmlNode"></param> 
  192. /// <returns></returns> 
  193. public static string ReadNodeText(XmlNode xmlNode) 
  194. if (xmlNode == null
  195. return null
  196. return xmlNode.InnerText; 
  197. #endregion 
  198. //========================================================= // 

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乃东县| 湘乡市| 五寨县| 自治县| 鄂托克前旗| 丘北县| 文登市| 遂平县| 辽阳市| 大田县| 汤原县| 巴南区| 徐汇区| 枝江市| 汨罗市| 涟源市| 黄山市| 台中县| 双桥区| 炎陵县| 灵璧县| 伊川县| 桦川县| 光泽县| 富蕴县| 荆门市| 融水| 修文县| 金湖县| 鱼台县| 禄丰县| 甘肃省| 柞水县| 旌德县| 通山县| 揭阳市| 余干县| 肃宁县| 普兰县| 宁远县| 桂阳县|