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

使用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. 2017.12.23 第二章 统一建模语言UML概述

    第二章 统一建模语言UML概述 (1)为什么要建模 模型是某个事物的抽象,其目的是在构建这个事物之前先来理解它,因为模型忽略了那些非本质的细节,这样有利于更好的理解和表示事物: 在软件系统开发之前首先 ...

  2. python查看安装包

    D:\Python27\Scripts>pip listbackports.ssl-match-hostname (3.4.0.2)basicauth (0.2)certifi (14.5.14 ...

  3. 《转载》ASP动态iframe

    原文:[ASP.NET]关于iframe的两个技巧 最近在给朋友写个网站,虽然不大,但是也碰到了一些问题.这篇就为解决ASP.NET中关于IFRAME的两个很现实的问题提供解决方法.PS:呵呵,又做了 ...

  4. git Bash 学习

    ,ranh新建一个本地仓库并与github连接的方法 注:该终端也具有按tab键补全功能,应该合理应用 1. 新建一个文件夹,并将git bash的位置转到相应文件夹下(cd 命令转移) 2.git ...

  5. Nginx http重定向到https时,post请求变为get的问题

    Http协议是有状态码的,比较熟悉的状态码是200,代表链接OK,还有404和403,一个是not found,另一个是forbidden.Not found不用多说,可能是地址栏输入有误,或者是网页 ...

  6. Django2.1集成xadmin管理后台所遇到的错误集锦,解决填坑

    django默认是有一个admin的后台管理模块,但是丑,功能也不齐全,但是大神给我们已经集成好了xadmin后台,我们拿来用即可,但是呢,django已经升级到2.1版本了,xadmin貌似跟不上节 ...

  7. hihocoder 1097 最小生成树一·Prim算法

    #1097 : 最小生成树一·Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可 ...

  8. 利用本地SQL Server维护计划来维护SQL Database

    On-Premise的SQL Server提供了维护计划来定期.定时的维护SQL Server.一般的做法是:定义SQL Server Agent Jobs,而后维护计划帮助我们定期.定时执行SQL ...

  9. Linux下 导入导出数据库

    1.怎么找到mysql下的bin? 1.1首先我在网上百度了一些Linux下如何导入导出数据.基本都是用mysqldump命令,但是如果没有到指定目录 下,执行这个命令是没有用的.一开始我还以为要在m ...

  10. OpenCV学习笔记(二) cv::Mat

    部分内容转自:OpenCV Tuturial,ggicci 在OpenCV Tuturial中可查看Mat的初始化与打印方法. Mat本质上是由两个数据部分组成的类: 矩阵头(包含矩阵尺寸,存储方法, ...