XmlResolver类'GetEntity函数

时间:2010-06-02 09:33:22

标签: c# .net xml dtd

我写了一个自定义解析器类。它适用于解析SYSTEM DTD,但不适用于解析PUBLIC DTD。当类必须解析PUBLIC DTD而不是资源的URI时,该函数通过GetEntity函数的absoluteUri参数接收公共标识符。有没有解决方案。

在示例中:

  • 如果我有像<!DOCTYPE document SYSTEM "document.dtd">这样的DTD声明,那么自定义解析器会通过GetEntity函数的absoluteUri参数正确接收字符串“document.dtd”。
  • 如果我有像<!DOCTYPE document PUBLIC "-//Organization//DTD Document 1.0//EN" "http://localhost/document.dtd">这样的DTD声明,那么自定义解析器会错误地接收字符串“ - // Organization // DTD Document 1.0 // EN”而不是“scheme://host/document.dtd”

1 个答案:

答案 0 :(得分:1)

我在Stack Overflow上找到了答案right here。首先,公共标识符(-//Organization//DTD Document 1.0//EN)作为参数传递,而不是 - 如果第一次调用导致错误 - DTD文件的uri(http://localhost/document.dtd)。