using System; using System.Collections.Generic; using System.Text; using System.Xml; namespace HySoft.Common { public class XmlHelper { #region 增、删、改操作============================================== /// /// 追加节点 /// /// XML文档绝对路径 /// 范例: @"Skill/First/SkillItem" /// XmlNode节点 /// public static bool AppendChild(string filePath, string xPath, XmlNode xmlNode) { try { XmlDocument doc = new XmlDocument(); doc.Load(filePath); XmlNode xn = doc.SelectSingleNode(xPath); XmlNode n = doc.ImportNode(xmlNode, true); xn.AppendChild(n); doc.Save(filePath); return true; } catch { return false; } } /// /// 从XML文档中读取节点追加到另一个XML文档中 /// /// 需要读取的XML文档绝对路径 /// 范例: @"Skill/First/SkillItem" /// 被追加节点的XML文档绝对路径 /// 范例: @"Skill/First/SkillItem" /// public static bool AppendChild(string filePath, string xPath, string toFilePath, string toXPath) { try { XmlDocument doc = new XmlDocument(); doc.Load(toFilePath); XmlNode xn = doc.SelectSingleNode(toXPath); XmlNodeList xnList = ReadNodes(filePath, xPath); if (xnList != null) { foreach (XmlElement xe in xnList) { XmlNode n = doc.ImportNode(xe, true); xn.AppendChild(n); } doc.Save(toFilePath); } return true; } catch { return false; } } /// /// 修改节点的InnerText的值 /// /// XML文件绝对路径 /// 范例: @"Skill/First/SkillItem" /// 节点的值 /// public static bool UpdateNodeInnerText(string filePath, string xPath, string value) { try { XmlDocument doc = new XmlDocument(); doc.Load(filePath); XmlNode xn = doc.SelectSingleNode(xPath); XmlElement xe = (XmlElement)xn; xe.InnerText = value; doc.Save(filePath); } catch { return false; } return true; } /// /// 读取XML文档 /// /// XML文件绝对路径 /// public static XmlDocument LoadXmlDoc(string filePath) { try { XmlDocument doc = new XmlDocument(); doc.Load(filePath); return doc; } catch { return null; } } #endregion 增、删、改操作 #region 扩展方法=================================================== /// /// 读取XML的所有子节点 /// /// XML文件绝对路径 /// 范例: @"Skill/First/SkillItem" /// public static XmlNodeList ReadNodes(string filePath, string xPath) { try { XmlDocument doc = new XmlDocument(); doc.Load(filePath); XmlNode xn = doc.SelectSingleNode(xPath); XmlNodeList xnList = xn.ChildNodes; //得到该节点的子节点 return xnList; } catch { return null; } } #endregion 扩展方法 } }