XML文件读取工具类
生活随笔
收集整理的這篇文章主要介紹了
XML文件读取工具类
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/// <summary>
/// Author: jiangxiaoqiang
/// </summary>
public class XmlReader
{//========================================================= //
#region 獲取XmlDocument對(duì)象/// <summary>/// 根據(jù)XML文件內(nèi)容獲取XmlDocument對(duì)象/// </summary>/// <param name="xmlFileContent"></param>/// <returns></returns>public static XmlDocument GetXmlDocByXmlContent(string xmlFileContent){if (string.IsNullOrEmpty(xmlFileContent)){return null;}var xDoc = new XmlDocument();try{xDoc.LoadXml(xmlFileContent);}catch{xDoc = null;}return xDoc;}/// <summary>/// 根據(jù)XML文件路徑獲取XmlDocument對(duì)象/// </summary>/// <param name="xmlFilePath"></param>/// <returns></returns>public static XmlDocument GetXmlDocByFilePath(string xmlFilePath){if (string.IsNullOrEmpty(xmlFilePath) || !File.Exists(xmlFilePath)){return null;}var xDoc = new XmlDocument();try{xDoc.Load(xmlFilePath);}catch{throw new Exception(string.Format("請(qǐng)確認(rèn)該XML文件格式正確,路徑為:{0}", xmlFilePath));}return xDoc;}#endregion//========================================================= ////========================================================= //
#region 獲取XML節(jié)點(diǎn)(或節(jié)點(diǎn)列表)/// <summary>/// 獲取父節(jié)點(diǎn)下指定節(jié)點(diǎn)名稱的第一個(gè)子節(jié)點(diǎn)/// </summary>/// <param name="parentXmlNode"></param>/// <param name="childNodeName"></param>/// <returns></returns>public static XmlNode GetFirstChildNodeByName(XmlNode parentXmlNode, string childNodeName){var childXmlNodes = GetChildNodesByName(parentXmlNode, childNodeName);if (childXmlNodes != null && childXmlNodes.Count > 0){return childXmlNodes[0];}return null;}/// <summary>/// 獲取父節(jié)點(diǎn)下指定節(jié)點(diǎn)名稱的子節(jié)點(diǎn)列表/// </summary>/// <param name="parentXmlNode">父節(jié)點(diǎn)</param>/// <param name="nodeName">節(jié)點(diǎn)名稱</param>/// <returns></returns>public static XmlNodeList GetChildNodesByName(XmlNode parentXmlNode, string nodeName){if (parentXmlNode == null || string.IsNullOrEmpty(nodeName)){return null;}return GetChildNodesByXPathExpr(parentXmlNode, string.Format(".//{0}", nodeName));}/// <summary>/// 獲取父節(jié)點(diǎn)下滿足xpathExpr表達(dá)式的XML子節(jié)點(diǎn)列表/// </summary>/// <param name="parentXmlNode">父節(jié)點(diǎn)</param>/// <param name="xpathExpr"></param>/// <returns></returns> public static XmlNodeList GetChildNodesByXPathExpr(XmlNode parentXmlNode, string xpathExpr){if (parentXmlNode == null || string.IsNullOrEmpty(xpathExpr)){return null;}return parentXmlNode.SelectNodes(xpathExpr);}/// <summary>/// 獲取父節(jié)點(diǎn)下的第一個(gè)子節(jié)點(diǎn)/// </summary>/// <param name="parentXmlNode"></param>/// <returns></returns>public static XmlNode GetFirstChildNode(XmlNode parentXmlNode){var childXmlNodes = GetChildNodes(parentXmlNode);if (childXmlNodes != null && childXmlNodes.Count > 0){return childXmlNodes[0];}return null;}/// <summary>/// 獲取父節(jié)點(diǎn)的子節(jié)點(diǎn)列表/// </summary>/// <param name="parentXmlNode">父節(jié)點(diǎn)</param>/// <returns></returns>public static XmlNodeList GetChildNodes(XmlNode parentXmlNode){return parentXmlNode == null ? null : parentXmlNode.ChildNodes;}#endregion//========================================================= ////========================================================= //
#region 讀取節(jié)點(diǎn)屬性值/// <summary>/// 讀取某個(gè)XML節(jié)點(diǎn)的屬性值(根據(jù)屬性名)/// </summary>/// <param name="xmlNode"></param>/// <param name="attrName"></param>/// <returns></returns>public static string ReadAttrValue(XmlNode xmlNode, string attrName){var xmlElement = xmlNode as XmlElement;return xmlElement == null ? null : xmlElement.GetAttribute(attrName);}/// <summary>/// 讀取父節(jié)點(diǎn)下指定節(jié)點(diǎn)名和屬性名的第一個(gè)子節(jié)點(diǎn)的屬性值/// </summary>/// <param name="parentXmlNode">XML父節(jié)點(diǎn)</param>/// <param name="childNodeName">節(jié)點(diǎn)名稱</param>/// <param name="attrName">屬性名</param>/// <returns></returns>public static string ReadFirstAttrValue(XmlNode parentXmlNode, string childNodeName, string attrName){var attrVals = ReadAttrValues(parentXmlNode, childNodeName, attrName);return (attrVals == null || attrVals.Length == 0) ? null : attrVals[0];}/// <summary>/// 讀取父節(jié)點(diǎn)下指定節(jié)點(diǎn)名和屬性名的所有子節(jié)點(diǎn)的該屬性值的數(shù)組/// </summary>/// <param name="parentXmlNode">XML文檔</param>/// <param name="childNodeName">節(jié)點(diǎn)名稱</param>/// <param name="attrName">屬性名</param>/// <returns></returns>public static string[] ReadAttrValues(XmlNode parentXmlNode, string childNodeName, string attrName){if (parentXmlNode == null || string.IsNullOrEmpty(childNodeName) || string.IsNullOrEmpty(attrName)){return null;}var xpathExpr = string.Format("//{0}[@{1}]", childNodeName, attrName);var nodes = GetChildNodesByXPathExpr(parentXmlNode, xpathExpr);if (nodes != null && nodes.Count > 0){var nodeCount = nodes.Count;var attrVals = new string[nodeCount];for (var i = 0; i < nodeCount; i++){attrVals[i] = ((XmlElement)nodes[i]).GetAttribute(attrName);}return attrVals;}return null;}#endregion//========================================================= ////========================================================= //
#region 讀取父節(jié)點(diǎn)下的子節(jié)點(diǎn)的文本內(nèi)容/// <summary>/// 讀取父節(jié)點(diǎn)下指定節(jié)點(diǎn)名的第一個(gè)子節(jié)點(diǎn)的文本/// </summary>/// <param name="parentXmlNode"></param>/// <param name="childNodeName"></param>/// <returns></returns>public static string ReadFirstChildNodeTextByName(XmlNode parentXmlNode, string childNodeName){var childNodeTexts = ReadChildNodeTextsByName(parentXmlNode, childNodeName);if (childNodeTexts != null && childNodeTexts.Length > 0){return childNodeTexts[0];}return null;}/// <summary>/// 讀取父節(jié)點(diǎn)下指定節(jié)點(diǎn)名的所有子節(jié)點(diǎn)的文本數(shù)組/// </summary>/// <param name="parentXmlNode"></param>/// <param name="childNodeName"></param>/// <returns></returns>public static string[] ReadChildNodeTextsByName(XmlNode parentXmlNode, string childNodeName){if (parentXmlNode == null || string.IsNullOrEmpty(childNodeName)){return null;}var xpathExpr = string.Format(".//{0}", childNodeName);var childNodes = GetChildNodesByXPathExpr(parentXmlNode, xpathExpr);if (childNodes != null && childNodes.Count > 0){var nodeCount = childNodes.Count;var nodeTexts = new string[nodeCount];for (var i = 0; i < nodeCount; i++){nodeTexts[i] = childNodes[i].InnerText;}return nodeTexts;}return null;}/// <summary>/// 讀取父節(jié)點(diǎn)下的第一個(gè)子節(jié)點(diǎn)的文本/// </summary>/// <param name="parentXmlNode"></param>/// <returns></returns>public static string ReadFirstChildNodeText(XmlNode parentXmlNode){var childNodeTexts = ReadChildNodeTexts(parentXmlNode);if (childNodeTexts != null && childNodeTexts.Length > 0){return childNodeTexts[0];}return null;}/// <summary>/// 讀取父節(jié)點(diǎn)下的所有子節(jié)點(diǎn)的文本數(shù)組/// </summary>/// <param name="parentXmlNode"></param>/// <returns></returns>public static string[] ReadChildNodeTexts(XmlNode parentXmlNode){if (parentXmlNode == null){return null;}var childNodes = GetChildNodes(parentXmlNode);if (childNodes != null && childNodes.Count > 0){var nodeCount = childNodes.Count;var nodeTexts = new string[nodeCount];for (var i = 0; i < nodeCount; i++){nodeTexts[i] = childNodes[i].InnerText;}return nodeTexts;}return null;}/// <summary>/// 讀取XML節(jié)點(diǎn)文本/// </summary>/// <param name="xmlNode"></param>/// <returns></returns>public static string ReadNodeText(XmlNode xmlNode){if (xmlNode == null){return null;}return xmlNode.InnerText;}#endregion//========================================================= //
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/xiashenbin/p/3167324.html
總結(jié)
以上是生活随笔為你收集整理的XML文件读取工具类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [导入]源代码版本控制(二)
- 下一篇: jvisualvm插件安装