前端之家收集整理的这篇文章主要介绍了
Linq to XML Helper,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
- 闲来无事写着玩玩。 之前在网上搜关于Linq to XML 的帮助类, 但是每每搜到的都是
- dome。所以趁着周末有空自己整理了一些自己常用的方法留在这里备忘。 由于工作年
- 限的短的问题经验不足写的不好的地方希望各位大神随时指教
- 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("子节点",节点属性)),无限添加子节点 );</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("节点名称",节点属性)),无限添加子节点 );</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
- }