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

时间:2015-10-13 00:19:10

标签: python xml elementtree

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

问题似乎是self.PreFlopCallPower只是一个字符串而不是elementTree对象,即使我的示例与python etree文档中给出的示例非常相似:self.PreFlopCallPower = entry.find(&#39) ; 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')

1 个答案:

答案 0 :(得分:0)

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

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

删除.text以存储节点

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