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

使用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. AngularJs学习笔记-表单处理

    表单处理 (1)Angular表单API 1.模板式表单,需引入FormsModule 2.响应式表单,需引入ReactiveFormsModule   (2)模板式表单 在Angular中使用for ...

  2. web跨域及cookie相关知识总结

    原文:web跨域及cookie相关知识总结   之前对于跨域相关的知识一致都很零碎,正好现在的代码中用到了跨域相关的,现在来对这些知识做一个汇总整理,方便自己查看,说不定也可能对你有所帮助. 本篇主要 ...

  3. PHP开发框架流行度排名:Laravel居首

    摘要:在PHP开发中,选择合适的框架有助于加快软件开发,节约宝贵的项目时间,让开发者专注于功能的实现上.Sitepoint网站做了一个小的调查,结果显示最流行的PHP框架前三甲为:Laravel.Ph ...

  4. Spring学习记录(三)

    一.AOP的整理总结 aop面向切面编程 横向重复代码,纵向抽取 动态代理 1.通过动态代理可以体现aop思想 2.为什么要哦用动态代理:对目标对象中的方法进行增强 spring aop开发 spri ...

  5. 解决Mycat对自增表不支持(第一种已测试通过)

    表 INSERT INTO news_class (`class_id`,`class_name`) VALUES (next VALUE FOR MYCATSEQ_GLOBAL,'1'); sequ ...

  6. ElasticSearch High Level REST API【1】文档基本操作

    获取ES客户端 ES的提供了四种Java客户端,分别为节点客户端(node client).传输客户端(Transport Client).低级REST客户端.高级REST客户端. 节点客户端作为集群 ...

  7. 12.2 VUE学习之-if判断,实践加减input里的值

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  8. 数据分析处理库Pandas——索引

    显示DataFrame结构中的指定列 使用iloc索引 指定一行的信息 指定多行信息 备注:第[1,5)行信息. 指定行和列 备注:第[0,5)行中第[1,3)列信息. 使用loc索引 指定行信息 备 ...

  9. Python学习笔记(七)加密加盐

    MD5加密和加盐 Python的MD5加密 Python的hashlib模块的MD5加密,是比较简单一种加密,md5函数必须传入编译后的结果,否则会报错: Traceback (most recent ...

  10. Kilani and the Game CodeForces - 1105D (bfs)

    Kilani is playing a game with his friends. This game can be represented as a grid of size n×mn×m, wh ...