1个不稳定版本
使用旧的Rust 2015
0.3.0 | 2020年5月31日 |
---|
#11 in #宏使用
50KB
1K SLoC
serde-xml-rs
基于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