linq处理xml文件
发布时间:2020-12-16 05:09:38 所属栏目:百科 来源:网络整理
导读:有不明白的地方欢迎入群 347636249 探讨 using System;using System.Linq;using System.Xml.Linq;using System.Collections.Generic;namespace chongqing{/// summary/// 视频下载到本地,相关信息处理/// /summarypublic class LoadCourse : IDisposable{#r
有不明白的地方欢迎入群 347636249 探讨
using System; using System.Linq; using System.Xml.Linq; using System.Collections.Generic; namespace chongqing { /// <summary> /// 视频下载到本地,相关信息处理 /// </summary> public class LoadCourse : IDisposable { #region 实现接口 /// <summary> /// 析构函数 /// </summary> ~LoadCourse() { Dispose(false); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!disposing) return; } #endregion public LoadCourse () { } /// <summary> /// 初始化文件 /// </summary> public static void InitializeXmlFile(string xmlpath) { XDocument doc = new XDocument (///创建XDocument类的实例 new XDeclaration ("1.0","utf-8","yes"),///XML的声明,包括版本,编码,xml文件是否独立 new XElement ("CourseInfo",null) ///添加根节点 ); ///保存XML文件到指定地址 doc.Save(xmlpath); } /// <summary> /// 1、创建 loadcourse.xml 文件,由函数 CreateXmlFile()完成 /// </summary> /// <param name="model">下载的视频信息model.</param> /// <remarks>调用之前先判断此文件是否存在</remarks> public void CreateXmlFile(string xmlpath,LoadCourseModel model) { XDocument doc = new XDocument (///创建XDocument类的实例 new XDeclaration ("1.0",///XML的声明,包括版本,编码,xml文件是否独立 new XElement ("CourseInfo",///添加根节点 new XElement ("Course",///添加一个节点 new XAttribute ("Course_Number",model.Course_Number),///添加属性 Course_Number new XElement ("Course_Name",model.Course_Name),///添加元素 Course_Name new XElement ("Load_LocalName",model.Load_LocalName),///添加元素 Load_LocalName new XElement ("Course_Byte",model.Course_Byte),///添加元素 Course_Byte new XElement ("Load_DateTime",model.Load_DateTime)///添加元素 Load_DateTime ) ) ); ///保存XML文件到指定地址 doc.Save(xmlpath); } /// <summary> /// 2、添加元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> public void AddXmlElement(string xmlpath,LoadCourseModel model) { ///导入XML文件 XElement xe = XElement.Load (xmlpath); ///创建一个新节点 XElement course = new XElement ("Course",new XAttribute ("Course_Number",///添加属性 Course_Number new XElement ("Course_Name",///添加元素 Course_Name new XElement ("Load_LocalName",///添加元素 Load_LocalName new XElement ("Course_Byte",///添加元素 Course_Byte new XElement ("Load_DateTime",model.Load_DateTime)///添加元素 Load_DateTime ); ///添加节点到XML文件中,并保存 xe.Add (course); ///保存到XML文件中 xe.Save (xmlpath); } /// <summary> /// 3、修改XML文件的元素 /// </summary> /// <param name="strElement">指定的修改视频id</param> public void ModifyXmlElement(string xmlpath,string strElement,LoadCourseModel model) { XElement xe = XElement.Load (xmlpath); ///查询修改的元素 IEnumerable<XElement> element = from e in xe.Elements ("Course") where e.Attribute ("Course_Number").Value == strElement select e; ///修改元素 if (element.Count () > 0) { XElement firstelement = element.First (); ///设置新的属性 firstelement.SetAttributeValue ("Course_Number",model.Course_Number); ///替换成新的节点 firstelement.ReplaceNodes ( new XElement ("Course_Name",new XElement ("Load_LocalName",new XElement ("Course_Byte",new XElement ("Load_DateTime",model.Load_DateTime) ); } xe.Save (xmlpath); } /// <summary> /// 4、删除XML文件的元素 /// </summary> /// <param name="strElement">指定删除视频的编号</param> public void DeleteXmlElement(string xmlpath,string strElement) { XElement xe = XElement.Load (xmlpath); ///查询修改的元素 IEnumerable<XElement> element = from e in xe.Elements ("Course") where e.Attribute ("Course_Number").Value == strElement select e; ///删除元素 if (element.Count () > 0) { XElement firstelement = element.First (); ///删除此元素的所有节点和属性 firstelement.RemoveAll (); ///删除此元素的属性 //firstelement.RemoveAttributes(); ///删除此元素的子节点 //firstelement.RemoveNodes(); } xe.Save (xmlpath); } /// <summary> /// 5、将XML文件中的属性更换成元素 /// </summary> /// <param name="strAttribute">指定更换视频的编号属性</param> public void ConvertAttributeToElement(string xmlpath,string strAttribute) { XElement xe = XElement.Load (xmlpath); ///查询更换的元素 IEnumerable<XElement> element = from e in xe.Elements ("Course") where e.Attribute ("Course_Number").Value == strAttribute select e; ///更换为元素 if (element.Count () > 0) { XElement firstelement = element.First (); //获取第一个属性 XAttribute attr = firstelement.FirstAttribute; //XAttribute attr = firstelement.Attribute("Course_Number"); ///将属性转换成元素 firstelement.AddFirst ( new XElement (attr.Name,attr.Value)//添加 Course_Number 元素 ); ///删除属性 firstelement.RemoveAttributes (); } xe.Save (xmlpath); } private static string LocalCourseXmlPath { get{ var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments); return System.IO.Path.Combine (documents,Utils.KeyCenter.Key_LoadCourseInfo); } } /// <summary> /// 6、是否存在元素 /// </summary> /// <param name="strElement">指定的视频id</param> public static bool ExistElement(string strElement) { if (!System.IO.File.Exists (LocalCourseXmlPath)) { return false; } XElement xe = XElement.Load (LocalCourseXmlPath); ///查询修改的元素 IEnumerable<XElement> element = from e in xe.Elements ("Course") where e.Attribute ("Course_Number").Value == strElement select e; ///修改元素 return element.Count () > 0; } /// <summary> /// 获取所有下载过的视频信息 /// </summary> public List<LoadCourseModel> GetLoadCourseList() { if (!System.IO.File.Exists (LocalCourseXmlPath)) { return null; } XElement xe = XElement.Load (LocalCourseXmlPath); ///查询修改的元素 var q = from e in xe.Elements ("Course") select new LoadCourseModel { Course_Number = e.Attribute ("Course_Number").Value,Course_Name = e.Element ("Course_Name").Value,Load_LocalName = e.Element ("Load_LocalName").Value,Course_Byte = e.Element ("Course_Byte").Value,Load_DateTime = e.Element ("Load_DateTime").Value }; return q.ToList (); } //... } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |