2014-04-20 43 views
0

我使用pyXB來綁定XML。包含選擇語句的XML模式的PyXB

我在那裏使用的模式有選擇元素。

所以,當我將XML轉換成Python實例

我不知道到底哪些因素在選擇choice元素。

所以爲了區分,我不得不使用if/else語句考慮所有情況。

例如,如果選擇的元件具有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' 

的例子是如此簡單,如果/其他看上去足夠,但如果選擇元件具有如此多的元件大約超過100個。

處理(重複if/else)將如此糟糕。

是否有任何其他方式知道哪個元素被選中?

回答

0

是;在複雜類型實例上有一個方法orderedContent,可用於確定實例中存在哪些元素。這也可以用來在訂單未被模式強制執行時恢復元素的文檔順序,如in the user documentation所述。

請注意,orderedContent列表的成員被包裝在提供關於它們的信息的對象中,因此要獲取基礎內容綁定,您必須深入查看包裝器的value屬性。