Python pyxb无法识别的DdomRootNodeError

Python pyxb无法识别的DdomRootNodeError,python,xml,exception,xsd,pyxb,Python,Xml,Exception,Xsd,Pyxb,我有以下xml模式: <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="DataPackage"> <xsd:sequence> <xsd:element name="timestamp"

我有以下xml模式:

<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:complexType name="DataPackage">
    <xsd:sequence>
        <xsd:element name="timestamp" type="xsd:float" default="0.0"/>
        <xsd:element name="type" type="xsd:string" default="None"/>
        <xsd:element name="host" type="xsd:string" default="None"/>
        <xsd:element name="data" type="Data" />
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Data">
    <xsd:sequence>
        <xsd:element name="item" type="Item" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Item">
    <xsd:sequence>
        <xsd:element name="key" type="xsd:string"/>
        <xsd:element name="val" type="xsd:string"/>
    </xsd:sequence>
 </xsd:complexType>

</xsd:schema>
如果我尝试在python解释器中使用以下内容阅读此内容:

import DataPackage
xml = file("dataPackage-Test.xml").read()
data = DataPackage.CreateFromDocument(xml)
我得到一个例外:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "DataPackage.py", line 54, in CreateFromDocument
    instance = handler.rootObject()
  File "/usr/local/lib/python2.7/dist-packages/pyxb/binding/saxer.py", line 274, in   rootObject
    raise pyxb.UnrecognizedDOMRootNodeError(self.__rootObject)
pyxb.exceptions_.UnrecognizedDOMRootNodeError: <pyxb.utils.saxdom.Element object at  0x9c7c76c>
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
CreateFromDocument中第54行的文件“DataPackage.py”
instance=handler.rootObject()
rootObject中的文件“/usr/local/lib/python2.7/dist-packages/pyxb/binding/saxer.py”,第274行
raise pyxb.UnrecognedDomRootNodeError(self.\uu rootObject)
pyxb.exceptions_u2;UnrecognizedDOMRootNodeError:

有人知道怎么回事吗?

您的模式定义了一个名为DataPackage的顶级复杂类型,但没有定义任何顶级元素。因此,DOM元素数据包没有PyXB可以用来处理它的对应元素

您需要添加以下内容:

<element name="DataPackage" type="DataPackage"/>

请注意,在XML模式中,元素和类型的名称空间是不同的,但在Python中不是,因此PyXB将重命名其中一个(本例中的复杂类型)以避免冲突。看

<element name="DataPackage" type="DataPackage"/>