日期:2014-05-18  浏览次数:20728 次

一个关于读取XML的问题
我在程序中是顺序的往下读取数据,但是当读到
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
的时候,就会自动访问网络核对格式是否正确,如果网络正常就能顺利继续往下读,但是如果禁止网络,当读到这个地方就会产生异常,我想问一下,有什么读XML文件的好方法可以跳过这行,继续往下读取(在网络异常的情况)?谢谢大家。


------解决方案--------------------
你可以用XmlValidatingReader
设置他的ValidationType 
让他不进行dtd验证
------解决方案--------------------
【孟子E章】的文章:
我们可以采用下面的方法不去加载外部资源:

XmlDocument doc = new XmlDocument();
doc.XmlResolver = null;
doc.Load(url);
或者在.NET 2.0以上版本采用下面的方法:

XmlReaderSettings xs = new XmlReaderSettings();
xs.XmlResolver = null;
xs.ProhibitDtd = false;
XmlReader reader = XmlReader.Create(url, xs);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
更多信息请参考:
System.Xml 安全注意事项
http://msdn2.microsoft.com/zh-cn/library/ms172415(VS.80).aspx