2012-07-19 341 views
2

我有一個n xml文件,我想在其中更改三個元素。 這是第一個,第八個和第十個<string>元素。所以最簡單的方法,我想,會是這樣的(但我願意接受任何其他建議,謝謝!):使用Python中的minidom修改(更改特定元素)XML文件

DOM = xml.dom.minidom 
doc = DOM.parse(open(FILENAME)) 

a = doc.getElementsByTagName('string') 
for i in range(len(a)): 
    if i == 0: 
     a[i] = new Element with new Text 
    if i == 7: 
     a[i] = new Element with new Text 
    if i == 9: 
     a[i] = new Element with new Text 

那是我的文件基本上是:

<plist version="1.0"> 
<dict> 
    <key></key> 
    <string>CHANGE THIS</string> 
    <string>aaa</string> 
    <key>aaa</key> 
     <dict> 
      <key>aaa</key> 
      <dict> 
       <key>aaa</key> 
       <string>aaa</string> 
       <key>aaa</key> 
       <false/> 
      </dict> 
      <key>aaa</key> 
      <dict> 
       <key>aaa</key> 
       <string>aaaa.png</string> 
       <key>aaa</key> 
       <string>aaa</string> 
       <key>aaa</key> 
       <string>aaa</string> 
      </dict> 
     </dict> 
     <key></key> 
     <true/> 
     <key></key> 
     <string></string> 
    <key></key> 
    <string>CHANGE THIS</string> 
    <key></key> 
    <string></string> 
    <key></key> 
    <string>AND CHANGE THIS</string> 
    <key></key> 
    <string></string> 
    <key></key> 
    <string></string> 
    <key></key> 
    <key></key> 
    <true/> 
    <key></key> 
    <string></string> 
    <key></key> 
    <key></key> 
</dict> 
</plist> 
+0

你的問題是什麼?爲什麼所有的XML條目都有相同的名稱?如果僅僅是這個例子,你能發佈一個更現實的例子嗎?謝謝! – 2012-07-20 11:55:50

回答

2

我這最後想通了自己。

a = doc.getElementsByTagName('string') 
for i in range(len(a)): 
    if i == 0: 
     a[i].firstChild.nodeValue = myvalue1 
    if i == 7: 
     a[i].firstChild.nodeValue = myvalue2 
    if i == 9: 
     a[i].firstChild.nodeValue = myvalue3