我正在尝试更改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)
有人可以告诉我哪里出错
答案 0 :(得分:0)
该行
et = et.parse(path)
使用et
作为右侧的模块,并使用et
作为变量名称
剩下。在此之后,这是不可能的(或至少过于努力)
访问ElementTree模块。所以消除ET
的歧义。比方说吧
tree
为模块,ElementTree
为name
。
在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}}