Pac*_*ier 11 .net xml vb.net xmldocument exception-handling
为什么System.Xml.XmlDocument.LoadXml方法抛出System.Net.WebException?
这真是令人难以置信的疯狂,如果MSDN是对的,LoadXml最多应该给我一个System.Xml.XmlException.
然而,我有奇怪的例外,如:
底层连接已关闭:连接意外关闭.
Dim document As New XmlDocument
document.LoadXml("<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd""><x></x>")
MsgBox(document.LastChild.Name)
Run Code Online (Sandbox Code Playgroud)
究竟是什么造成了例外?
XmlDocument的内部XmlReader使用XmlResolver加载外部资源.您应该通过将"设置XmlResolver为空"和"设置DtdProcessing为忽略" 来阻止打开DTD .这可以通过将XmlReaderSettings对象应用于新对象来完成XmlReader.然后可以使用此阅读器将XML加载到XmlDocument中.这应该可以解决你的问题.
Dim doc As New XmlDocument()
Dim settings As New XmlReaderSettings()
settings.XmlResolver = Nothing
settings.DtdProcessing = DtdProcessing.Ignore
Using sr As New StringReader("<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd""><x></x>")
Using reader As XmlReader = XmlReader.Create(sr, settings)
doc.Load(reader)
End Using
End Using
Run Code Online (Sandbox Code Playgroud)
Edwin 为您提供了解决方案,我正在为您提供连接断开的原因:
http://www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic/
| 归档时间: |
|
| 查看次数: |
3610 次 |
| 最近记录: |