#反序列化器 #derive-debug #xml-rs #serde-derive #字符串 #名称 #宏使用

serde-xml-rs2

基于xml-rs的Serde反序列化器(兼容0.9+)

1个不稳定版本

使用旧的Rust 2015

0.3.0 2020年5月31日

#11 in #宏使用

MIT许可证

50KB
1K SLoC

serde-xml-rs

Build Status

基于xml-rs的Serde反序列化器(兼容0.9+)

使用方法

在实现了 std::io::Read 的任何类型上使用 serde_xml_rs::deserialize(...)

#[macro_use] extern crate serde_derive;
extern crate serde_xml_rs;

use serde_xml_rs::deserialize;

#[derive(Debug, Deserialize)]
struct Item {
    pub name: String,
    pub source: String
}

#[derive(Debug, Deserialize)]
struct Project {
    pub name: String,

    #[serde(rename = "Item", default)]
    pub items: Vec<Item>
}

#[test]
fn it_works() {
    let s = r##"
        <Project name="my_project">
            <Item name="hello" source="world.rs" />
        </Project>
    "##;
    let project: Project = deserialize(s.as_bytes()).unwrap();
    println!("{:#?}", project);
}

或者,您可以使用 serde_xml_rs::Deserializer 从预配置的 xml_rs::EventReader 创建反序列化器。

解析表示

反序列化器尽量做到直观易懂。

然而,在某些边缘情况下,您可能会遇到意外的错误,因此最好查看 tests 以了解预期。

依赖项

~3–4.5MB
~91K SLoC