Как десериализовать число из атрибута XML, используя serde? - PullRequest
0 голосов
/ 28 июня 2018

Я хочу десериализовать число (например, u32) из атрибута 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 ящик)?

1 Ответ

0 голосов
/ 30 августа 2018

Не использовать 0.2.1. Добавить в Cargo.toml:

serde-xml-rs = { git= "https://github.com/RReverser/serde-xml-rs.git"}

Использование serde-xml-rs из master исправляет эту проблему.

...