使用 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')
以下代码报错: 第 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')