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