我正在尝试通过 lxml 和 xsd (ogckml22.xsd) 验证一些 XML。这是离线发生的。我通过直接打开/读取读取文件
作为记录,http://www.opengis.net/kml/2.2 无效。
来自另一篇文章:(由于评论请求而澄清..)
from lxml import etree
import os
import sys
import StringIO
file=open('ogckml22.xsd')
data=file.read()
str=StringIO.StringIO(data)
try:
xmlschema_doc=etree.parse(data)
except IOError as ex:
print "oops {0}".format(ex.strerror)
except:
print "Unexpected error:", sys.exc_info()[0]
xmlschema=etree.XMLSchema(xmlschema_doc)
我得到的只是“连接被拒绝”。使用 try/except,我得到未定义 xmlschema_doc。
File "<stdin>", line 1, in <module>
File "<xmlschema.pxi",line 105, in lxml.etree.XMLSchema.__init__ (src/lxml/lxml.etree.c:132748
self.error_log)
lxml.etree.XMLSchemaParseError: connection refused
我知道它可以读取上面的 xsd 文件和包含的另一个 xsd 文件。
好吧,也许 xsd 被读取了?我下载了 lxml 和 src/lxml/xmlschema.pxi 的源代码,
if self._c_schema is NULL:
raise XMLSchemaParseError(
self.error_log._buildExceptionMessage(
u"Document is not valid XML Schema"),
self._error_log)
我从来没有看到“文档不是有效的 XML 架构”消息。我只能假设使用“拒绝连接”代替“文档消息”(默认值?),但更彻底地阅读 _error_log (在重新编译之外)逃避了我....
真挚地,
箭树