我正在为serde-xml-rs苦苦挣扎,希望有人能帮助我。我已经能够从下面的示例XML中解析单个“ pet”。但是,当我尝试使用“ pets”下的两个“ pet”条目解析文件时,如下图所示,我在错误Result::unwrap()
上遇到错误“被“ Err
惊慌”的线程“主” :错误(自定义(“缺少字段species
”),状态{next_error:无,回溯:某些(堆栈回溯:...”
Rust和XML的争夺都是陌生的,所以我希望这是一个简单的错误或误解。指针最受赞赏。
extern crate serde;
extern crate serde_xml_rs;
#[macro_use]
extern crate serde_derive;
use serde_xml_rs::{from_str, to_string};
#[derive(Debug, Serialize, Deserialize, PartialEq)]
struct Pets {
#[serde(rename = "pet")]
pets: Vec<Pet>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
struct Pet {
species: String,
name: String,
}
fn main() {
let src = r##"<?xml version="1.0"?>
<pets>
<pet>
<species>cat</species>
<name>Leroy</name>
</pet>
<pet>
<species>dog</species>
<name>Rowdy</name>
</pet>
</pets>
"##;
let pet: Pet = from_str(&src).unwrap();
//println!("{:#?}",pet);
}
答案 0 :(得分:1)
这确实是一个非常简单的错误。您只需要使用Pets
类型而不是Pet
:
fn main() {
...
let pets: Pets = from_str(&src).unwrap();
println!("{:#?}", pets);
}