使用 ElementTree 修改 XML:'str' 对象没有属性 'text'

Modifying XML with ElementTree: 'str' object has no attribute 'text'

以下代码报错: 第 19 行,在 modifyXML 中 self.PreFlopCallPower.text = 'NEW VALUE' AttributeError: 'str' 对象没有属性 'text'

问题似乎是 self.PreFlopCallPower 只是一个字符串而不是 elementTree 对象,即使我的示例与 python etree 文档中给出的示例非常相似:self.PreFlopCallPower = entry.find('PreFlopCallPower').文本。我怎样才能解决这个问题?我看不出我在做什么与此处列出的更新示例不同:https://docs.python.org/2/library/xml.etree.elementtree.html

import xml.etree.ElementTree as xml


class XMLHandler(object):
    def __init__(self,StrategyName):
        self.readXML(StrategyName)
        self.modifyXML()

    def readXML(self, StrategyName):
        self.Template = StrategyName
        self.tree = xml.parse('strategies.xml')
        self.root = self.tree.getroot()

        for entry in self.root.findall('Strategy'):
            if entry.get('name') == StrategyName:
                self.PreFlopCallPower = entry.find('PreFlopCallPower').text

    def modifyXML (self):
        self.PreFlopCallPower.text = 'NEW VALUE' # ---ERROR OCCURS HERE---
        self.PreFlopCallPower.set('updated', 'yes')
        self.tree.write('output.xml')


X=XMLHandler('Strategy305PP')

在这一行中,您要存储节点的 text(因此有一个 str):

self.PreFlopCallPower = entry.find('PreFlopCallPower').text

删除 .text 以存储 node 本身:

self.PreFlopCallPower = entry.find('PreFlopCallPower')