很多地方读取文件可能会出现并发现象 处理:

使用FileMode.Open, FileAccess.Read, FileShare.ReadWrite 避开并发

 public static List<ConfigXml> GetXmlByTypeName(XmlConfigType type)
{
string path = string.Empty;
try
{
path = HttpRuntime.BinDirectory + @"/xml/config.xml";
}
catch (Exception e)
{
path = AppDomain.CurrentDomain.BaseDirectory + @"/xml/config.xml";
}
FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlDocument doc = new XmlDocument();
doc.Load(file); XmlElement root = doc.DocumentElement;
XmlNodeList dataNode = doc.SelectSingleNode(String.Format("root/type[@name='{0}']", type.ToString())).ChildNodes;
List<ConfigXml> list = new List<ConfigXml>();
foreach (XmlElement item in dataNode)
{
ConfigXml configXml = new ConfigXml();
configXml.Name = item.GetAttribute("name");
configXml.OnOff = item.InnerXml.Trim();
configXml.DateType = item.GetAttribute("dateType");
configXml.UrlValue =item.GetAttribute("Path");
configXml.IsBeingUsed = bool.Parse(item.GetAttribute("name")); list.Add(configXml);
}
file.Close(); return list; }

xml文件的一些操作

 /// <summary>
/// 查询监视文件信息
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static List<ConfigXml> GetXmlByTypeName()
{
string path = ConfigurationManager.ConnectionStrings["pathXml"].ConnectionString; FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlDocument doc = new XmlDocument();
file.Seek(, SeekOrigin.Begin);
doc.Load(file); //Monitored节点下所有属性
XmlNodeList xnl = doc.GetElementsByTagName("Monitored");
List<ConfigXml> list = new List<ConfigXml>();
for (int i = ; i < xnl.Count; i++)
{
//循环Monitored节点中每一子节点 得到具体信息
for (int j = ; j < xnl[i].ChildNodes.Count; j++)
{
ConfigXml config = new ConfigXml();
XmlNode nodeCity = xnl[i].ChildNodes[j];
config.Name = nodeCity.Attributes["name"].Value;
config.OnOff = nodeCity.ChildNodes[].InnerXml.Trim();
config.DateType = nodeCity.ChildNodes[].InnerXml.Trim();
config.UrlValue = nodeCity.ChildNodes[].InnerXml.Trim();
if (config.Name == "newDisk")
config.update = nodeCity.ChildNodes[].InnerXml.Trim();
list.Add(config);
}
}
file.Close();
file.Dispose();
return list; }
/// <summary>
/// 读取邮件信息
/// </summary>
/// <returns></returns>
public static Mail GetMail()
{
string path = ConfigurationManager.ConnectionStrings["pathXml"].ConnectionString;
FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlDocument doc = new XmlDocument();
doc.Load(file);
//E-mail节点下所有属性
XmlNodeList xnl = doc.GetElementsByTagName("E-mail");
XmlNodeList mailXml = xnl[].ChildNodes[].ChildNodes;
Mail mail = new Mail();
mail.Name = mailXml[].InnerXml.Trim();
mail.Pwd = mailXml[].InnerXml.Trim();
mail.Host = mailXml[].InnerXml.Trim();
mail.mailAddress = mailXml[].InnerXml.Trim();
file.Close();
file.Dispose();
return mail; }
/// <summary>
/// 关闭开关
/// </summary>
/// <param name="Name">枚举</param>
public static void UpdateXml(NameXMLType Name)
{
string xmlPath = ConfigurationManager.ConnectionStrings["pathXml"].ConnectionString;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
xmlDoc.SelectSingleNode("root/Monitored/type[@name='" + Name.ToString() + "']/onoff").InnerText = "no";
xmlDoc.Save(xmlPath);
}
/// <summary>
/// 新房案例 是更新或插入
/// </summary>
/// <returns></returns>
public static string GetUpdatenewDisk()
{
string xmlPath = ConfigurationManager.ConnectionStrings["pathXml"].ConnectionString;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
return xmlDoc.SelectSingleNode("root/Monitored/type[@name='newDisk']/updata").InnerText; }

xml读取 避开并发(xml的一些操作)的更多相关文章

  1. paip.获取proxool的配置 xml读取通过jdk xml 初始化c3c0在代码中总结

    paip.获取proxool的配置  xml读取通过jdk xml 初始化c3c0在代码中  xml读取通过jdk xml 初始化c3c0在代码中.. ... 作者Attilax  艾龙,  EMAI ...

  2. Qt XML读取写入操作

    XML(eXtensible Markup Language,可扩展标记语言)是普通用于数据交换和数据存储的一种多用途文本文件格式: SVG(可标量矢量图形)XML格式,QtSvg模块提供了可用于载入 ...

  3. 【spring】spring源码阅读之xml读取、bean注入(BeanFactory)

    前言 此源码其实是在4月中旬就看了,而且当初也写了一份word文档,但不打算直接把word发上来.还是跟着以前的笔记.跟踪代码边看边写吧. 其实当初看源码的理由很简单,1.才进新公司,比较有空闲.2. ...

  4. C#读取和写入XML文件

    关于xml是属于一个比较重要的东西,在平时开发的过程中,这块内容最主要的是要掌握XML内容的读取和写入操作. 一.什么是XML? XML 指可扩展标记语言(EXtensible Markup Lang ...

  5. javascript 实现 对XML文件 2级/3级联动操作

    js代码 //实现对xml文档的读取:function loadXMLDoc(dname) { try // Internet Explorer { xmlDoc = new ActiveXObjec ...

  6. Java读取CSV和XML文件方法

    游戏开发中,读取策划给的配置表是必不可少的,我在之前公司,策划给的是xml表来读取,现在公司策划给的是CSV表来读取,其实大同小异,也并不是什么难点,我就简单分享下Java如何读取XML文件和CSV文 ...

  7. Qt-QML-C++交互实现文件IO系统-后继-读取XML文件和创建XML文件

    在前面两篇中,大致完成了一个文件IO的读和写操作.前面两篇文章链接 http://blog.csdn.net/z609932088/article/details/71488250 http://bl ...

  8. XML读取的小例子

    public void CalculateLeave(string userAcount, string xml) //传过来的是xml内容 { try { var xmlDoc = new Syst ...

  9. Java四种读取和创建XML文档的例子教程

    四种方法解析XML文档:Dom.SAX.JDOM.dom4j          1.了解XML XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集 ...

随机推荐

  1. 使用U盘引导安装CentOS

    一.制作linux引导盘 1. 格式化U盘:格式成FAT32格式 2. 安装syslinux https://www.kernel.org/pub/linux/utils/boot/syslinux/ ...

  2. Drupal7强制把主题恢复到默认主题

    今天在写Theme,退出登陆的时候无法进入管理后台. 万不得已之下只有使用数据库进行恢复. Rest Drupal Theme to Bartik SQL语句如下: WHERE type = 'the ...

  3. C# 创建和初始化集合对象

    一. 引言 C# 3.0中新的对象初始化器是一种简单的语法特征-借助于这种特征,对象的构建和初始化变得非常简单.假定你有一个类Student,它看起来有如下样子: public class Stude ...

  4. MySQL优化器功能开关optimizer_switch

    MySQL 8.0新增特性 use_invisible_indexes:是否使用不可见索引,MySQL 8.0新增可以创建invisible索引,这一开关控制优化器是否使用invisible索引,on ...

  5. package.json字段分析

    分析1.必须在包的顶层目录下2.二进制文件应该在bin目录下3.javascipt在lib目录下4.文档在doc目录下 package.json字段分析 name:包的名称,必须是唯一的,由小写英文字 ...

  6. 基于Qt Creator实现中国象棋人机对战, c++实现

    GitHub地址: https://github.com/daleyzou/wobuku 这是自己大一学完c++后,在课程实践中写过的一个程序,实现象棋人机对战的算法还是有点难的, 自己当时差不多也是 ...

  7. zabbix mysql 迁移 增加分区

    1.zabbix mysql 目录清单 --basedir=/usr/local/web/mysql --datadir=/data/mysql --log-error=/data/mysql/sys ...

  8. 最常用且非常重要的Linux命令

    1.针对文件或目录类 cd: cat: ls: pwd: ln: mv: cp: vi.vim: find: mkdir: touch: echo: rm: chmod: chown: chattr: ...

  9. 【JAVA】cxf使用springboot与xml配置的差别所导致的问题。

    使用xml时使用以下配置使报文没有加上命名空间时也能正常访问接口.bean定义的前后顺序不影响程序正常注册对象. <!-- 通过Spring创建数据绑定的类 --> <bean id ...

  10. tcl之内容