【发布时间】:2020-12-07 03:33:15
【问题描述】:
我试图反序列化这种从技术上讲不是列表但行为类似的 xml 列表样式:
<list>
<id-00001>
<name type="string">Pedro</name>
<age type="number">37</age>
</id-00001>
<id-00002>
<name type="string">Alex</name>
<age type="number">30</age>
</id-00002>
<list>
“列表”上的项目数是可变的,只会增加id-0000x 上的数字(x)。
问题是我想不出如何使用 serde 将其映射到 Rust 结构。
我正在尝试做这样的事情:
#[derive(Debug, Default, Deserialize)]
#[serde(rename = "list")]
struct List {
people: Vec<Person>
}
#[derive(Debug, Default, Deserialize)]
struct Person {
name: String,
age: u8
}
但我不知道如何处理id-0000x 标签。
编辑: 这是我使用的依赖项:
[dependencies]
serde = { version = "1.0.117", features = ["derive"] }
serde-xml-rs = "0.4.0"
提前感谢您的帮助。 问候
【问题讨论】:
-
你需要的是解析器,而不是
serde。 -
为什么
age标签以prof结尾? -
能否请您指出一个解析器解决类似问题的示例?