docx_rs/reader/
web_settings.rs1use super::*;
2use crate::reader::{FromXML, ReaderError};
3use std::io::Read;
4
5use std::str::FromStr;
6
7impl FromXML for WebSettings {
8 fn from_xml<R: Read>(reader: R) -> Result<Self, ReaderError> {
9 let mut parser = EventReader::new(reader);
10 let mut settings = Self::default();
11 loop {
12 let e = parser.next();
13 match e {
14 Ok(XmlEvent::StartElement {
15 attributes, name, ..
16 }) => {
17 let e = XMLElement::from_str(&name.local_name).unwrap();
18 if let XMLElement::Div = e {
19 if let Ok(div) = Div::read(&mut parser, &attributes) {
20 settings.divs.push(div);
21 }
22 }
23 }
24 Ok(XmlEvent::EndElement { name, .. }) => {
25 let e = XMLElement::from_str(&name.local_name).unwrap();
26 if let XMLElement::WebSettings = e {
27 break;
28 }
29 }
30 Ok(XmlEvent::EndDocument { .. }) => break,
31 Err(_) => return Err(ReaderError::XMLReadError),
32 _ => {}
33 }
34 }
35 Ok(settings)
36 }
37}