为什么System.Xml.XmlDocument.LoadXml
方法抛出System.Net.WebException
?
这真是令人难以置信的疯狂,如果MSDN http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.loadxml.aspx是正确的,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)
到底是什么导致了异常?
XmlDocument 的内部 XmlReader 使用 XmlResolver 加载外部资源。您应该通过设置来防止打开 DTDXmlResolver
为空并设置DtdProcessing
忽略。这可以通过应用来完成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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)