2014-12-04 67 views
0

我遇到了minidom API來獲取子項,獲取父項,設置屬性並將其刪除。有什麼方法可以在minidom Python中更改元素節點名稱嗎?

考慮下面的XML:

<TECH_COMPANIES> 
    <APPLE> 
     <IPHONE> 
      <IPHONE6>sameOld </IPHONE6> 
     </IPHONE> 
     <IPAD>nice</IPAD> 
     <MAC>awesome</MAC> 
    </APPLE> 

    <GOOGLE> 
     <GMAIL>BREEZE</GMAIL> 
     <PICASA>COOL_SHARE</PICASA> 
    </GOOGLE> 

    <LENOVO> </LENOVO> 

    <SAMSUNG> 
     <NOTE1> 
      <GORRILLA_GLASS ScratchProof="yes" Tranparency="99%" Smoothness="85%"/> 
     </NOTE1> 

    </SAMSUNG> 
</TECH_COMPANIES> 

蘋果,谷歌,聯想和三星TECH_COMPANIES的子元素節點。 假設我想將元素節點'APPLE'的名稱更改爲'APPLEinc,我該如何改變它?

回答

3

minidom爲您提供標準的DOM API實現。 W3C DOM API無法重命名元素;相反,您需要重新創建元素並從舊的元素重新填充元素。至少可以說這是痛苦的。因此,該過程將是:

而不是使用DOM API,您最好切換到ElementTree API;這允許你以更加pythonic的方式操縱樹:

from xml.etree import ElementTree as ET 

root = ET.fromstring(xml_string) 
apple = root.find('.//APPLE') 
apple.tag = 'APPLEinc' 
xml_string = ET.tostring(root) 
+0

反正我不想聽到這個...... !!!那麼我應該切換到ElementTree ....非常感謝Martijn – 2014-12-04 12:56:45

相關問題