gpt4 book ai didi

xml - 解析文件返回错误 "thread ' main' paniced"

转载 作者:行者123 更新时间:2023-11-29 08:28:26 25 4
gpt4 key购买 nike

我正在为 serde-xml-rs 苦苦挣扎,希望有人能帮助我。我已经能够从下面的示例 XML 中解析出单个“宠物”。但是,当我尝试解析“宠物”下有两个“宠物”条目的文件时,如下图所示,我收到错误消息“线程‘main’在‘调用Result::unwrap()时 panic ”在 Err 值上:Error(Custom("missing field species"), State { next_error: None, backtrace: Some(stack backtrace:..."

对 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);
}

关于xml - 解析文件返回错误 "thread ' main' paniced",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57830005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com