У меня есть 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 childelem. Я напечатал свойства каждого объекта после создания каждого объекта. Там я вижу, что каждый объект имеет разные значения свойств.
Но после этого, когда я пытаюсь извлечь каждый объект из списка в цикле 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, может кто-нибудь объяснить, что это не так? Почему в поиске для цикла только последний 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'}
@@@@@@@@@@@@@@@@@@@@@@@@@@
Вы можете указать код для методов заполнения и getProps здесь? – gravetii
Можете ли вы показать результат? – poke
добавлен код для заполнения и getProps также добавил вывод – tintin