1

私はPythonを初めて使用し、検証せずにSAXを使用してXMLファイルを解析しようとしています。

私のxmlファイルの先頭は次のとおりです。

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

そして私はそれをpython2.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 に答える