• c# 操作xml文件(读写)


    根据项目需求,我们需要记录用户的操作痕迹,当用户下次登录操作同一个文件时,页面显示为用户上一次执行的用户轨迹,我们考虑把用户的历史记录写进xml文件中。

    存储的xml数据结构:

    XML操作类:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.IO;
      4 using System.Linq;
      5 using System.Text;
      6 using System.Threading.Tasks;
      7 using System.Xml;
      8 
      9 namespace iImgEnh.UI.AuthenticateImage.AuthImageMethods.Model
     10 {
     11     public class VideoContinuityReadWriteRecord
     12     {
     13         #region 属性
     14         /// <summary>
     15         /// 存放xml内容的文件夹下的文件名
     16         /// </summary>
     17         private string DicFileName = "resources/XMLFile.xml";
     18 
     19         #endregion
     20 
     21         #region 写入xml
     22         /// <summary>
     23         /// 
     24         /// </summary>
     25         /// <param name="file"></param>
     26         /// <param name="content"></param>
     27         /// <param name="dateTimeStr"></param>
     28         public void WriteDoc(string file,string content,string dateTimeStr)
     29         {
     30             string SavePath = Path.Combine(Directory.GetCurrentDirectory(), "resources");
     31 
     32             //判断是否存在文件夹
     33             var DirectoryPath = Path.GetDirectoryName(SavePath);  //获取文件夹所在的路径
     34             if (!Directory.Exists(SavePath))
     35             {
     36                 Directory.CreateDirectory(SavePath);  //创建文件夹
     37             }
     38             XmlDocument doc = new XmlDocument();
     39             if (File.Exists(DicFileName))
     40             {
     41                 //如果文件存在 加载XML
     42                 doc.Load(DicFileName);
     43                 //获得文件的根节点
     44                 XmlNodeList xnl = doc.SelectNodes("/Positions/Position/Item");
     45                 if (xnl.Count < 1)
     46                 {
     47                    CreateDoc(file, content,dateTimeStr);
     48                 }
     49                 else
     50                 {
     51                     XmlNode PNode = null;
     52                     var isHave = false;
     53                     foreach (XmlNode item in xnl)
     54                     {
     55                         PNode = item.ParentNode;
     56                         var name = item.Attributes["Name"].Value;
     57                         //var text = item.Attributes["Content"].Value;
     58                         if (name == file)
     59                         {
     60                             isHave = true;
     61                             item.Attributes["Content"].Value = content;
     62                             item.Attributes["Time"].Value = dateTimeStr;
     63                             break;
     64                         }
     65                     }
     66                     if (!isHave)
     67                     {
     68                         var en = doc.DocumentElement;
     69                         XmlElement name1 = doc.CreateElement("Item");
     70                         name1.SetAttribute("Name", file);
     71                         name1.SetAttribute("Content", content);
     72                         name1.SetAttribute("Time", dateTimeStr);
     73                         PNode.AppendChild(name1);
     74 
     75                         if (xnl.Count > 20)
     76                         {
     77                             PNode.RemoveChild(xnl[0]);
     78                         }
     79 
     80                     }
     81                 }
     82                 doc.Save(DicFileName);
     83             }
     84             else
     85             {
     86                 CreateDoc(file, content,dateTimeStr);
     87             }
     88         }
     89 
     90         /// <summary>
     91         /// 读取XML文件
     92         /// </summary>
     93         /// <param name="file"></param>
     94         /// <returns></returns>
     95         public RecordInfo ReadDoc(string file)
     96         {
     97             RecordInfo info = new RecordInfo();
     98             XmlDocument doc = new XmlDocument();
     99             if (File.Exists(DicFileName))
    100             {
    101                 //如果文件存在 加载XML
    102                 doc.Load(DicFileName);
    103                 //获得文件的根节点
    104                 XmlNodeList xnl = doc.SelectNodes("/Positions/Position/Item");
    105                 if (xnl.Count > 0)
    106                 {
    107                     foreach (XmlNode item in xnl)
    108                     {
    109                         if (item.Attributes["Name"].Value == file)
    110                         {
    111                             info.Position = item.Attributes["Content"].Value;
    112                             info.Time = item.Attributes["Time"].Value;
    113                         }
    114                     }
    115                 }
    116             }
    117             return info;
    118         }
    119 
    120         /// <summary>
    121         /// 创建XML文件
    122         /// </summary>
    123         /// <param name="file"></param>
    124         /// <param name="content"></param>
    125         /// <param name="dateTimeStr"></param>
    126         private void CreateDoc(string file, string content,string dateTimeStr)
    127         {
    128             XmlDocument doc = new XmlDocument();
    129             //3、创建第一个行描述信息,并且添加到doc文档中
    130             XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
    131             doc.AppendChild(dec);
    132             //4、创建根节点
    133             XmlElement books = doc.CreateElement("Positions");
    134             //将根节点添加到文档中
    135             doc.AppendChild(books);
    136 
    137             //5、给根节点Books创建子节点
    138             XmlElement book1 = doc.CreateElement("Position");
    139             //将book添加到根节点
    140             books.AppendChild(book1);
    141             //6、给Book1添加子节点
    142             XmlElement name1 = doc.CreateElement("Item");
    143             name1.SetAttribute("Name", file);
    144             name1.SetAttribute("Content", content);
    145             name1.SetAttribute("Time", dateTimeStr);
    146             book1.AppendChild(name1);
    147 
    148             doc.Save(DicFileName);
    149         }
    150 
    151         #endregion
    152     }
    153 
    154     public class RecordInfo
    155     {
    156         /// <summary>
    157         /// 位置
    158         /// </summary>
    159         public string Position { get; set; }
    160 
    161         /// <summary>
    162         /// 时间格式
    163         /// </summary>
    164         public string Time { get; set; }
    165     }
    166 }
  • 相关阅读:
    人生感悟经典名言大全
    Linux<DNS配置>
    CentOS7安装详细步骤
    8 个实用在线工具,破解工作学习中的80%难题!
    java.sql.SQLException: Access denied for user '@' localhost' (using password: NO)
    windows10系统激活的方法
    程序猿小哥哥教你们把自己网站变灰色,哀悼……
    常用正则表达式
    2020年Web前端最新框架技术
    Navicat Premium 15 永久激活版安装教程
  • 原文地址:https://www.cnblogs.com/likui-bookHouse/p/11132756.html
Copyright © 2020-2023  润新知