1use std::borrow::Cow;
2use std::io::Write;
3use xml::writer::{EventWriter, XmlEvent, Result};
4
5use xml::attribute::Attribute;
6use xml::namespace::Namespace;
7
8pub fn write_text_element<W: Write>( w: &mut EventWriter<W>, name: &str, text: &str, attributes: &Vec<Attribute>) -> Result<()>
9{
10 write_start_element(w, name, attributes)?;
11
12 w.write(XmlEvent::Characters {
13 0: text
14 })?;
15
16 write_end_element(w, name)?;
17
18 Ok(())
19}
20
21pub fn write_vec_element<W: Write, T: std::fmt::Display>( w: &mut EventWriter<W>, name: &str, vec: &Vec<T>, attributes: &Vec<Attribute>) -> Result<()>
22{
23 let text = vec.iter().map(|idx| idx.to_string()).collect::<Vec<_>>().join(" ");
24 write_text_element(w, name, &text, attributes)?;
25
26 Ok(())
27}
28
29pub fn write_start_element<W: Write>( w: &mut EventWriter<W>, name: &str, attributes: &Vec<Attribute>) -> Result<()>
30{
31 w.write(XmlEvent::StartElement {
32 name: name.into(),
33 attributes: Cow::Borrowed(attributes),
34 namespace: Cow::Owned(Namespace::empty())
35 })?;
36 Ok(())
37}
38
39pub fn write_end_element<W: Write>( w: &mut EventWriter<W>, name: &str) -> Result<()>
40{
41 w.write(XmlEvent::EndElement {
42 name: Some(name.into()),
43 })?;
44 Ok(())
45}