[英]How to find, read and replace a value in XML file with Python
这是我的示例XML文件:
<CATALOG>
<CD>
<DATA key="title">Hide your heart</DATA>
<DATA key="artist">Bonnie Tyler</DATA>
<DATA key="country">UK</DATA>
<DATA key="company">CBS Records</DATA>
<DATA key="price">9.90</DATA>
<DATA key="year">1988</DATA>
<DATA key="times">1</DATA>
</CD>
</CATALOG>
我想使用“ times”键更改标签数据中的值,并在每次从终端启动脚本时对其添加1。
我首先尝试使用以下方法读取元素:
import xml.etree.ElementTree
e = xml.etree.ElementTree.parse('test.xml').getroot()
for atype in e.findall('data'):
times=(atype.get('times'))
但是我已经被卡住了,因为它不起作用。 如果我尝试打印“时间”,则无法从终端获得任何输出。
我的想法是读取它,并使用函数添加到该值1并将其替换为总和(在这种情况下为2)。 并保存修改后的XML文件。
这应该很容易做到,但我不知道。
编辑我不得不更好地阅读文档,我尝试使用:
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
times = root[0][7].text
newTimes = int(times) + 1
times = newTimes
tree.write('test.xml')
它正确读取值,加1,但是如果我尝试写入文件,则会出现错误。 我究竟做错了什么?
编辑2
我找到了解决方案,请阅读下面的答案。
很简单:
>>> e.findall('CD')
[<Element 'CD' at 0x7fc0a22c1778>]
>>> e.findall('DATA')
[]
错误的骇客级别...
我找到了解决方案,我只需要首先读取该值,将其转换为整数,加1并替换该值即可将其再次转换为字符串:
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
newTimes = int(root[0][7].text) + 1
root[1][6].text = str(newTimes)
tree.write('test.xml')
就这样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.