Linq to XML Helper

来源:互联网 发布:java程序员到架构师 编辑:程序博客网 时间:2024/06/06 08:39
public class LinqToXMLHelper    {        /// <summary>        /// 用LinqToXml的方式操作XML        /// 特别要说明的是 LinqToXml中每个xml节点都是一个元素(Element)        /// 所有操作最后必须调用 SaveXmlFile方法才能更新到文件        /// 否则只是修改内存中的数据        /// </summary>        public LinqToXMLHelper()        {        }        #region  生成XML文件        /// <summary>        /// 生成XML文件        /// </summary>        /// <param name="XmlFile">XML保存的路径</param>        public static void SaveXmlFile(string XmlFile, XElement element)        {            element.Save(GetXmlFullPath(XmlFile));        }        #endregion        #region 加载xml文件到XElement        /// <summary>        /// 加载xml文件到XElement        /// </summary>        /// <param name="path"></param>        /// <returns></returns>        public static XElement Load(string path)        {            return XElement.Load(GetXmlFullPath(path));        }        #endregion        #region 添加元素        /// <summary>        /// 批量添加元素        /// </summary>        /// <param name="parentElement"></param>        /// <param name="childElements">new XElement("节点名称", new XAttribute("节点属性", 节点属性),  new XElement("子节点", new XAttribute("节点属性", 节点属性)),无限添加子节点   );</param>        public static void AddElements(XElement parentElement, IEnumerable<XElement> childElements)        {            foreach (XElement xe in childElements)            {                parentElement.Add(xe);            }        }        /// <summary>        /// 添加元素        /// </summary>        /// <param name="parentElement"></param>        /// <param name="childElement">new XElement("节点名称", new XAttribute("节点属性", 节点属性),  new XElement("子节点", new XAttribute("节点属性", 节点属性)),无限添加子节点   );</param>        public static void AddElement(XElement parentElement, XElement childElement)        {            parentElement.Add(childElement);                   }        #endregion        #region 根据元素名称删除元素        /// <summary>        /// 根据元素名称删除元素        /// </summary>        /// <param name="element"></param>        /// <param name="RemoveElementID"></param>        public static void RemoveElement(XElement element, string RemoveElementID)        {            XElement xe = element.Element(RemoveElementID);            xe.Remove();        }        #endregion        #region 修改某元素的值        /// <summary>        /// 修改某元素的值        /// </summary>        /// <param name="element"></param>        /// <param name="elementName"></param>        /// <param name="setValue"></param>        public static void ModifyElement(XElement element, string elementName, string setValue)        {            element.Element(elementName).SetValue(setValue);        }        #endregion           #region 根据元素名称查询元素        /// <summary>        /// 根据元素名称查询元素        /// </summary>        /// <param name="element"></param>        /// <param name="RemoveElementID"></param>        public static XElement QueryElement(XElement element, string QueryElementID)        {            return element.Element(QueryElementID);        }        /// <summary>        /// 根据元素名称批量查询元素        /// </summary>        /// <param name="element"></param>        /// <param name="RemoveElementID"></param>        public static IEnumerable<XElement> QueryElements(XElement element, string QueryElementID)        {            return element.Elements(QueryElementID);        }        /// <summary>        /// 根据元素名和   属性名称批量查询元素        /// </summary>        /// <param name="element">源</param>        /// <param name="QueryElementID"></param>        /// <param name="AttributeName">属性名</param>        /// <param name="AttributeValue">属性值</param>        /// <returns></returns>        public static IEnumerable<XElement> QueryElements(XElement element, string QueryElementID, string AttributeName, string AttributeValue)        {            return element.Elements(QueryElementID).Where(i => i.Attribute(AttributeName).Value == AttributeValue).ToList<XElement>();        }        #endregion        #region GetXmlFullPath        ///         /// 返回完整路径         ///         /// Xml的路径         ///         public static string GetXmlFullPath(string strPath)        {            //如果路径中含有:符号,则认定为传入的是完整路径             if (strPath.IndexOf(":") > 0)            {                return strPath;            }            else            {                //返回完整路径                 return System.Web.HttpContext.Current.Server.MapPath(strPath);            }        }        #endregion    }

闲来无事写着玩玩。 之前在网上搜关于Linq to XML 的帮助类, 但是每每搜到的都是dome。所以趁着周末有空自己整理了一些自己常用的方法留在这里备忘。 由于工作年限的短的问题经验不足写的不好的地方希望各位大神随时指教

0 0