我有以下类型的 xml:
<?xml version="1.0" encoding="UTF-8"?>
<RootNode>
<childElem>
<prop1 type="int">1</prop1>
<prop2 type="int">2</prop2>
</childelem>
<childElem>
<prop1 type="int">3</prop1>
<prop2 type="int">4</prop2>
</childelem>
<childElem>
<prop1 type="int">5</prop1>
<prop2 type="int">6</prop2>
</childelem>
<childElem>
<prop1 type="int">7</prop1>
<prop2 type="int">8</prop2>
</childelem>
</RootNode>
我已经定义了将所有子元素存储为类的不同实例的类。我正在尝试将对象附加到列表中,然后进行检索。
在这个 xml 中总共有 4 个子元素。创建每个对象后,我已经打印了每个对象的属性。在那里我看到每个对象都有不同的属性值。
但是在那之后,当我试图从 for 循环中的列表中检索每个对象并打印每个检索到的对象的属性时,它会打印最后一个 childelem 对象四次。
这是代码片段
def getObjects(self,xmlStr,elem):
objList = []
root = ET.fromstring(xmlStr)
rootNode = root.find(elem)
for obj in rootNode.findall('childElem'):
myObj = Obj()
for props in obj:
myObj.populate(props.tag,props.text)
print(">>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<")
print(myObj.getProps())
print(">>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<")
objList.append(myObj)
for obj1 in objList:
print(obj1.getProps())
print("@@@@@@@@@@@@@@@@@@@@@@@@@@")
return objList
class Obj:
properties = {}
def populate(self,name,value):
self.properties[name] = value
def getProps(self)
return self.properties
我是 Python 新手,有人能解释一下哪里出了问题吗?为什么在检索 for 循环中只有最后一个 childElem 来了四次?我该如何纠正错误?
这是输出
>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<
{'prop1': '1', 'prop2': '2'}
>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<
{'prop1': '3', 'prop2': '4'}
>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<
{'prop1': '5', 'prop2': '6'}
>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<
{'prop1': '7', 'prop2': '8'}
>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<
{'prop1': '7', 'prop2': '8'}
@@@@@@@@@@@@@@@@@@@@@@@@@@
{'prop1': '7', 'prop2': '8'}
@@@@@@@@@@@@@@@@@@@@@@@@@@
{'prop1': '7', 'prop2': '8'}
@@@@@@@@@@@@@@@@@@@@@@@@@@
{'prop1': '7', 'prop2': '8'}
@@@@@@@@@@@@@@@@@@@@@@@@@@