1

使用引用的 DTD 创建 XPathDocument 有时会引发 Web 异常。为什么?

4

3 回答 3

1

您可以编写自定义 XmlUrlResolver,然后忽略远程 DTD。另外,我相信您可以在 XmlTextReader 上设置 use XmlResolver = null。

于 2008-10-28T01:00:09.593 回答
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);
于 2015-02-01T08:56:36.707 回答
0

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

因为在XPathDocument的构建中,有一个http GET命令来查看是否可以访问DTD。它对 DTD 没有任何作用。这是为了以防万一。因此,虽然 XPathDocument 最初设置为 XmlDocument 的更快替代方案,但您将获得需要解决的 http 请求的额外开销。想象一下服务器在地球的另一端!

于 2008-10-27T12:58:18.477 回答