Xml 属性错误:';列表';对象没有属性';国际热核实验堆&x27;
当通过Xml 属性错误:';列表';对象没有属性';国际热核实验堆&x27;,xml,python-3.x,serialization,Xml,Python 3.x,Serialization,当通过et.tostring()返回列表时,此代码生成以下错误“AttributeError:'list'对象没有属性'iter'。我将xml.etree.ElementTree导入为et 我尝试过使用et.tostringlist(),但在其他地方找不到解决问题的方法 import xml.etree.ElementTree as et class SerializerFactory: def serialize_all(self, format, member_list):
et.tostring()
返回列表时,此代码生成以下错误“AttributeError:'list'对象没有属性'iter'。我将xml.etree.ElementTree导入为et
我尝试过使用et.tostringlist()
,但在其他地方找不到解决问题的方法
import xml.etree.ElementTree as et
class SerializerFactory:
def serialize_all(self, format, member_list):
if format == 'JSON':
serialize = JsonSerializer(member_list)
serialize.start_all_objects()
return serialize
elif format == 'XML':
serialize = XmlSerializer(member_list)
serialize.start_all_objects()
return serialize
else:
raise ValueError("Format must be 'JSON' or 'XML'.")
def serialize_one(self, format, index, member_list):
if format == 'JSON':
return JsonSerializer(member_list).start_one_object(index)
elif format == 'XML':
return XmlSerializer(member_list).start_one_object(index)
else:
raise ValueError("Format must be 'JSON' or 'XML'.")
class XmlSerializer:
def __init__(self, member_list):
self.member_list = member_list
self.serialize_list = [] * member_list.size
def start_all_objects(self):
for i in range(self.member_list.size):
member = self.member_list[i]
number = member.mem_num
l_name = member.l_name
f_name = member.f_name
mem_type = member.mem_type
mem_list = et.Element({'Number': number, 'Last Name': l_name,
'First Name': f_name, 'Membership Type': mem_type})
self.serialize_list.append(mem_list)
def start_one_object(self, index):
member = self.member_list[index]
number = member.mem_num
l_name = member.l_name
f_name = member.f_name
mem_type = member.mem_type
mem_list = et.Element({'Number': number, 'Last Name': l_name,
'First Name': f_name, 'Membership Type': mem_type})
self.serialize_list.append(mem_list)
def to_str(self):
return et.tostring(self.serialize_list, encoding='unicode')
factory = MemberSerializer.SerializerFactory()
xml = factory.serialize_all('XML', mem_list)
print(xml.to_str())
我想用xml返回一个完整的列表,不确定这是否可行,但这似乎是合理的。这是我收到的错误消息
Traceback (most recent call last):
File "C:/Users/Nate Dawg/PycharmProjects/Membership/Test.py", line 36, in <module>
print(xml.to_str())
File "C:\Users\Nate Dawg\PycharmProjects\Membership\MemberSerializer.py", line 89, in to_str
return et.tostring(self.serialize_list, encoding='unicode')
File "C:\Users\Nate Dawg\AppData\Local\Programs\Python\Python36-32\lib\xml\etree\ElementTree.py", line 1135, in tostring
short_empty_elements=short_empty_elements)
File "C:\Users\Nate Dawg\AppData\Local\Programs\Python\Python36-32\lib\xml\etree\ElementTree.py", line 773, in write
qnames, namespaces = _namespaces(self._root, default_namespace)
File "C:\Users\Nate Dawg\AppData\Local\Programs\Python\Python36-32\lib\xml\etree\ElementTree.py", line 876, in _namespaces
for elem in elem.iter():
AttributeError: 'list' object has no attribute 'iter'
回溯(最近一次呼叫最后一次):
文件“C:/Users/Nate Dawg/PycharmProjects/Membership/Test.py”,第36行,在
打印(xml.to_str())
文件“C:\Users\Nate Dawg\PycharmProjects\Membership\MemberSerializer.py”,第89行,在to_str中
返回et.tostring(self.serialize_list,encoding='unicode')
文件“C:\Users\Nate Dawg\AppData\Local\Programs\Python\Python36-32\lib\xml\etree\ElementTree.py”,第1135行,在tostring中
short_empty_elements=short_empty_elements)
文件“C:\Users\Nate Dawg\AppData\Local\Programs\Python\Python36-32\lib\xml\etree\ElementTree.py”,第773行,处于写入状态
qnames,namespaces=_名称空间(self._root,默认_名称空间)
文件“C:\Users\Nate Dawg\AppData\Local\Programs\Python\Python36-32\lib\xml\etree\ElementTree.py”,第876行,在_名称空间中
对于elem.iter()中的elem:
AttributeError:“list”对象没有属性“iter”
只需将用于元素中的el
?只需将用于元素中的el
?