我已经为XSD提供了以下类型的AnySimple
定义(我不知道为什么定义了这种类型,但是无论如何它都与xsd:anySimpleType
不同):< / p>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:Core="http://www.foo.com/Core/PrimitiveTypes" targetNamespace="http://www.foo.com/Core/PrimitiveTypes" elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xsd:simpleType name="AnySimple">
<xsd:annotation>
<xsd:documentation>container for any simple type</xsd:documentation>
</xsd:annotation>
<xsd:union memberTypes="xsd:string xsd:boolean xsd:byte xsd:short xsd:int xsd:long xsd:unsignedByte xsd:unsignedShort xsd:unsignedInt xsd:unsignedLong xsd:float xsd:double xsd:dateTime xsd:duration"/>
</xsd:simpleType>
...
在使用pyxb从此XSD生成Python代码之后,当我解析一个我知道是有效的XML文档时,我收到以下错误,该错误指出xsd:int
不能是{{1} } :
AnySimple
出了什么问题?
编辑:
作为参考,这是为File "/usr/lib/python3/dist-packages/pyxb/namespace/builtin.py", line 133, in _InterpretTypeAttribute
raise pyxb.BadDocumentError('%s value %s is not subclass of element type %s' % (type_name, type_en, type_class._ExpandedName))
pyxb.exceptions_.BadDocumentError: xsd:int value {http://www.w3.org/2001/XMLSchema}int is not subclass of element type {http://www.foo.com/Core/PrimitiveTypes}AnySimple
类型生成的代码,其中的成员列表似乎是正确的:
AnySimple
答案 0 :(得分:0)
这似乎与此问题有关,可以在PyXB的文档中找到:http://pyxb.sourceforge.net/userref_usebind.html#coping-with-wrong-xsi-type-attributes
可以通过在XML文件的解析之前在代码中添加一行来解决该错误,从而放宽XML解释的严格性:
pyxb.namespace.builtin.XMLSchema_instance.ProcessTypeAttribute(
pyxb.namespace.builtin._XMLSchema_instance.PT_lax)