为什么 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)
到底是什么造成了例外?
XmlDocument的内部XmlReader使用XmlResolver加载外部资源。您应该通过设置来防止打开DTD XmlResolver
为null和设置 DtdProcessing
忽略。这可以通过应用a来完成 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