Struct quick_xml::XmlWriter
[−]
[src]
pub struct XmlWriter<W: Write> { // some fields omitted }
Xml writer
Consumes a Write
and writes xml Events
use quick_xml::{AsStr, Element, Event, XmlReader, XmlWriter}; use quick_xml::Event::*; use std::io::Cursor; use std::iter; let xml = r#"<this_tag k1="v1" k2="v2"><child>text</child></this_tag>"#; let reader = XmlReader::from(xml).trim_text(true); let mut writer = XmlWriter::new(Cursor::new(Vec::new())); for r in reader { match r { Ok(Event::Start(ref e)) if e.name() == b"this_tag" => { // collect existing attributes let mut attrs = e.attributes() .map(|attr| attr.unwrap()).collect::<Vec<_>>(); // copy existing attributes, adds a new my-key="some value" attribute let mut elem = Element::new("my_elem").with_attributes(attrs); elem.push_attribute(b"my-key", "some value"); // writes the event to the writer assert!(writer.write(Start(elem)).is_ok()); }, Ok(Event::End(ref e)) if e.name() == b"this_tag" => { assert!(writer.write(End(Element::new("my_elem"))).is_ok()); }, Ok(e) => assert!(writer.write(e).is_ok()), Err((e, pos)) => panic!("{:?} at position {}", e, pos), } } let result = writer.into_inner().into_inner(); let expected = r#"<my_elem k1="v1" k2="v2" my-key="some value"><child>text</child></my_elem>"#; assert_eq!(result, expected.as_bytes());
Methods
impl<W: Write> XmlWriter<W>
[src]
fn new(inner: W) -> XmlWriter<W>
Creates a XmlWriter from a generic Write
fn into_inner(self) -> W
Consumes this XmlWriter
, returning the underlying writer.
fn write(&mut self, event: Event) -> Result<()>
Writes the given event to the underlying writer.
Trait Implementations
impl<W: Clone + Write> Clone for XmlWriter<W>
[src]
fn clone(&self) -> XmlWriter<W>
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more