首页 新闻 赞助 找找看

XmlDocumen读取xml文件问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2010-11-19 20:27

由于是读取即时数据,所以目标xml文件更新较频繁。

问题就出现在于:当目标xml文件正在更新数据而重新生成时,用XmlDocumen读取解析便会出现xml标签未闭合的错误,而导致程序自动退出,我尝试加入try {}扑捉错误 进一步处理,但没有效果.

我想要的效果是:无论ReadXML()方法是否正确解析,都循环执行,当然出现解析错误则忽略后重新执行读取解析。

以下是ReadXML()方法代码片段:

 

private void ReadXML()
{

try {
XmlDocument doc
= new XmlDocument();
doc.Load(bookstore.xml);
//读取文件
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>


......
...
//进一步处理xml数据(略)

}
catch {
ReadXML() ;
//重新执行本方法
}

}

 

Kabayashi的主页 Kabayashi | 初学一级 | 园豆:128
提问于:2010-11-16 16:10
< >
分享
所有回答(3)
0

建议用FileStream的读写互斥性进行控制

artwl | 园豆:16736 (专家六级) | 2010-11-16 21:01
0

应该是是你的WriteXml()方法有错误,如果写xml文档的时候即使语法不合规范,比如没有头标签<!DOCTYPE>,有<a>标签没</a>,文档照样保存不会异常,当去读的时候就会有错误。如果文档中的一个标签出现错误还要继续读的时候,在for循环中用'contiue'跳过就可以了,不过可能读出一堆字符串,不是你想要的结果。

文件不能在写的时候供另一个人读,因为没保存。

如果 在catch块中调用本体方法,就会一直捕获异常,重新运行方法而生成异常,再被捕获,再调用本方法,死循环下去。

也可以在更新文档的时候生成一个新的文档,更新新的文档之后替换旧的文档,这样在更新文档时,读者读的是旧文档。

贪心狸猫 | 园豆:872 (小虾三级) | 2010-11-16 23:32
0

可以单例模式,读和写都用同一个XmlDocument对象。

沉默的糕点 | 园豆:1786 (小虾三级) | 2010-11-17 09:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册