是的,Rust 的 serde
庫可以支持 XML。為了實現 XML 支持,你需要使用一個額外的庫,如 serde_xml_rs
或 quick-xml
。這些庫可以幫助你在序列化和反序列化 XML 數據時與 serde
配合使用。
以下是使用 serde_xml_rs
庫將一個結構體序列化為 XML 的示例:
首先,添加依賴項到你的 Cargo.toml
文件:
[dependencies]
serde = "1.0"
serde_xml_rs = "0.5"
然后,定義一個結構體,并使用 #[derive(Serialize)]
和 #[derive(Deserialize)]
屬性:
use serde::Serialize;
use serde_xml_rs::from_str;
#[derive(Serialize, Deserialize)]
struct Person {
name: String,
age: u32,
}
現在,你可以使用 from_str
函數將 XML 字符串反序列化為 Person
結構體實例:
fn main() {
let xml = r#"
<person>
<name>John Doe</name>
<age>30</age>
</person>
"#;
let person: Person = from_str(xml).unwrap();
println!("{:?}", person);
}
這將輸出:
Person { name: "John Doe", age: 30 }
類似地,你可以使用 to_string
方法將 Person
結構體實例序列化為 XML 字符串:
fn main() {
let person = Person {
name: "John Doe".to_string(),
age: 30,
};
let xml = to_string(&person).unwrap();
println!("{}", xml);
}
這將輸出:
<person><name>John Doe</name><age>30</age></person>
請注意,serde_xml_rs
庫可能不是最新的,你可以查看 GitHub 倉庫 以獲取最新版本和更多信息。