Я пытаюсь проверить XML через lxml и xsd (ogckml22.xsd). Это происходит в автономном режиме. Я читаю файл через прямое открытие / чтение
Для справки: 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». Я могу только предположить, что «Connection Refused» используется вместо «Document message» (по умолчанию?), Но более тщательное чтение _error_log (вне перекомпиляции) меня ускользает ...
Искренне,
СтрелкаДерево
lxml.etree.__version__
? - person jfs   schedule 07.11.2012