5 releases
0.2.3 | Nov 7, 2022 |
---|---|
0.2.2 | Sep 12, 2022 |
0.2.1 | Sep 12, 2022 |
0.2.0 | Sep 9, 2022 |
0.0.0 | Jul 4, 2022 |
#805 in Asynchronous
34KB
808 lines
async-xml
A crate based on tokio
and quick-xml
for deserializing XML data asynchronously. Includes derive-macros for deserializing things.
Example
use async_xml::from_str;
use async_xml_derive::FromXml;
#[tokio::main]
async fn main() {
let report: Report = from_str(r#"<report id="b"><data>text</data></report>"#)
.await
.unwrap();
println!("deserialized: {:?}", report);
// prints "Report { id: "b", data: Some(ReportData { data: "text" }) }"
}
#[derive(Debug, PartialEq, FromXml)]
#[async_xml(rename = "report")]
pub struct Report {
#[async_xml(attribute)]
pub id: String,
#[async_xml(child)]
pub data: Option<ReportData>,
}
#[derive(Debug, PartialEq, FromXml)]
#[async_xml(rename = "data")]
pub struct ReportData {
#[async_xml(value)]
pub data: String,
}
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the fork by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~7–14MB
~210K SLoC