2008-10-27 75 views

回答

0

http://todotnet.com/archive/2006/07/27/8248.aspx

由於 XPathDocument的建設,有一個HTTP GET 命令,看是否可以訪問 DTD。它沒有對 DTD做任何事情。這是爲了以防萬一。因此,雖然 XPathDocument最初設置爲 是XmlDocument的 的更快替代方法,但您需要解決http請求 的額外開銷 。想象一下 該服務器在全球的另一邊 !

1

您可以編寫自定義XmlUrlResolver,然後忽略遠程DTD 。另外,我相信你可以在XmlTextReader上設置使用XmlResolver = null。

+0

但MSDN應該清楚地說明這件事會發生。看着XPathDocument,你不能告訴它會在網上尋找DTD。還有爲什麼拋出異常?如果不需要DTD - 離線工作不是嗎?無論如何感謝您的建議 - 我會在下次嘗試! – Goran 2008-10-28 07:22:31

1

對於那些有興趣,我找到了一個解決方法禁用DTD檢查

XmlReaderSettings settings = new XmlReaderSettings(); 
settings.XmlResolver = null; 
settings.ProhibitDtd = false; 

var xmlReader = XmlTextReader.Create(new StringReader(xmlString),settings); 
XPathDocument xpathDoc = new XPathDocument(xmlReader); 
相關問題