在 Python/Django 中,我需要根据给定的 XMLSchema 解析和对象化文件 .xml ,该 XMLSchema 由三个 .xsd 文件组成,以这种方式相互引用:
schema3.xsd(参考 schema1.xsd)
schema2.xsd(指 schema1.xsd)
schema1.xsd(指 schema2.xsd)
为此,我使用了以下代码,我已经测试过它在与几个 xml/xsd 文件一起使用时是成功的(其中 .xsd 是“独立的”而不引用其他 .xsd):
导入 lxml 导入 os.path 从 lxml 导入 etree,对象化 从 lxml.etree 导入 XMLSyntaxError def xml_validator(请求): # 定义文件路径 path_file_xml = '../myxmlfile.xml' path_file_xsd = '../schema3.xsd' # 获取文件 XML xml_file = open(path_file_xml, 'r') xml_string = xml_file.read() xml_file.close() # 获取 XML 架构 doc = etree.parse(path_file_xsd) 架构 = etree.XMLSchema(doc) #定义解析器 parser = objectify.makeparser(schema=schema) # 转换 XML 文件 root = objectify.fromstring(xml_string, 解析器) test1 = root.tag 返回渲染(请求,'risultati.html',{'risultato':test1})
不幸的是,我遇到了上面描述的多个 .xsd 时遇到的以下错误:
复杂类型“ObjectType”:内容模型不是确定性的。
请求方法:GET 请求地址: http: //127.0.0.1 :8000/xml_validator
Django 版本:1.9.1 异常类型:XMLSchemaParseError 异常
值:复杂类型“ObjectType”:内容模型不是确定性的。,第 80 行
有什么想法吗?
非常感谢您提供解决此问题的任何建议或有用的提示...
干杯
2016 年 3 月 23 日更新
在这里(以及在帖子的以下答案中,因为它实际上超过了帖子的最大字符数),一个文件样本来找出问题......