包含选择语句的XML模式的PyXB

时间:2014-04-20 15:02:47

标签: python xml

我正在使用pyXB来绑定XML。

我在那里使用的架构有选择元素。

所以当我将XML转换为python实例时

我不确切知道在选择元素中选择了哪个元素。

因此,为了区分,我必须考虑所有情况使用if / else语句。

例如,如果choice元素有a和b,则区分a和b中的一个

A = binder.CreateFromDocument(xml)  #bind into a python instance

#At this point, i don't know which element is included
#So I have to check using if/else  
if A.a:
   #processing in the case of a
   A.a.aa = 'a'
else if A.b:
   #processing in the case of b
   A.b.bb = 'b'

示例非常简单,如果/ else看起来足够,但是如果choice元素包含的元素数量超过100个。

处理(重复if / else)会很糟糕。

有没有其他方法可以知道选择了哪个元素?

1 个答案:

答案 0 :(得分:0)

是;复杂类型实例上有一个方法orderedContent,可用于确定实例中存在哪些元素。如[{3}}所述,当模式未强制执行订单时,这也可用于恢复元素的文档顺序。

请注意,orderedContent列表的成员包含在提供有关它们的信息的对象中,因此要获取底层内容绑定,您必须深入查看包装器的in the user documentation属性。