XSD解析文档和元素

时间:2014-05-12 21:13:00

标签: python xml-parsing xsd pyxb

我有一个xsd,我使用pyxb来生成对象类。到目前为止一切正常,我能够接收文档,错误处理等工作正常。我唯一的问题是,我的xsd中有以下内容:

<xs:element name="users">
  <xs:complexType>
    <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="user" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

我在别处定义了user复杂类型。有时候我想从主xml文档中取一个user,我想从它创建python类绑定......但是我无法做到。 pyxb只允许我从整个文档创建(使用CreateFromDocument函数)。反正只有那个user元素?

我读了以下内容:

https://developer.yahoo.com/python/python-xml.html

http://pyxb.sourceforge.net/api/pyxb.binding.basis.element-class.html

http://pyxb.sourceforge.net/userref_pyxbgen.html

2 个答案:

答案 0 :(得分:1)

CreateFromDocument()将为任何XML片段创建绑定,该片段是架构中的顶级元素。所以你应该能够做到:

instance = user_xsd.CreateFromDocument(string)

首先不通过dom实例。在测试目录中有很多例子可以做到这一点。

答案 1 :(得分:0)

所以答案被隐藏在文档中。

http://pyxb.sourceforge.net/PyXB-1.2.2/examples.html

说你有一个user xml文档。你可以这样做:

from xml.dom import minidom
dom = minidom.parseString(string)

# import the xml file you get from pyxbgen
import user_xsd
user_xsd.CreateFromDOM(dom.documentElement)