我正试图编写一个程序,将XML文件读取到先前定义的Rust结构体中。
类似于这样:
类似于这样:
<?xml version="1.0" encoding="UTF-8"?>
<note name="title">
<body name="main_body">
<layer content_type="something" count="99">
<data id="13">
Datacontent
</data>
</layer>
</body>
</note>
变成这样:
struct Note {
name: String,
Body: Body
}
struct Body {
name: String,
layers: Vec<Layer>,
}
struct Layer {
content_type: String,
count: u8,
data: Vec<Data>,
}
struct Data {
id: u8,
// Datacontent?
}
我查看了xml-rs,因为它当前似乎是最受欢迎的XML库。由于我对Rust还很陌生,所以我很难弄清楚如何执行此任务。
serde_xml::from_str
,但代码使用了serde_xml_rs::deserialize
。(它们是否已经被编辑过?)在serde_xml_rs
0.3 中删除了deserialize
方法,但是在当前版本 0.4.0 中可以使用from_reader
解析字节(因为&[u8]
实现了Read
)。但由于 API 的变化以及其对一些正常的 XML 内容(如 Unicode BOM 或 DOCTYPE 声明)的敏感性,serde_xml_rs
看起来并不特别适合目前的需求。serde_xml
已经被废弃。 - pndc