繁体   English   中英

Python 如何在对象内序列化 xml 对象

Python how to serialize xml objects within objects

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试将 python object 序列化为 xml。 如果我使用 dict2xml package 它有点工作。 object 中的大多数字段都序列化为 xml 但我在 ZA8CFDE63311C4B66 中也有一个 object 没有。 它也没有放置主要标签“人”。

我的对象:

@dataclass
class Person:
    first_name: str
    last_name: str
    address: Address
    
@dataclass
class Address:
    line1: str
    city: str
    state: str
    zip: str

返回 XML:

<address>Address(line1='line1', city='city1', state='state1', zip='12345')</address>
<first_name>firstname</first_name>
<last_name>lastname</last_name>

代码:

dict2xml(person.__dict__)  # <-- person is instantiated Person with data

希望它返回:

<Person>
    <address>
        <line1>line1</line1>
        <city>city1</city>
        <state>state1</state>
        <zip>12345</zip>
    </address>
    <first_name>firstname</first_name>
    <last_name>lastname</last_name>
</Person>

关于如何将对象转换为所需的 xml 格式的想法?

1 个回复

dict2xml模块似乎没有提供任何方法来定义它应该如何将您的 class 对象转换为字典。 因此,您必须自己在各个级别执行此操作,以便传递给模块的内容仅包含标准 Python 字典和列表。

此外,要获取外部<Person>标记,您可以使用可选的wrap参数。 或者,您可以使用键Person创建一个外部 dict,以从数据本身获取该级别。

以下是获得您想要的 output 的两种方法:

from dataclasses import dataclass
import dict2xml as dict2xml

@dataclass
class Address:
    line1: str
    city: str
    state: str
    zip: str

@dataclass
class Person:
    first_name: str
    last_name: str
    address: Address


person = Person("firstname", "lastname", Address("line1", "city1", "state1", "12345"))

pd = person.__dict__.copy()
pd['address'] = pd['address'].__dict__

print(dict2xml.dict2xml(pd, wrap="Person"))
# OR: print(dict2xml.dict2xml({'Person': pd}))

结果:

<Person>
  <address>
    <city>city1</city>
    <line1>line1</line1>
    <state>state1</state>
    <zip>12345</zip>
  </address>
  <first_name>firstname</first_name>
  <last_name>lastname</last_name>
</Person>
3 如何将未知对象序列化为xml?

我正在实现自定义缓存机制。 一种缓存级别是即使服务器重新启动,也将缓存的对象序列化为xml以保存它。 我的问题是缓存类可以获取所有类型的对象。 该类的WriteMethod只是: 即使我像这样增强了write方法: 是否可以序列化所有进来的东西? 我知道将会有很多包含 ...

6 将多个对象序列化为XML

我尝试使用以下代码将我的对象序列化为xml文件,但是运行此代码时,列表values的最后一项将按列表计数进行序列化。 我要序列化列表中的每个项目? 我的代码有什么问题 谁能帮我 ? ...

7 如何在一个对象中序列化相同类型的对象?

我想将以下 JSON 片段结构化/转换为 Kotlin 数据类,以便我可以在进一步表示中使用它。 有点期望玩家列表和每个对象都是玩家,现在我发现很难序列化相同类型的这种情况。 可以做这样的事情: 甚至对每个 id 重复都感觉效率不高,甚至每个玩家的 id 都是动态的和不同的。 这里肯定漏掉了 ...

8 如何序列化XML C#中的内置对象?

我有一个复杂的类相互参照的系统。 我使用XML序列化保存我的DataGrid。 类: 所有类都按链工作:CompJobArray-&gt; Room-&gt; CompJob-&gt; Job。 Furhter,XAML和序列化: 最后-作业未保存: 详细说 ...

2015-03-12 19:34:44 0 67   c#/ xml/ wpf
10 如何将匿名类型的对象序列化为XML?

有没有可能的方法将动态创建的对象序列化为xml字符串? 我能够看一下XMLSerializer和DataContractSerializer,但XMLSerializer需要对象类型,而DataContractSerializer需要属性需要序列化。 出于绝望,我首先将对象转换为J ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM