XSD 解析文档和元素
我有一个 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
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 实例。测试目录中有很多示例正是这样做的。