Dot-Net
為什麼 XmlDocument.LoadXml 會拋出 System.Net.WebException?
為什麼
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)到底是什麼導致了異常?
Edwin 給了你解決方案,我給你連接斷開的原因:
http://www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic/
XmlDocument 的內部 XmlReader 使用 XmlResolver 載入外部資源。
XmlResolver您應該通過將 設置為 null 並設置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