2012-12-02 74 views
12

我得到了python 2.6.1中的路徑分隔符錯誤。我沒有發現這個問題與Python 2.7.2版本,但不幸的是,我只需要在2.6.1。有沒有其他方法可以達到同樣的效果? :(Python 2.6.1:期望的路徑分隔符([)

我的代碼: -

import xml.etree.ElementTree as ET #version 1.2.6 
import sys 

class usersDetail(object): 

    def __init__(self, users=None): 
     self.doc = ET.parse("test.xml") 
     self.root = self.doc.getroot() 

    def final_xml(self,username): 
     r = self.root.find("user[@username='user1']") #not working in 2.6.1 :(
     self.root.remove(r) 
     print r 
     tree = ET.ElementTree(self.root) 
     tree.write("msl.xml") 

if __name__ == '__main__': 
    parser = usersDetail() 
    parser.final_xml("user1") 

的test.xml是: -

<?xml version="1.0"?> 
<users> 
<user afp="yes" cifs="yes" username="user1" volume="vol" webdev="yes" /></user> 
</users> 

這將完成是它會刪除XML只有在用戶名=用戶名預先感謝。您的寶貴時間

回答

16

您正在使用XPath表達式,Python 2.6中包含的ElementTree版本不支持該表達式,您需要在之後手動篩選屬性:

def final_xml(self,username): 
    users = self.root.findall("user") 
    for user in users: 
     if user.attrib.get('username') == 'user1': 
      break 
    else: 
     raise ValueError('No such user') 

    # `user` is now set to the correct element 
    self.root.remove(user) 
    print user 
    tree = ET.ElementTree(self.root) 
    tree.write("msl.xml") 
+1

是的,你說得對。 –

相關問題