更改xml文件中的值

时间:2013-05-12 23:41:10

标签: python xml xml.etree

我正在尝试更改xml文档中的大量值。我尝试了几个不同的东西,但他们似乎没有改变任何东西,但他们似乎确实访问该文件,因为修改时间改变,但价值不。

from xml.etree import ElementTree as et
import os
import xml

path = os.path.expanduser(r'~\AppData\Roaming\etc\etc\somefile.xml')
et = et.parse(path)

for name in et.findall('name'):
    if name == 'sometext1':
        name.text = "sometext2"
et.write(path)

然后尝试了这个,但我得到了一个AttributeError:'str'对象没有属性'text'

with open(path,'r+') as f:
tree = et.parse(f)

for node in tree.iter('favourite'):
name = node.attrib.get('name')

if name == 'sometext1':
    name.text = "sometext2"
tree.write(path)

有人可以告诉我哪里出错

1 个答案:

答案 0 :(得分:0)

  • 该行

    et = et.parse(path)
    

    使用et作为右侧的模块,并使用et作为变量名称 剩下。在此之后,这是不可能的(或至少过于努力) 访问ElementTree模块。所以消除ET的歧义。比方说吧 tree为模块,ElementTreename

  • 在for循环中,name是一个元素,因此将name.text == 'sometext1' 与a进行比较 string永远是False。而是使用

    from xml.etree import ElementTree as ET
    import os
    
    path = os.path.expanduser(r'~\AppData\Roaming\etc\etc\somefile.xml')
    tree = ET.parse(path)
    
    for name in tree.findall('name'):
        if name.text == 'sometext1':
            name.text = "sometext2"
            print(name) # for debugging only
    tree.write(path)
    

{{1}}