XSD 解析文档和元素

0 投票
2 回答
1556 浏览
提问于 2025-04-18 06:21

我有一个 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

所以答案其实在文档里藏着。

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)
1

CreateFromDocument() 这个函数可以为任何在架构中作为顶级元素的 XML 片段创建一个绑定。所以你应该可以直接这样做:

instance = user_xsd.CreateFromDocument(string)

而不需要先通过一个 dom 实例。测试目录中有很多示例正是这样做的。

撰写回答