2012-07-19 345 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