所以我有一个 XML,其中有一行:
<factor>1.2</factor>
这一行在我的 XML 中出现了两次。
我想更改两行的文本,以便它们两者更改为:
<factor>0.5</factor>
我的代码如下:
import xml.etree.ElementTree as ET
xml_tree = ET.parse(TestXML.xml)
root = xml_tree.getroot()
root.find(".//{*}factor").text = "0.5"
ET.tostring(root)
现在这会更改我的 XML 中的第一个因子行,但不会更改第二个因子行。
我尝试过做
root.findall(".//{*}factor").text = "0.5"
但我收到错误消息
AttributeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_5072\1499665917.py in <module>
3 xml_tree = ET.parse(TestXML.xml)
4 root = xml_tree.getroot()
----> 5 root.findall(".//{*}factor").text = "0.5"
6 ET.tostring(root)
AttributeError: 'list' object has no attribute 'text'
我想知道我是否必须创建一个循环才能做到这一点,因为 findall 不起作用? 任何建议将不胜感激。
我希望能够对任何变量执行此操作。所以我有一条与出生日期相对应的行。但该行出现了 10 次,所以我想更改所有 10 行,例如
尝试类似的事情
for factor in root.findall(".//{*}factor"):
factor.text = "0.5"
看看它是否有效。如果是这样,您可以将
factor
替换为任何其他元素名称。