1

我是 python 新手,我正在尝试使用 SAX 解析 XML 文件而不验证它。

我的 xml 文件的头是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE n:document SYSTEM "schema.dtd">
<n:document....

我尝试用 python 2.5.2 解析它:

from xml.sax import make_parser, handler
import sys

parser = make_parser()
parser.setFeature(handler.feature_namespaces,True)
parser.setFeature(handler.feature_validation,False)
parser.setContentHandler(handler.ContentHandler())
parser.parse(sys.argv[1])

但我得到一个错误:

python doc.py document.xml
(...)
  File "/usr/lib/python2.5/urllib2.py", line 244, in get_type
    raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: schema.dtd

我不希望 SAX 解析器寻找模式。我哪里错了?谢谢 !

4

1 回答 1

4

expatreader 将 DTD 外部子集视为外部通用实体。所以你想要的功能是:

parser.setFeature(handler.feature_external_ges, False)

但是,将 DTD 外部子集指向一个不存在的 URL 有点狡猾。如图所示,它不仅验证读取它的解析器。

于 2010-01-04T11:21:12.807 回答