博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML读写文件辅助类
阅读量:5843 次
发布时间:2019-06-18

本文共 6278 字,大约阅读时间需要 20 分钟。

///         /// 历史下载记录xml文件操作        ///         public class XMLHelper        {            private string xmlFilePath = "";            ///             /// 历史下载记录xml文件操作            ///             ///             public XMLHelper(string xmlFilePath)            {                this.xmlFilePath = xmlFilePath;                //检测xml文件                if (System.IO.File.Exists(xmlFilePath))                {                    try                    {                        System.Xml.XmlDocument doc = new System.Xml.XmlDocument();                        doc.LoadXml(xmlFilePath);                    }                    catch (Exception)                    {                        System.IO.File.Delete(xmlFilePath);                        CreateXml();                    }                }            }            private void CreateXml()            {                System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();                xmlDoc.AppendChild(xmlDoc.CreateNode(System.Xml.XmlNodeType.XmlDeclaration, "", ""));                System.Xml.XmlElement xmlE = xmlDoc.CreateElement("DownloadHistory");                xmlDoc.AppendChild(xmlE);                xmlDoc.Save(xmlFilePath);            }            ///             /// 写入一个下载文件记录            ///             /// 文件名            /// MD5值            /// 服务器ID            /// 当前下载文件分块编号            /// 当前下载文件分块总数            public void WriteXml(string fileName, string md5, string serverId, string currentDownloadBlock, string totalBlock)            {                System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();                xmlDoc.Load(xmlFilePath);                System.Xml.XmlNode rootNode = xmlDoc.CreateNode("element", "File", "");                System.Xml.XmlElement xmlE;                System.Xml.XmlText xmlT;                xmlE = xmlDoc.CreateElement("FileName");                xmlT = xmlDoc.CreateTextNode(fileName);                rootNode.AppendChild(xmlE);                rootNode.LastChild.AppendChild(xmlT);                xmlE = xmlDoc.CreateElement("MD5");                xmlT = xmlDoc.CreateTextNode(md5);                rootNode.AppendChild(xmlE);                rootNode.LastChild.AppendChild(xmlT);                xmlE = xmlDoc.CreateElement("ServerId");                xmlT = xmlDoc.CreateTextNode(serverId);                rootNode.AppendChild(xmlE);                rootNode.LastChild.AppendChild(xmlT);                xmlE = xmlDoc.CreateElement("CurrentDownloadBlock");                xmlT = xmlDoc.CreateTextNode(currentDownloadBlock);                rootNode.AppendChild(xmlE);                rootNode.LastChild.AppendChild(xmlT);                xmlE = xmlDoc.CreateElement("TotalBlock");                xmlT = xmlDoc.CreateTextNode(totalBlock);                rootNode.AppendChild(xmlE);                rootNode.LastChild.AppendChild(xmlT);                //将节点添加到文档中                System.Xml.XmlElement root = xmlDoc.DocumentElement;                root.AppendChild(rootNode);                xmlDoc.Save(xmlFilePath);            }            ///             /// 删除一个下载文件记录            ///             ///             public void DeleteNode(string fileName)            {                try                {                    System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();                    xmlDoc.Load(this.xmlFilePath);                    foreach (System.Xml.XmlNode node in xmlDoc.SelectNodes("//FileName"))                    {                        if (node.InnerXml == fileName)                        {                            node.ParentNode.ParentNode.RemoveChild(node.ParentNode);                        }                    }                    xmlDoc.Save(this.xmlFilePath);                }                catch { };            }            ///             /// 更新一个下载文件记录            ///             /// 文件名            /// MD5值            /// 服务器ID            /// 当前下载文件分块编号            /// 当前下载文件分块总数            public void UpdateXml(string fileName, string md5, string serverId, string currentDownloadBlock, string totalBlock)            {                try                {                    System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();                    xmlDoc.Load(this.xmlFilePath);                    System.Xml.XmlNodeList nodes = xmlDoc.SelectNodes("//File");                    if (nodes != null)                    {                        System.Xml.XmlNode xNode;                        foreach (System.Xml.XmlNode xn in nodes)                        {                            xNode = xn.SelectSingleNode("FileName");                            if (xNode != null)                            {                                if (xNode.InnerText == fileName)                                {                                    xNode = xn.SelectSingleNode("CurrentDownloadBlock");                                    if (xNode != null)                                        xNode.InnerText = currentDownloadBlock;                                    break;                                }                            }                        }                    }                    else                    {                        WriteXml(fileName, md5, serverId, currentDownloadBlock, totalBlock);                    }                    xmlDoc.Save(this.xmlFilePath);                }                catch (System.IO.FileNotFoundException)                {
//文件未找到 CreateXml(); WriteXml(fileName, md5, serverId, currentDownloadBlock, totalBlock); } catch (System.Xml.XmlException) {
//xml文件格式错误 System.IO.File.Delete(this.xmlFilePath); CreateXml(); WriteXml(fileName, md5, serverId, currentDownloadBlock, totalBlock); } catch (Exception ex) { throw ex; } } }

操作的XML文件结构如下:

录像1
4B48E3E2D7777B938A8C5BF39B55BEB9
123456
1000
3000

转载于:https://www.cnblogs.com/wishFreedom/p/3257431.html

你可能感兴趣的文章
Nodejs使用图灵机器人获取笑话
查看>>
【读书笔记】第三章 大型网站核心架构要素
查看>>
jvm参数设置
查看>>
易宝典文章——玩转Office 365中的Exchange Online服务 之十三 怎样管理Exchange Online的邮件用户和联系人...
查看>>
nexus 从Window迁移至Linux
查看>>
Spring 任务调度 简单的,使用Schedule
查看>>
通過OPENSHIFT進行DJANGO開發
查看>>
数据库union ,和union all
查看>>
SQL 2005删除作业计划出错(DELETE语句与 REFERENCE约束"FK_subplan_job_id"冲突。)的解决...
查看>>
获取帮助
查看>>
7.4.4 IPv6的地址空间及其表示方法
查看>>
【Touch&input 】支持多个游戏控制器(18)
查看>>
2014年云计算五大趋势
查看>>
我的友情链接
查看>>
Java新手看招 常用开发工具介绍
查看>>
Windows Server 2008更改用户的环境变量和系统环境变量
查看>>
SQL语句学习
查看>>
初次安装系统注意选项
查看>>
mysql的SQL性能监控
查看>>
使用Dockerfile构建镜像
查看>>