社区
C#
帖子详情
C# XmlDocument.Save()方法
GisXiaoluo
2012-03-27 11:30:59
在用xmldocument类时,我要先从中读取一个数据,然后再向其添加一个节点,在调用XmlDocument.Save()方法时就会出现该文件“由另一进程使用,因此该进程无法访问该文件。”的错误,
怎么样才能避免呢?是不是要用到多线程?
...全文
1012
8
打赏
收藏
C# XmlDocument.Save()方法
在用xmldocument类时,我要先从中读取一个数据,然后再向其添加一个节点,在调用XmlDocument.Save()方法时就会出现该文件“由另一进程使用,因此该进程无法访问该文件。”的错误, 怎么样才能避免呢?是不是要用到多线程?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
孟子E章
2012-03-27
打赏
举报
回复
读和写,Load一次就可以了。XmlDocument是内存中的对象,直接可以使用
liuxin0121
2012-03-27
打赏
举报
回复
XmlDocument.Load(string)是托管方法,本身是不需要释放的安全方法,但是由于你多线程可能同时对文件本身访问,所以要加上一些处理
在你document处理完了之后,释放掉资源就可以了
[code=c#]
document.RemoveAll();
document = null;
[/code]
GisXiaoluo
2012-03-27
打赏
举报
回复
不是代码的问题 如果我不先读的话,直接去添加节点,document.save()方法就没问题,
GisXiaoluo
2012-03-27
打赏
举报
回复
好的
public int ComputeTimeSpan()
{
XmlDocument document = new XmlDocument();
XmlReaderSettings readingSettings = new XmlReaderSettings();
readingSettings.IgnoreComments = true;
XmlReader xmlReader = XmlReader.Create(fileName, readingSettings);
document.Load(xmlReader);
XmlNodeList nodeList = document.SelectSingleNo("LastCopyTime").ChildNodes;
if (nodeList.Count == 0)
return miniute;
string lastDate = nodeList[0].InnerText;
DateTime oldDate = DateTime.Parse(lastDate);
DateTime nowDate = DateTime.Now;
TimeSpan span = nowDate - oldDate;
miniute = span.Minutes;
System.Runtime.InteropServices.Marshal.ReleaseComObject(document);
return miniute;
}
public void WriteCopyDate()
{
XmlDocument document = new XmlDocument();
document.Load(fileName);
XmlNode node = document.SelectSingleNode("LastCopyTime");
string date = DateTime.Now.ToString("f");
if (node.FirstChild != null)
{
node.RemoveChild(node.FirstChild);
}
XmlElement element = document.CreateElement("LastTime");
element.InnerText = date;
node.AppendChild(element);
document.Save(fileName);
}
liuxin0121
2012-03-27
打赏
举报
回复
把你这段读文档一直到save的代码发上来,我看看
GisXiaoluo
2012-03-27
打赏
举报
回复
但是该怎么释放呢,求指教
liuxin0121
2012-03-27
打赏
举报
回复
读完了数据没释放吧,应该是这个进程还在占用中,释放了就好了
GisXiaoluo
2012-03-27
打赏
举报
回复
找到原因了,
XmlReader xmlReader = XmlReader.Create(fileName, readingSettings);
document.Load(xmlReader);
完成后 应该调用 xmlReader.close()方法,就不会出现 问题了
谢谢大家
c#
设置xml内容不换行及属性xsi:nil=true的空节点添加
1.设置生成xml的内容格式为不换行 默认用下面代码创建并生成xml的代码如下: 代码如下:
XmlDocument
doc = new
XmlDocument
(); //这里为创建节点等代码,省略…. //保存 doc.Save(filename); 结果生成的节点有换行:
这样的话会导致xsd中如果有验证会通不过,要想不换行,doc.Save(filename);可以改为: 代码如下: using (XmlTextWriter xtw = new XmlTextWriter(filename, null)) { //None表示不应用特殊
XmlDocument
.Save()使用错误导致的文件丢失问题
出错环境: 在xml文档中写入一些内容。整个流程是: 首先检查xml文件是否在当前路径下,如果存在,则用
xmlDocument
.Load()进行加载;如果不存在则创建xml文件,并用
xmlDocument
.Save(string)进行保存 出错代码如下: //xml文件名 m_xmlFileName = "fileRecvRecord.x
C#
急速入门
Unity开发,
C#
绝对是基础中的基础,课程针对纯小白而设计,各种语言细节在课程里均有涉猎,从原理到实战,从底层到算法,你想了解的
C#
,这里应有尽有,除了讲解,还有练习,你说棒不棒,哈哈,当然如果你是有其他语言基础的同学,课程依然会让你收货满满。来吧,我们进入正题。
C#
语言系列课程分为:1.
C#
急速入门2.
C#
之面向对象观看地址:https://edu.csdn.net/course/detail/266413.
C#
高级进阶观看地址:https://edu.csdn.net/course/detail/310654.程序员内功修炼 - 数据结构(
C#
)观看地址:https://edu.csdn.net/course/detail/10505
Console.Out 属性和
XmlDocument
.Save
方法
(String)
Console.Out 属性 默认情况下,此属性设置为标准输出流。此属性可以设置为另一个流SetOut
方法
。 请注意,调用Console.Out.WriteLine
方法
是等效于调用相应WriteLine
方法
。 下面的示例使用Out属性显示包含到标准输出设备的应用程序的当前目录中的文件的名称的数组。然后将标准输出设置为一个名为 Files.txt 文件,并列出了对文件的数组元素。最后,它...
C#
XmlDocument
.Save文件操作System.IO.IOException:The process cannot access the file because it is being
实测,在文件进行读写的时候,使用
xmlDocument
.Save("1.txt");进行文件保存时,会出现以下异常。 System.IO.IOException:“The process cannot access the file 'C:\Users\Shine\Desktop\ConsoleApp2\ConsoleApp2\bin\Debug\netcoreapp2.1\1.txt' bec...
C#
110,537
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章