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}