我想要从一个XML属性中反序列化一个数字(例如)。
#[macro_use]
extern crate serde_derive;
extern crate serde;
extern crate serde_xml_rs as serde_xml;
#[derive(Deserialize, Debug)]
#[serde(rename = "objects")]
pub struct Objects {
pub foo: u32
}
fn main() {
let result_string = r#"<?xml version="1.0" encoding="UTF-8"?>
<objects foo="42"></objects>"#;
let deserialized: Objects= serde_xml::deserialize(result_string.as_bytes()).expect("Parse error!");
}
但是执行后,我得到了以下错误
thread 'main' panicked at 'Parse error!: invalid type: string "42", expected u32'
我知道#[serde(deserialize_with="...")]
注释,但是是否有更简单的方法,比如使用serde_xml_rs
包?
serde_xml_rs
不支持模式或 DTD。 - Peter HallOption<u32>
可以处理非数字情况。 - user25064