解析文件 returns 错误 "thread 'main' panicked"
Parsing file returns error "thread 'main' panicked"
我正在为 serde-xml-rs 苦苦挣扎,希望有人能帮助我。我已经能够从下面的示例 XML 中解析出单个 "pet"。但是,当我尝试解析 "pets" 下有两个 "pet" 条目的文件时,如下图所示,我收到错误 "thread 'main' panicked at 'called Result::unwrap()
on an Err
value: Error(Custom(" 缺少字段 species
"), State { next_error:None,回溯:一些(堆栈回溯:...“
对 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);
}
确实是一个非常简单的错误。您只需要使用 Pets
类型而不是 Pet
:
fn main() {
...
let pets: Pets = from_str(&src).unwrap();
println!("{:#?}", pets);
}
我正在为 serde-xml-rs 苦苦挣扎,希望有人能帮助我。我已经能够从下面的示例 XML 中解析出单个 "pet"。但是,当我尝试解析 "pets" 下有两个 "pet" 条目的文件时,如下图所示,我收到错误 "thread 'main' panicked at 'called Result::unwrap()
on an Err
value: Error(Custom(" 缺少字段 species
"), State { next_error:None,回溯:一些(堆栈回溯:...“
对 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);
}
确实是一个非常简单的错误。您只需要使用 Pets
类型而不是 Pet
:
fn main() {
...
let pets: Pets = from_str(&src).unwrap();
println!("{:#?}", pets);
}