我使用模式文件(.xsd)来生成用于生成xml代码的python类。我可以使用所有生成的调用,但如果我尝试
print d.toxml("utf-8")
File "/usr/local/lib/python2.7/dist-packages/pyxb/binding/basis.py", line 541, in toxml
dom = self.toDOM(bds)
File "/usr/local/lib/python2.7/dist-packages/pyxb/binding/basis.py", line 513, in toDOM
raise pyxb.UnboundElementError(self)
pyxb.exceptions_.UnboundElementError: Instance of type visionDataPackage has no bound element for start tag结果是元素的element_name属性丢失了。因此,如果我在/usr/local/lib/python2.7/dist-packages/pyxb/binding/basis.py element_name中设置:
element_name="visionDataPackage"
if (element_name is None) and (self._element() is not None):
element_binding = self._element()
element_name = element_binding.name()
need_xsi_type = need_xsi_type or element_binding.typeDefinition()._RequireXSIType(type(self))
if element_name is None:
raise pyxb.UnboundElementError(self)一切正常。那么我做错了什么呢?
发布于 2013-12-04 21:17:10
您所做的可能是使用其类型而不是元素来创建d。例如,如果您的架构具有:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="atype">
<xs:sequence>
<xs:element name="entry" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="anelt" type="atype"/>
</xs:schema>如果你做的是d = atype(),那么d就不会绑定到任何元素。如果您使用的是d = anelt(),那么d仍然是atype的一个实例,但它将绑定到anelt。绑定告诉PyXB在从对象生成DOM或text XML表示时使用哪个元素标记。
当对象没有绑定到元素时,PyXB以前分配了一个从底层类型推断的默认元素标记,这是PyXB 1.2.3中发现并修复的一个long-standing bug。
请参阅PyXB SF discussion forum上的其他讨论。
https://stackoverflow.com/questions/19860985
复制相似问题