2015-07-20 86 views
1

我有以下格式的XML文件,遍歷:Python中通過不同的XML標籤

<commands> 
    <command name = ""> 
    <data byte=""></data> 
    </command> 
</commands> 

<registers> 
    <register name = ""> 
    <mask name =""></mask> 
</registers> 

將寄存器標籤前,我可以使用通過沒有問題的文件遍歷:

for command_data_name in root.findall('command'): 
    if (command_data_name.get('major') == major_bits and command_data_name.get('minor') == minor_bits): 
     command_name = command_data_name.get('name') 

但現在我得到

xml.etree.ElementTree.ParseError: junk after document element. 

顯然是由我的註冊標籤集成。如果我想抓取寄存器信息,這應該看起來如何?

<registers> 

    <register name="Command"> 
     <bits major_mask="0xFF00000000", right_shift="32", left_shift="0"></bits> 
     <bits minor_mask="0xFF0000000000", right_shift="40", left_shift="0"></bits> 
     <bits doorbell_mask="0x1000000000000", right_shift="48", left_shift="0"></bits> 
     <bits sequence_mask="0xF000000000000000", right_shift="63", left_shift="0"></bits> 
    </register> 

    <register name="Status"> 
     <bits mb_comp_mask="0x1", right_shift="0", left_shift="0"></bits> 
     <bits nonce_mask="0x2", right_shift="1", left_shift="0"></bits> 
     <bits bos_mask="0xFF", right_shift="3", left_shift="0"></bits> 
     <bits status_code_mask="0xFF00", right_shift="12", left_shift="0"></bits> 
    </register> 

    </registers> 
+0

是完整的xml嗎? –

+0

我有很多同樣的東西被複制,所以基本上,是的。 – Ryan

回答

1

每個XML文檔應該只有1個元素,但該文檔應該上述有多個根元素 - <commands><registers>。從wikipedia -

Each XML document has exactly one single root element. It encloses all the other elements and is therefore the sole parent element to all the other elements. ROOT elements are also called PARENT elements.

這是什麼原因造成的錯誤 -

xml.etree.ElementTree.ParseError: junk after document element 

解決這一問題將是包裹一個根元素裏面一切的最簡單的方法,但真正的解決將是考慮你希望如何構建xml,並相應地構造它(以便它只有1個根元素)。


的另一個問題是在XML中,,你不需要在XML元素逗號,刪除它們,它應該工作。逗號示例 -

<bits major_mask="0xFF00000000", right_shift="32", left_shift="0"></bits> 
          ^    ^
           comma causing issue 
+0

嗯,所以我試圖包裝之間的一切,它仍然無法正常工作。 – Ryan

+0

您是否收到任何新錯誤?或者同樣的錯誤? –

+0

xml.etree.ElementTree.ParseError:格式不正確(無效令牌) – Ryan