serde_xml_rs2/
lib.rs

1//!
2//!
3//! # Examples
4//!
5//! ```rust
6//! extern crate serde;
7//! extern crate serde_xml_rs;
8//!
9//! #[macro_use]
10//! extern crate serde_derive;
11//!
12//! use serde_xml_rs::{from_str, to_string};
13//!
14//! #[derive(Debug, Serialize, Deserialize, PartialEq)]
15//! struct Item {
16//!     name: String,
17//!     source: String,
18//! }
19//!
20//! fn main() {
21//!     let src = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
22//!                <Item><name>Banana</name><source>Store</source></Item>";
23//!     let should_be = Item {
24//!         name: "Banana".to_string(),
25//!         source: "Store".to_string(),
26//!     };
27//!
28//!     let item: Item = from_str(src).unwrap();
29//!     assert_eq!(item, should_be);
30//!
31//!     let reserialized_item = to_string(&item).unwrap();
32//!     assert_eq!(src, reserialized_item);
33//! }
34//! ```
35
36
37#[macro_use]
38extern crate error_chain;
39#[macro_use]
40extern crate log;
41#[macro_use]
42extern crate serde;
43extern crate xml;
44
45#[cfg(test)]
46#[macro_use]
47extern crate serde_derive;
48
49#[macro_use]
50mod error;
51pub mod de;
52pub mod ser;
53
54pub use error::{Error, ErrorKind};
55pub use xml::reader::{EventReader, ParserConfig};
56pub use ser::{to_string, to_string_with_namespaces, to_writer, Serializer};
57pub use de::{from_reader, from_str, Deserializer};
58
59use serde::ser::SerializeMap;
60
61/// Helper function for serializing lists of primitives as <name>item<name>
62pub fn wrap_primitives<T: serde::ser::Serialize, S: serde::ser::Serializer>(
63    items: &Vec<T>,
64    serializer: S,
65    name: &'static str,
66) -> Result<S::Ok, S::Error> {
67    let mut map = serializer.serialize_map(None)?;
68    for ref item in items {
69        map.serialize_key(name)?;
70        map.serialize_value(item)?;
71    }
72    map.end()
73}