解析文件返回错误“线程'main'惊慌失措”

时间:2019-09-07 01:25:05

标签: xml rust serde

我正在为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);
}

1 个答案:

答案 0 :(得分:1)

这确实是一个非常简单的错误。您只需要使用Pets类型而不是Pet

fn main() {
    ...

    let pets: Pets = from_str(&src).unwrap();
    println!("{:#?}", pets);
}