首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><element>的Pyxb实例没有开始标记的绑定元素

<element>的Pyxb实例没有开始标记的绑定元素
EN

Stack Overflow用户
提问于 2013-11-08 22:07:56
回答 1查看 1.5K关注 0票数 3

我使用模式文件(.xsd)来生成用于生成xml代码的python类。我可以使用所有生成的调用,但如果我尝试

代码语言:javascript
复制
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中设置:

代码语言:javascript
复制
    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)

一切正常。那么我做错了什么呢?

EN

回答 1

Stack Overflow用户

发布于 2013-12-04 21:17:10

您所做的可能是使用其类型而不是元素来创建d。例如,如果您的架构具有:

代码语言:javascript
复制
<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上的其他讨论。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19860985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档