繁体   English   中英

如何使用Python查找,读取和替换XML文件中的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM