我使用pyXB绑定XML。
我在那里使用的模式有选择元素。
因此,当我将XML转换为python实例时
我不知道在choice元素中选择的是哪一个元素。
所以为了区分,我不得不使用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'这个例子很简单,if/else看起来足够了,但是如果choice元素有这么多的元素,大约超过100个。
这种处理(重复if/else)将会非常糟糕。
有没有其他方法可以知道选择了哪个元素?
发布于 2014-04-22 09:21:42
可以;复杂类型实例上有一个方法orderedContent,可用于确定实例中存在哪些元素。这也可用于在模式未强制执行顺序时恢复元素的文档顺序,如in the user documentation所述。
请注意,orderedContent列表的成员被包装在提供有关它们的信息的对象中,因此要获得底层内容绑定,必须深入包装器的value属性。
https://stackoverflow.com/questions/23183899
复制相似问题