1#![allow(unused_variables)]
5#![allow(unused_imports)]
6#![allow(clippy::single_match)]
7#![allow(clippy::match_single_binding)]
8#![allow(clippy::manual_is_multiple_of)]
9
10use super::generated::*;
11pub use ooxml_xml::{FromXml, ParseError};
12#[cfg(feature = "extra-children")]
13use ooxml_xml::{PositionedNode, RawXmlElement, RawXmlNode};
14use quick_xml::Reader;
15use quick_xml::events::{BytesStart, Event};
16use std::io::BufRead;
17
18#[allow(dead_code)]
19fn skip_element<R: BufRead>(reader: &mut Reader<R>) -> Result<(), ParseError> {
21 let mut depth = 1u32;
22 let mut buf = Vec::new();
23 loop {
24 match reader.read_event_into(&mut buf)? {
25 Event::Start(_) => depth += 1,
26 Event::End(_) => {
27 depth -= 1;
28 if depth == 0 {
29 break;
30 }
31 }
32 Event::Eof => break,
33 _ => {}
34 }
35 buf.clear();
36 }
37 Ok(())
38}
39
40#[allow(dead_code)]
41fn read_text_content<R: BufRead>(reader: &mut Reader<R>) -> Result<String, ParseError> {
43 let mut text = String::new();
44 let mut buf = Vec::new();
45 loop {
46 match reader.read_event_into(&mut buf)? {
47 Event::Text(e) => text.push_str(&e.decode().unwrap_or_default()),
48 Event::CData(e) => text.push_str(&e.decode().unwrap_or_default()),
49 Event::GeneralRef(e) => {
50 let name = e.decode().unwrap_or_default();
51 if let Some(s) = quick_xml::escape::resolve_xml_entity(&name) {
52 text.push_str(s);
53 }
54 }
55 Event::End(_) => break,
56 Event::Eof => break,
57 _ => {}
58 }
59 buf.clear();
60 }
61 Ok(text)
62}
63
64#[allow(dead_code)]
65fn decode_hex(s: &str) -> Option<Vec<u8>> {
67 let s = s.trim();
68 if s.len() % 2 != 0 {
69 return None;
70 }
71 (0..s.len())
72 .step_by(2)
73 .map(|i| u8::from_str_radix(&s[i..i + 2], 16).ok())
74 .collect()
75}
76
77#[allow(dead_code)]
78fn decode_base64(s: &str) -> Option<Vec<u8>> {
80 use base64::Engine;
81 base64::engine::general_purpose::STANDARD
82 .decode(s.trim())
83 .ok()
84}
85
86impl FromXml for AutoFilter {
87 fn from_xml<R: BufRead>(
88 reader: &mut Reader<R>,
89 start_tag: &BytesStart,
90 is_empty: bool,
91 ) -> Result<Self, ParseError> {
92 #[cfg(feature = "sml-filtering")]
93 let mut f_reference = None;
94 #[cfg(feature = "sml-filtering")]
95 let mut f_filter_column = Vec::new();
96 #[cfg(feature = "sml-filtering")]
97 let mut f_sort_state = None;
98 #[cfg(feature = "sml-extensions")]
99 let mut f_extension_list = None;
100 #[cfg(feature = "extra-attrs")]
101 let mut extra_attrs = std::collections::HashMap::new();
102 #[cfg(feature = "extra-children")]
103 let mut extra_children = Vec::new();
104 #[cfg(feature = "extra-children")]
105 let mut child_idx: usize = 0;
106
107 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
109 let val = String::from_utf8_lossy(&attr.value);
110 match attr.key.local_name().as_ref() {
111 #[cfg(feature = "sml-filtering")]
112 b"ref" => {
113 f_reference = Some(val.into_owned());
114 }
115 #[cfg(feature = "extra-attrs")]
116 unknown => {
117 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
118 extra_attrs.insert(key, val.into_owned());
119 }
120 #[cfg(not(feature = "extra-attrs"))]
121 _ => {}
122 }
123 }
124
125 if !is_empty {
127 let mut buf = Vec::new();
128 loop {
129 match reader.read_event_into(&mut buf)? {
130 Event::Start(e) => {
131 match e.local_name().as_ref() {
132 #[cfg(feature = "sml-filtering")]
133 b"filterColumn" => {
134 f_filter_column.push(FilterColumn::from_xml(reader, &e, false)?);
135 #[cfg(feature = "extra-children")]
136 {
137 child_idx += 1;
138 }
139 }
140 #[cfg(feature = "sml-filtering")]
141 b"sortState" => {
142 f_sort_state =
143 Some(Box::new(SortState::from_xml(reader, &e, false)?));
144 #[cfg(feature = "extra-children")]
145 {
146 child_idx += 1;
147 }
148 }
149 #[cfg(feature = "sml-extensions")]
150 b"extLst" => {
151 f_extension_list =
152 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
153 #[cfg(feature = "extra-children")]
154 {
155 child_idx += 1;
156 }
157 }
158 #[cfg(feature = "extra-children")]
159 _ => {
160 let elem = RawXmlElement::from_reader(reader, &e)?;
162 extra_children.push(PositionedNode::new(
163 child_idx,
164 RawXmlNode::Element(elem),
165 ));
166 child_idx += 1;
167 }
168 #[cfg(not(feature = "extra-children"))]
169 _ => {
170 skip_element(reader)?;
172 }
173 }
174 }
175 Event::Empty(e) => {
176 match e.local_name().as_ref() {
177 #[cfg(feature = "sml-filtering")]
178 b"filterColumn" => {
179 f_filter_column.push(FilterColumn::from_xml(reader, &e, true)?);
180 #[cfg(feature = "extra-children")]
181 {
182 child_idx += 1;
183 }
184 }
185 #[cfg(feature = "sml-filtering")]
186 b"sortState" => {
187 f_sort_state =
188 Some(Box::new(SortState::from_xml(reader, &e, true)?));
189 #[cfg(feature = "extra-children")]
190 {
191 child_idx += 1;
192 }
193 }
194 #[cfg(feature = "sml-extensions")]
195 b"extLst" => {
196 f_extension_list =
197 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
198 #[cfg(feature = "extra-children")]
199 {
200 child_idx += 1;
201 }
202 }
203 #[cfg(feature = "extra-children")]
204 _ => {
205 let elem = RawXmlElement::from_empty(&e);
207 extra_children.push(PositionedNode::new(
208 child_idx,
209 RawXmlNode::Element(elem),
210 ));
211 child_idx += 1;
212 }
213 #[cfg(not(feature = "extra-children"))]
214 _ => {}
215 }
216 }
217 Event::End(_) => break,
218 Event::Eof => break,
219 _ => {}
220 }
221 buf.clear();
222 }
223 }
224
225 Ok(Self {
226 #[cfg(feature = "sml-filtering")]
227 reference: f_reference,
228 #[cfg(feature = "sml-filtering")]
229 filter_column: f_filter_column,
230 #[cfg(feature = "sml-filtering")]
231 sort_state: f_sort_state,
232 #[cfg(feature = "sml-extensions")]
233 extension_list: f_extension_list,
234 #[cfg(feature = "extra-attrs")]
235 extra_attrs,
236 #[cfg(feature = "extra-children")]
237 extra_children,
238 })
239 }
240}
241
242impl FromXml for FilterColumn {
243 fn from_xml<R: BufRead>(
244 reader: &mut Reader<R>,
245 start_tag: &BytesStart,
246 is_empty: bool,
247 ) -> Result<Self, ParseError> {
248 #[cfg(feature = "sml-filtering")]
249 let mut f_column_id: Option<u32> = None;
250 #[cfg(feature = "sml-filtering")]
251 let mut f_hidden_button = None;
252 #[cfg(feature = "sml-filtering")]
253 let mut f_show_button = None;
254 #[cfg(feature = "sml-filtering")]
255 let mut f_filters = None;
256 #[cfg(feature = "sml-filtering")]
257 let mut f_top10 = None;
258 #[cfg(feature = "sml-filtering")]
259 let mut f_custom_filters = None;
260 #[cfg(feature = "sml-filtering")]
261 let mut f_dynamic_filter = None;
262 #[cfg(feature = "sml-filtering")]
263 let mut f_color_filter = None;
264 #[cfg(feature = "sml-filtering")]
265 let mut f_icon_filter = None;
266 #[cfg(feature = "sml-extensions")]
267 let mut f_extension_list = None;
268 #[cfg(feature = "extra-attrs")]
269 let mut extra_attrs = std::collections::HashMap::new();
270 #[cfg(feature = "extra-children")]
271 let mut extra_children = Vec::new();
272 #[cfg(feature = "extra-children")]
273 let mut child_idx: usize = 0;
274
275 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
277 let val = String::from_utf8_lossy(&attr.value);
278 match attr.key.local_name().as_ref() {
279 #[cfg(feature = "sml-filtering")]
280 b"colId" => {
281 f_column_id = val.parse().ok();
282 }
283 #[cfg(feature = "sml-filtering")]
284 b"hiddenButton" => {
285 f_hidden_button = Some(val == "true" || val == "1");
286 }
287 #[cfg(feature = "sml-filtering")]
288 b"showButton" => {
289 f_show_button = Some(val == "true" || val == "1");
290 }
291 #[cfg(feature = "extra-attrs")]
292 unknown => {
293 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
294 extra_attrs.insert(key, val.into_owned());
295 }
296 #[cfg(not(feature = "extra-attrs"))]
297 _ => {}
298 }
299 }
300
301 if !is_empty {
303 let mut buf = Vec::new();
304 loop {
305 match reader.read_event_into(&mut buf)? {
306 Event::Start(e) => {
307 match e.local_name().as_ref() {
308 #[cfg(feature = "sml-filtering")]
309 b"filters" => {
310 f_filters = Some(Box::new(Filters::from_xml(reader, &e, false)?));
311 #[cfg(feature = "extra-children")]
312 {
313 child_idx += 1;
314 }
315 }
316 #[cfg(feature = "sml-filtering")]
317 b"top10" => {
318 f_top10 = Some(Box::new(Top10Filter::from_xml(reader, &e, false)?));
319 #[cfg(feature = "extra-children")]
320 {
321 child_idx += 1;
322 }
323 }
324 #[cfg(feature = "sml-filtering")]
325 b"customFilters" => {
326 f_custom_filters =
327 Some(Box::new(CustomFilters::from_xml(reader, &e, false)?));
328 #[cfg(feature = "extra-children")]
329 {
330 child_idx += 1;
331 }
332 }
333 #[cfg(feature = "sml-filtering")]
334 b"dynamicFilter" => {
335 f_dynamic_filter =
336 Some(Box::new(DynamicFilter::from_xml(reader, &e, false)?));
337 #[cfg(feature = "extra-children")]
338 {
339 child_idx += 1;
340 }
341 }
342 #[cfg(feature = "sml-filtering")]
343 b"colorFilter" => {
344 f_color_filter =
345 Some(Box::new(ColorFilter::from_xml(reader, &e, false)?));
346 #[cfg(feature = "extra-children")]
347 {
348 child_idx += 1;
349 }
350 }
351 #[cfg(feature = "sml-filtering")]
352 b"iconFilter" => {
353 f_icon_filter =
354 Some(Box::new(IconFilter::from_xml(reader, &e, false)?));
355 #[cfg(feature = "extra-children")]
356 {
357 child_idx += 1;
358 }
359 }
360 #[cfg(feature = "sml-extensions")]
361 b"extLst" => {
362 f_extension_list =
363 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
364 #[cfg(feature = "extra-children")]
365 {
366 child_idx += 1;
367 }
368 }
369 #[cfg(feature = "extra-children")]
370 _ => {
371 let elem = RawXmlElement::from_reader(reader, &e)?;
373 extra_children.push(PositionedNode::new(
374 child_idx,
375 RawXmlNode::Element(elem),
376 ));
377 child_idx += 1;
378 }
379 #[cfg(not(feature = "extra-children"))]
380 _ => {
381 skip_element(reader)?;
383 }
384 }
385 }
386 Event::Empty(e) => {
387 match e.local_name().as_ref() {
388 #[cfg(feature = "sml-filtering")]
389 b"filters" => {
390 f_filters = Some(Box::new(Filters::from_xml(reader, &e, true)?));
391 #[cfg(feature = "extra-children")]
392 {
393 child_idx += 1;
394 }
395 }
396 #[cfg(feature = "sml-filtering")]
397 b"top10" => {
398 f_top10 = Some(Box::new(Top10Filter::from_xml(reader, &e, true)?));
399 #[cfg(feature = "extra-children")]
400 {
401 child_idx += 1;
402 }
403 }
404 #[cfg(feature = "sml-filtering")]
405 b"customFilters" => {
406 f_custom_filters =
407 Some(Box::new(CustomFilters::from_xml(reader, &e, true)?));
408 #[cfg(feature = "extra-children")]
409 {
410 child_idx += 1;
411 }
412 }
413 #[cfg(feature = "sml-filtering")]
414 b"dynamicFilter" => {
415 f_dynamic_filter =
416 Some(Box::new(DynamicFilter::from_xml(reader, &e, true)?));
417 #[cfg(feature = "extra-children")]
418 {
419 child_idx += 1;
420 }
421 }
422 #[cfg(feature = "sml-filtering")]
423 b"colorFilter" => {
424 f_color_filter =
425 Some(Box::new(ColorFilter::from_xml(reader, &e, true)?));
426 #[cfg(feature = "extra-children")]
427 {
428 child_idx += 1;
429 }
430 }
431 #[cfg(feature = "sml-filtering")]
432 b"iconFilter" => {
433 f_icon_filter =
434 Some(Box::new(IconFilter::from_xml(reader, &e, true)?));
435 #[cfg(feature = "extra-children")]
436 {
437 child_idx += 1;
438 }
439 }
440 #[cfg(feature = "sml-extensions")]
441 b"extLst" => {
442 f_extension_list =
443 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
444 #[cfg(feature = "extra-children")]
445 {
446 child_idx += 1;
447 }
448 }
449 #[cfg(feature = "extra-children")]
450 _ => {
451 let elem = RawXmlElement::from_empty(&e);
453 extra_children.push(PositionedNode::new(
454 child_idx,
455 RawXmlNode::Element(elem),
456 ));
457 child_idx += 1;
458 }
459 #[cfg(not(feature = "extra-children"))]
460 _ => {}
461 }
462 }
463 Event::End(_) => break,
464 Event::Eof => break,
465 _ => {}
466 }
467 buf.clear();
468 }
469 }
470
471 Ok(Self {
472 #[cfg(feature = "sml-filtering")]
473 column_id: f_column_id
474 .ok_or_else(|| ParseError::MissingAttribute("colId".to_string()))?,
475 #[cfg(feature = "sml-filtering")]
476 hidden_button: f_hidden_button,
477 #[cfg(feature = "sml-filtering")]
478 show_button: f_show_button,
479 #[cfg(feature = "sml-filtering")]
480 filters: f_filters,
481 #[cfg(feature = "sml-filtering")]
482 top10: f_top10,
483 #[cfg(feature = "sml-filtering")]
484 custom_filters: f_custom_filters,
485 #[cfg(feature = "sml-filtering")]
486 dynamic_filter: f_dynamic_filter,
487 #[cfg(feature = "sml-filtering")]
488 color_filter: f_color_filter,
489 #[cfg(feature = "sml-filtering")]
490 icon_filter: f_icon_filter,
491 #[cfg(feature = "sml-extensions")]
492 extension_list: f_extension_list,
493 #[cfg(feature = "extra-attrs")]
494 extra_attrs,
495 #[cfg(feature = "extra-children")]
496 extra_children,
497 })
498 }
499}
500
501impl FromXml for Filters {
502 fn from_xml<R: BufRead>(
503 reader: &mut Reader<R>,
504 start_tag: &BytesStart,
505 is_empty: bool,
506 ) -> Result<Self, ParseError> {
507 let mut f_blank = None;
508 let mut f_calendar_type = None;
509 let mut f_filter = Vec::new();
510 let mut f_date_group_item = Vec::new();
511 #[cfg(feature = "extra-attrs")]
512 let mut extra_attrs = std::collections::HashMap::new();
513 #[cfg(feature = "extra-children")]
514 let mut extra_children = Vec::new();
515 #[cfg(feature = "extra-children")]
516 let mut child_idx: usize = 0;
517
518 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
520 let val = String::from_utf8_lossy(&attr.value);
521 match attr.key.local_name().as_ref() {
522 b"blank" => {
523 f_blank = Some(val == "true" || val == "1");
524 }
525 b"calendarType" => {
526 f_calendar_type = val.parse().ok();
527 }
528 #[cfg(feature = "extra-attrs")]
529 unknown => {
530 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
531 extra_attrs.insert(key, val.into_owned());
532 }
533 #[cfg(not(feature = "extra-attrs"))]
534 _ => {}
535 }
536 }
537
538 if !is_empty {
540 let mut buf = Vec::new();
541 loop {
542 match reader.read_event_into(&mut buf)? {
543 Event::Start(e) => {
544 match e.local_name().as_ref() {
545 b"filter" => {
546 f_filter.push(Filter::from_xml(reader, &e, false)?);
547 #[cfg(feature = "extra-children")]
548 {
549 child_idx += 1;
550 }
551 }
552 b"dateGroupItem" => {
553 f_date_group_item.push(DateGroupItem::from_xml(reader, &e, false)?);
554 #[cfg(feature = "extra-children")]
555 {
556 child_idx += 1;
557 }
558 }
559 #[cfg(feature = "extra-children")]
560 _ => {
561 let elem = RawXmlElement::from_reader(reader, &e)?;
563 extra_children.push(PositionedNode::new(
564 child_idx,
565 RawXmlNode::Element(elem),
566 ));
567 child_idx += 1;
568 }
569 #[cfg(not(feature = "extra-children"))]
570 _ => {
571 skip_element(reader)?;
573 }
574 }
575 }
576 Event::Empty(e) => {
577 match e.local_name().as_ref() {
578 b"filter" => {
579 f_filter.push(Filter::from_xml(reader, &e, true)?);
580 #[cfg(feature = "extra-children")]
581 {
582 child_idx += 1;
583 }
584 }
585 b"dateGroupItem" => {
586 f_date_group_item.push(DateGroupItem::from_xml(reader, &e, true)?);
587 #[cfg(feature = "extra-children")]
588 {
589 child_idx += 1;
590 }
591 }
592 #[cfg(feature = "extra-children")]
593 _ => {
594 let elem = RawXmlElement::from_empty(&e);
596 extra_children.push(PositionedNode::new(
597 child_idx,
598 RawXmlNode::Element(elem),
599 ));
600 child_idx += 1;
601 }
602 #[cfg(not(feature = "extra-children"))]
603 _ => {}
604 }
605 }
606 Event::End(_) => break,
607 Event::Eof => break,
608 _ => {}
609 }
610 buf.clear();
611 }
612 }
613
614 Ok(Self {
615 blank: f_blank,
616 calendar_type: f_calendar_type,
617 filter: f_filter,
618 date_group_item: f_date_group_item,
619 #[cfg(feature = "extra-attrs")]
620 extra_attrs,
621 #[cfg(feature = "extra-children")]
622 extra_children,
623 })
624 }
625}
626
627impl FromXml for Filter {
628 fn from_xml<R: BufRead>(
629 reader: &mut Reader<R>,
630 start_tag: &BytesStart,
631 is_empty: bool,
632 ) -> Result<Self, ParseError> {
633 let mut f_value = None;
634 #[cfg(feature = "extra-attrs")]
635 let mut extra_attrs = std::collections::HashMap::new();
636
637 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
639 let val = String::from_utf8_lossy(&attr.value);
640 match attr.key.local_name().as_ref() {
641 b"val" => {
642 f_value = Some(val.into_owned());
643 }
644 #[cfg(feature = "extra-attrs")]
645 unknown => {
646 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
647 extra_attrs.insert(key, val.into_owned());
648 }
649 #[cfg(not(feature = "extra-attrs"))]
650 _ => {}
651 }
652 }
653
654 if !is_empty {
655 let mut buf = Vec::new();
656 loop {
657 match reader.read_event_into(&mut buf)? {
658 Event::End(_) => break,
659 Event::Eof => break,
660 _ => {}
661 }
662 buf.clear();
663 }
664 }
665
666 Ok(Self {
667 value: f_value,
668 #[cfg(feature = "extra-attrs")]
669 extra_attrs,
670 })
671 }
672}
673
674impl FromXml for CustomFilters {
675 fn from_xml<R: BufRead>(
676 reader: &mut Reader<R>,
677 start_tag: &BytesStart,
678 is_empty: bool,
679 ) -> Result<Self, ParseError> {
680 let mut f_and = None;
681 let mut f_custom_filter = Vec::new();
682 #[cfg(feature = "extra-attrs")]
683 let mut extra_attrs = std::collections::HashMap::new();
684 #[cfg(feature = "extra-children")]
685 let mut extra_children = Vec::new();
686 #[cfg(feature = "extra-children")]
687 let mut child_idx: usize = 0;
688
689 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
691 let val = String::from_utf8_lossy(&attr.value);
692 match attr.key.local_name().as_ref() {
693 b"and" => {
694 f_and = Some(val == "true" || val == "1");
695 }
696 #[cfg(feature = "extra-attrs")]
697 unknown => {
698 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
699 extra_attrs.insert(key, val.into_owned());
700 }
701 #[cfg(not(feature = "extra-attrs"))]
702 _ => {}
703 }
704 }
705
706 if !is_empty {
708 let mut buf = Vec::new();
709 loop {
710 match reader.read_event_into(&mut buf)? {
711 Event::Start(e) => {
712 match e.local_name().as_ref() {
713 b"customFilter" => {
714 f_custom_filter.push(CustomFilter::from_xml(reader, &e, false)?);
715 #[cfg(feature = "extra-children")]
716 {
717 child_idx += 1;
718 }
719 }
720 #[cfg(feature = "extra-children")]
721 _ => {
722 let elem = RawXmlElement::from_reader(reader, &e)?;
724 extra_children.push(PositionedNode::new(
725 child_idx,
726 RawXmlNode::Element(elem),
727 ));
728 child_idx += 1;
729 }
730 #[cfg(not(feature = "extra-children"))]
731 _ => {
732 skip_element(reader)?;
734 }
735 }
736 }
737 Event::Empty(e) => {
738 match e.local_name().as_ref() {
739 b"customFilter" => {
740 f_custom_filter.push(CustomFilter::from_xml(reader, &e, true)?);
741 #[cfg(feature = "extra-children")]
742 {
743 child_idx += 1;
744 }
745 }
746 #[cfg(feature = "extra-children")]
747 _ => {
748 let elem = RawXmlElement::from_empty(&e);
750 extra_children.push(PositionedNode::new(
751 child_idx,
752 RawXmlNode::Element(elem),
753 ));
754 child_idx += 1;
755 }
756 #[cfg(not(feature = "extra-children"))]
757 _ => {}
758 }
759 }
760 Event::End(_) => break,
761 Event::Eof => break,
762 _ => {}
763 }
764 buf.clear();
765 }
766 }
767
768 Ok(Self {
769 and: f_and,
770 custom_filter: f_custom_filter,
771 #[cfg(feature = "extra-attrs")]
772 extra_attrs,
773 #[cfg(feature = "extra-children")]
774 extra_children,
775 })
776 }
777}
778
779impl FromXml for CustomFilter {
780 fn from_xml<R: BufRead>(
781 reader: &mut Reader<R>,
782 start_tag: &BytesStart,
783 is_empty: bool,
784 ) -> Result<Self, ParseError> {
785 let mut f_operator = None;
786 let mut f_value = None;
787 #[cfg(feature = "extra-attrs")]
788 let mut extra_attrs = std::collections::HashMap::new();
789
790 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
792 let val = String::from_utf8_lossy(&attr.value);
793 match attr.key.local_name().as_ref() {
794 b"operator" => {
795 f_operator = val.parse().ok();
796 }
797 b"val" => {
798 f_value = Some(val.into_owned());
799 }
800 #[cfg(feature = "extra-attrs")]
801 unknown => {
802 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
803 extra_attrs.insert(key, val.into_owned());
804 }
805 #[cfg(not(feature = "extra-attrs"))]
806 _ => {}
807 }
808 }
809
810 if !is_empty {
811 let mut buf = Vec::new();
812 loop {
813 match reader.read_event_into(&mut buf)? {
814 Event::End(_) => break,
815 Event::Eof => break,
816 _ => {}
817 }
818 buf.clear();
819 }
820 }
821
822 Ok(Self {
823 operator: f_operator,
824 value: f_value,
825 #[cfg(feature = "extra-attrs")]
826 extra_attrs,
827 })
828 }
829}
830
831impl FromXml for Top10Filter {
832 fn from_xml<R: BufRead>(
833 reader: &mut Reader<R>,
834 start_tag: &BytesStart,
835 is_empty: bool,
836 ) -> Result<Self, ParseError> {
837 let mut f_top = None;
838 let mut f_percent = None;
839 let mut f_value: Option<f64> = None;
840 let mut f_filter_val = None;
841 #[cfg(feature = "extra-attrs")]
842 let mut extra_attrs = std::collections::HashMap::new();
843
844 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
846 let val = String::from_utf8_lossy(&attr.value);
847 match attr.key.local_name().as_ref() {
848 b"top" => {
849 f_top = Some(val == "true" || val == "1");
850 }
851 b"percent" => {
852 f_percent = Some(val == "true" || val == "1");
853 }
854 b"val" => {
855 f_value = val.parse().ok();
856 }
857 b"filterVal" => {
858 f_filter_val = val.parse().ok();
859 }
860 #[cfg(feature = "extra-attrs")]
861 unknown => {
862 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
863 extra_attrs.insert(key, val.into_owned());
864 }
865 #[cfg(not(feature = "extra-attrs"))]
866 _ => {}
867 }
868 }
869
870 if !is_empty {
871 let mut buf = Vec::new();
872 loop {
873 match reader.read_event_into(&mut buf)? {
874 Event::End(_) => break,
875 Event::Eof => break,
876 _ => {}
877 }
878 buf.clear();
879 }
880 }
881
882 Ok(Self {
883 top: f_top,
884 percent: f_percent,
885 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
886 filter_val: f_filter_val,
887 #[cfg(feature = "extra-attrs")]
888 extra_attrs,
889 })
890 }
891}
892
893impl FromXml for ColorFilter {
894 fn from_xml<R: BufRead>(
895 reader: &mut Reader<R>,
896 start_tag: &BytesStart,
897 is_empty: bool,
898 ) -> Result<Self, ParseError> {
899 let mut f_dxf_id = None;
900 let mut f_cell_color = None;
901 #[cfg(feature = "extra-attrs")]
902 let mut extra_attrs = std::collections::HashMap::new();
903
904 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
906 let val = String::from_utf8_lossy(&attr.value);
907 match attr.key.local_name().as_ref() {
908 b"dxfId" => {
909 f_dxf_id = val.parse().ok();
910 }
911 b"cellColor" => {
912 f_cell_color = Some(val == "true" || val == "1");
913 }
914 #[cfg(feature = "extra-attrs")]
915 unknown => {
916 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
917 extra_attrs.insert(key, val.into_owned());
918 }
919 #[cfg(not(feature = "extra-attrs"))]
920 _ => {}
921 }
922 }
923
924 if !is_empty {
925 let mut buf = Vec::new();
926 loop {
927 match reader.read_event_into(&mut buf)? {
928 Event::End(_) => break,
929 Event::Eof => break,
930 _ => {}
931 }
932 buf.clear();
933 }
934 }
935
936 Ok(Self {
937 dxf_id: f_dxf_id,
938 cell_color: f_cell_color,
939 #[cfg(feature = "extra-attrs")]
940 extra_attrs,
941 })
942 }
943}
944
945impl FromXml for IconFilter {
946 fn from_xml<R: BufRead>(
947 reader: &mut Reader<R>,
948 start_tag: &BytesStart,
949 is_empty: bool,
950 ) -> Result<Self, ParseError> {
951 let mut f_icon_set: Option<IconSetType> = None;
952 let mut f_icon_id = None;
953 #[cfg(feature = "extra-attrs")]
954 let mut extra_attrs = std::collections::HashMap::new();
955
956 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
958 let val = String::from_utf8_lossy(&attr.value);
959 match attr.key.local_name().as_ref() {
960 b"iconSet" => {
961 f_icon_set = val.parse().ok();
962 }
963 b"iconId" => {
964 f_icon_id = val.parse().ok();
965 }
966 #[cfg(feature = "extra-attrs")]
967 unknown => {
968 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
969 extra_attrs.insert(key, val.into_owned());
970 }
971 #[cfg(not(feature = "extra-attrs"))]
972 _ => {}
973 }
974 }
975
976 if !is_empty {
977 let mut buf = Vec::new();
978 loop {
979 match reader.read_event_into(&mut buf)? {
980 Event::End(_) => break,
981 Event::Eof => break,
982 _ => {}
983 }
984 buf.clear();
985 }
986 }
987
988 Ok(Self {
989 icon_set: f_icon_set
990 .ok_or_else(|| ParseError::MissingAttribute("iconSet".to_string()))?,
991 icon_id: f_icon_id,
992 #[cfg(feature = "extra-attrs")]
993 extra_attrs,
994 })
995 }
996}
997
998impl FromXml for DynamicFilter {
999 fn from_xml<R: BufRead>(
1000 reader: &mut Reader<R>,
1001 start_tag: &BytesStart,
1002 is_empty: bool,
1003 ) -> Result<Self, ParseError> {
1004 let mut f_type: Option<DynamicFilterType> = None;
1005 let mut f_value = None;
1006 let mut f_val_iso = None;
1007 let mut f_max_val = None;
1008 let mut f_max_val_iso = None;
1009 #[cfg(feature = "extra-attrs")]
1010 let mut extra_attrs = std::collections::HashMap::new();
1011
1012 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
1014 let val = String::from_utf8_lossy(&attr.value);
1015 match attr.key.local_name().as_ref() {
1016 b"type" => {
1017 f_type = val.parse().ok();
1018 }
1019 b"val" => {
1020 f_value = val.parse().ok();
1021 }
1022 b"valIso" => {
1023 f_val_iso = Some(val.into_owned());
1024 }
1025 b"maxVal" => {
1026 f_max_val = val.parse().ok();
1027 }
1028 b"maxValIso" => {
1029 f_max_val_iso = Some(val.into_owned());
1030 }
1031 #[cfg(feature = "extra-attrs")]
1032 unknown => {
1033 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
1034 extra_attrs.insert(key, val.into_owned());
1035 }
1036 #[cfg(not(feature = "extra-attrs"))]
1037 _ => {}
1038 }
1039 }
1040
1041 if !is_empty {
1042 let mut buf = Vec::new();
1043 loop {
1044 match reader.read_event_into(&mut buf)? {
1045 Event::End(_) => break,
1046 Event::Eof => break,
1047 _ => {}
1048 }
1049 buf.clear();
1050 }
1051 }
1052
1053 Ok(Self {
1054 r#type: f_type.ok_or_else(|| ParseError::MissingAttribute("type".to_string()))?,
1055 value: f_value,
1056 val_iso: f_val_iso,
1057 max_val: f_max_val,
1058 max_val_iso: f_max_val_iso,
1059 #[cfg(feature = "extra-attrs")]
1060 extra_attrs,
1061 })
1062 }
1063}
1064
1065impl FromXml for SortState {
1066 fn from_xml<R: BufRead>(
1067 reader: &mut Reader<R>,
1068 start_tag: &BytesStart,
1069 is_empty: bool,
1070 ) -> Result<Self, ParseError> {
1071 let mut f_column_sort = None;
1072 let mut f_case_sensitive = None;
1073 let mut f_sort_method = None;
1074 let mut f_reference: Option<Reference> = None;
1075 let mut f_sort_condition = Vec::new();
1076 let mut f_extension_list = None;
1077 #[cfg(feature = "extra-attrs")]
1078 let mut extra_attrs = std::collections::HashMap::new();
1079 #[cfg(feature = "extra-children")]
1080 let mut extra_children = Vec::new();
1081 #[cfg(feature = "extra-children")]
1082 let mut child_idx: usize = 0;
1083
1084 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
1086 let val = String::from_utf8_lossy(&attr.value);
1087 match attr.key.local_name().as_ref() {
1088 b"columnSort" => {
1089 f_column_sort = Some(val == "true" || val == "1");
1090 }
1091 b"caseSensitive" => {
1092 f_case_sensitive = Some(val == "true" || val == "1");
1093 }
1094 b"sortMethod" => {
1095 f_sort_method = val.parse().ok();
1096 }
1097 b"ref" => {
1098 f_reference = Some(val.into_owned());
1099 }
1100 #[cfg(feature = "extra-attrs")]
1101 unknown => {
1102 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
1103 extra_attrs.insert(key, val.into_owned());
1104 }
1105 #[cfg(not(feature = "extra-attrs"))]
1106 _ => {}
1107 }
1108 }
1109
1110 if !is_empty {
1112 let mut buf = Vec::new();
1113 loop {
1114 match reader.read_event_into(&mut buf)? {
1115 Event::Start(e) => {
1116 match e.local_name().as_ref() {
1117 b"sortCondition" => {
1118 f_sort_condition.push(SortCondition::from_xml(reader, &e, false)?);
1119 #[cfg(feature = "extra-children")]
1120 {
1121 child_idx += 1;
1122 }
1123 }
1124 b"extLst" => {
1125 f_extension_list =
1126 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
1127 #[cfg(feature = "extra-children")]
1128 {
1129 child_idx += 1;
1130 }
1131 }
1132 #[cfg(feature = "extra-children")]
1133 _ => {
1134 let elem = RawXmlElement::from_reader(reader, &e)?;
1136 extra_children.push(PositionedNode::new(
1137 child_idx,
1138 RawXmlNode::Element(elem),
1139 ));
1140 child_idx += 1;
1141 }
1142 #[cfg(not(feature = "extra-children"))]
1143 _ => {
1144 skip_element(reader)?;
1146 }
1147 }
1148 }
1149 Event::Empty(e) => {
1150 match e.local_name().as_ref() {
1151 b"sortCondition" => {
1152 f_sort_condition.push(SortCondition::from_xml(reader, &e, true)?);
1153 #[cfg(feature = "extra-children")]
1154 {
1155 child_idx += 1;
1156 }
1157 }
1158 b"extLst" => {
1159 f_extension_list =
1160 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
1161 #[cfg(feature = "extra-children")]
1162 {
1163 child_idx += 1;
1164 }
1165 }
1166 #[cfg(feature = "extra-children")]
1167 _ => {
1168 let elem = RawXmlElement::from_empty(&e);
1170 extra_children.push(PositionedNode::new(
1171 child_idx,
1172 RawXmlNode::Element(elem),
1173 ));
1174 child_idx += 1;
1175 }
1176 #[cfg(not(feature = "extra-children"))]
1177 _ => {}
1178 }
1179 }
1180 Event::End(_) => break,
1181 Event::Eof => break,
1182 _ => {}
1183 }
1184 buf.clear();
1185 }
1186 }
1187
1188 Ok(Self {
1189 column_sort: f_column_sort,
1190 case_sensitive: f_case_sensitive,
1191 sort_method: f_sort_method,
1192 reference: f_reference
1193 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
1194 sort_condition: f_sort_condition,
1195 extension_list: f_extension_list,
1196 #[cfg(feature = "extra-attrs")]
1197 extra_attrs,
1198 #[cfg(feature = "extra-children")]
1199 extra_children,
1200 })
1201 }
1202}
1203
1204impl FromXml for SortCondition {
1205 fn from_xml<R: BufRead>(
1206 reader: &mut Reader<R>,
1207 start_tag: &BytesStart,
1208 is_empty: bool,
1209 ) -> Result<Self, ParseError> {
1210 let mut f_descending = None;
1211 let mut f_sort_by = None;
1212 let mut f_reference: Option<Reference> = None;
1213 let mut f_custom_list = None;
1214 let mut f_dxf_id = None;
1215 let mut f_icon_set = None;
1216 let mut f_icon_id = None;
1217 #[cfg(feature = "extra-attrs")]
1218 let mut extra_attrs = std::collections::HashMap::new();
1219
1220 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
1222 let val = String::from_utf8_lossy(&attr.value);
1223 match attr.key.local_name().as_ref() {
1224 b"descending" => {
1225 f_descending = Some(val == "true" || val == "1");
1226 }
1227 b"sortBy" => {
1228 f_sort_by = val.parse().ok();
1229 }
1230 b"ref" => {
1231 f_reference = Some(val.into_owned());
1232 }
1233 b"customList" => {
1234 f_custom_list = Some(val.into_owned());
1235 }
1236 b"dxfId" => {
1237 f_dxf_id = val.parse().ok();
1238 }
1239 b"iconSet" => {
1240 f_icon_set = val.parse().ok();
1241 }
1242 b"iconId" => {
1243 f_icon_id = val.parse().ok();
1244 }
1245 #[cfg(feature = "extra-attrs")]
1246 unknown => {
1247 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
1248 extra_attrs.insert(key, val.into_owned());
1249 }
1250 #[cfg(not(feature = "extra-attrs"))]
1251 _ => {}
1252 }
1253 }
1254
1255 if !is_empty {
1256 let mut buf = Vec::new();
1257 loop {
1258 match reader.read_event_into(&mut buf)? {
1259 Event::End(_) => break,
1260 Event::Eof => break,
1261 _ => {}
1262 }
1263 buf.clear();
1264 }
1265 }
1266
1267 Ok(Self {
1268 descending: f_descending,
1269 sort_by: f_sort_by,
1270 reference: f_reference
1271 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
1272 custom_list: f_custom_list,
1273 dxf_id: f_dxf_id,
1274 icon_set: f_icon_set,
1275 icon_id: f_icon_id,
1276 #[cfg(feature = "extra-attrs")]
1277 extra_attrs,
1278 })
1279 }
1280}
1281
1282impl FromXml for DateGroupItem {
1283 fn from_xml<R: BufRead>(
1284 reader: &mut Reader<R>,
1285 start_tag: &BytesStart,
1286 is_empty: bool,
1287 ) -> Result<Self, ParseError> {
1288 let mut f_year: Option<u16> = None;
1289 let mut f_month = None;
1290 let mut f_day = None;
1291 let mut f_hour = None;
1292 let mut f_minute = None;
1293 let mut f_second = None;
1294 let mut f_date_time_grouping: Option<STDateTimeGrouping> = None;
1295 #[cfg(feature = "extra-attrs")]
1296 let mut extra_attrs = std::collections::HashMap::new();
1297
1298 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
1300 let val = String::from_utf8_lossy(&attr.value);
1301 match attr.key.local_name().as_ref() {
1302 b"year" => {
1303 f_year = val.parse().ok();
1304 }
1305 b"month" => {
1306 f_month = val.parse().ok();
1307 }
1308 b"day" => {
1309 f_day = val.parse().ok();
1310 }
1311 b"hour" => {
1312 f_hour = val.parse().ok();
1313 }
1314 b"minute" => {
1315 f_minute = val.parse().ok();
1316 }
1317 b"second" => {
1318 f_second = val.parse().ok();
1319 }
1320 b"dateTimeGrouping" => {
1321 f_date_time_grouping = val.parse().ok();
1322 }
1323 #[cfg(feature = "extra-attrs")]
1324 unknown => {
1325 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
1326 extra_attrs.insert(key, val.into_owned());
1327 }
1328 #[cfg(not(feature = "extra-attrs"))]
1329 _ => {}
1330 }
1331 }
1332
1333 if !is_empty {
1334 let mut buf = Vec::new();
1335 loop {
1336 match reader.read_event_into(&mut buf)? {
1337 Event::End(_) => break,
1338 Event::Eof => break,
1339 _ => {}
1340 }
1341 buf.clear();
1342 }
1343 }
1344
1345 Ok(Self {
1346 year: f_year.ok_or_else(|| ParseError::MissingAttribute("year".to_string()))?,
1347 month: f_month,
1348 day: f_day,
1349 hour: f_hour,
1350 minute: f_minute,
1351 second: f_second,
1352 date_time_grouping: f_date_time_grouping
1353 .ok_or_else(|| ParseError::MissingAttribute("dateTimeGrouping".to_string()))?,
1354 #[cfg(feature = "extra-attrs")]
1355 extra_attrs,
1356 })
1357 }
1358}
1359
1360impl FromXml for CTXStringElement {
1361 fn from_xml<R: BufRead>(
1362 reader: &mut Reader<R>,
1363 start_tag: &BytesStart,
1364 is_empty: bool,
1365 ) -> Result<Self, ParseError> {
1366 let mut f_value: Option<XmlString> = None;
1367 #[cfg(feature = "extra-attrs")]
1368 let mut extra_attrs = std::collections::HashMap::new();
1369
1370 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
1372 let val = String::from_utf8_lossy(&attr.value);
1373 match attr.key.local_name().as_ref() {
1374 b"v" => {
1375 f_value = Some(val.into_owned());
1376 }
1377 #[cfg(feature = "extra-attrs")]
1378 unknown => {
1379 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
1380 extra_attrs.insert(key, val.into_owned());
1381 }
1382 #[cfg(not(feature = "extra-attrs"))]
1383 _ => {}
1384 }
1385 }
1386
1387 if !is_empty {
1388 let mut buf = Vec::new();
1389 loop {
1390 match reader.read_event_into(&mut buf)? {
1391 Event::End(_) => break,
1392 Event::Eof => break,
1393 _ => {}
1394 }
1395 buf.clear();
1396 }
1397 }
1398
1399 Ok(Self {
1400 value: f_value.ok_or_else(|| ParseError::MissingAttribute("v".to_string()))?,
1401 #[cfg(feature = "extra-attrs")]
1402 extra_attrs,
1403 })
1404 }
1405}
1406
1407impl FromXml for Extension {
1408 fn from_xml<R: BufRead>(
1409 reader: &mut Reader<R>,
1410 start_tag: &BytesStart,
1411 is_empty: bool,
1412 ) -> Result<Self, ParseError> {
1413 let mut f_uri = None;
1414 #[cfg(feature = "extra-attrs")]
1415 let mut extra_attrs = std::collections::HashMap::new();
1416
1417 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
1419 let val = String::from_utf8_lossy(&attr.value);
1420 match attr.key.local_name().as_ref() {
1421 b"uri" => {
1422 f_uri = Some(val.into_owned());
1423 }
1424 #[cfg(feature = "extra-attrs")]
1425 unknown => {
1426 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
1427 extra_attrs.insert(key, val.into_owned());
1428 }
1429 #[cfg(not(feature = "extra-attrs"))]
1430 _ => {}
1431 }
1432 }
1433
1434 if !is_empty {
1435 let mut buf = Vec::new();
1436 loop {
1437 match reader.read_event_into(&mut buf)? {
1438 Event::End(_) => break,
1439 Event::Eof => break,
1440 _ => {}
1441 }
1442 buf.clear();
1443 }
1444 }
1445
1446 Ok(Self {
1447 uri: f_uri,
1448 #[cfg(feature = "extra-attrs")]
1449 extra_attrs,
1450 })
1451 }
1452}
1453
1454impl FromXml for ObjectAnchor {
1455 fn from_xml<R: BufRead>(
1456 reader: &mut Reader<R>,
1457 start_tag: &BytesStart,
1458 is_empty: bool,
1459 ) -> Result<Self, ParseError> {
1460 let mut f_move_with_cells = None;
1461 let mut f_size_with_cells = None;
1462 #[cfg(feature = "extra-attrs")]
1463 let mut extra_attrs = std::collections::HashMap::new();
1464
1465 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
1467 let val = String::from_utf8_lossy(&attr.value);
1468 match attr.key.local_name().as_ref() {
1469 b"moveWithCells" => {
1470 f_move_with_cells = Some(val == "true" || val == "1");
1471 }
1472 b"sizeWithCells" => {
1473 f_size_with_cells = Some(val == "true" || val == "1");
1474 }
1475 #[cfg(feature = "extra-attrs")]
1476 unknown => {
1477 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
1478 extra_attrs.insert(key, val.into_owned());
1479 }
1480 #[cfg(not(feature = "extra-attrs"))]
1481 _ => {}
1482 }
1483 }
1484
1485 if !is_empty {
1486 let mut buf = Vec::new();
1487 loop {
1488 match reader.read_event_into(&mut buf)? {
1489 Event::End(_) => break,
1490 Event::Eof => break,
1491 _ => {}
1492 }
1493 buf.clear();
1494 }
1495 }
1496
1497 Ok(Self {
1498 move_with_cells: f_move_with_cells,
1499 size_with_cells: f_size_with_cells,
1500 #[cfg(feature = "extra-attrs")]
1501 extra_attrs,
1502 })
1503 }
1504}
1505
1506impl FromXml for EGExtensionList {
1507 fn from_xml<R: BufRead>(
1508 reader: &mut Reader<R>,
1509 start_tag: &BytesStart,
1510 is_empty: bool,
1511 ) -> Result<Self, ParseError> {
1512 let mut f_ext = Vec::new();
1513 #[cfg(feature = "extra-children")]
1514 let mut extra_children = Vec::new();
1515 #[cfg(feature = "extra-children")]
1516 let mut child_idx: usize = 0;
1517
1518 if !is_empty {
1520 let mut buf = Vec::new();
1521 loop {
1522 match reader.read_event_into(&mut buf)? {
1523 Event::Start(e) => {
1524 match e.local_name().as_ref() {
1525 b"ext" => {
1526 f_ext.push(Extension::from_xml(reader, &e, false)?);
1527 #[cfg(feature = "extra-children")]
1528 {
1529 child_idx += 1;
1530 }
1531 }
1532 #[cfg(feature = "extra-children")]
1533 _ => {
1534 let elem = RawXmlElement::from_reader(reader, &e)?;
1536 extra_children.push(PositionedNode::new(
1537 child_idx,
1538 RawXmlNode::Element(elem),
1539 ));
1540 child_idx += 1;
1541 }
1542 #[cfg(not(feature = "extra-children"))]
1543 _ => {
1544 skip_element(reader)?;
1546 }
1547 }
1548 }
1549 Event::Empty(e) => {
1550 match e.local_name().as_ref() {
1551 b"ext" => {
1552 f_ext.push(Extension::from_xml(reader, &e, true)?);
1553 #[cfg(feature = "extra-children")]
1554 {
1555 child_idx += 1;
1556 }
1557 }
1558 #[cfg(feature = "extra-children")]
1559 _ => {
1560 let elem = RawXmlElement::from_empty(&e);
1562 extra_children.push(PositionedNode::new(
1563 child_idx,
1564 RawXmlNode::Element(elem),
1565 ));
1566 child_idx += 1;
1567 }
1568 #[cfg(not(feature = "extra-children"))]
1569 _ => {}
1570 }
1571 }
1572 Event::End(_) => break,
1573 Event::Eof => break,
1574 _ => {}
1575 }
1576 buf.clear();
1577 }
1578 }
1579
1580 Ok(Self {
1581 ext: f_ext,
1582 #[cfg(feature = "extra-children")]
1583 extra_children,
1584 })
1585 }
1586}
1587
1588impl FromXml for ExtensionList {
1589 fn from_xml<R: BufRead>(
1590 reader: &mut Reader<R>,
1591 start_tag: &BytesStart,
1592 is_empty: bool,
1593 ) -> Result<Self, ParseError> {
1594 let mut f_ext = Vec::new();
1595 #[cfg(feature = "extra-children")]
1596 let mut extra_children = Vec::new();
1597 #[cfg(feature = "extra-children")]
1598 let mut child_idx: usize = 0;
1599
1600 if !is_empty {
1602 let mut buf = Vec::new();
1603 loop {
1604 match reader.read_event_into(&mut buf)? {
1605 Event::Start(e) => {
1606 match e.local_name().as_ref() {
1607 b"ext" => {
1608 f_ext.push(Extension::from_xml(reader, &e, false)?);
1609 #[cfg(feature = "extra-children")]
1610 {
1611 child_idx += 1;
1612 }
1613 }
1614 #[cfg(feature = "extra-children")]
1615 _ => {
1616 let elem = RawXmlElement::from_reader(reader, &e)?;
1618 extra_children.push(PositionedNode::new(
1619 child_idx,
1620 RawXmlNode::Element(elem),
1621 ));
1622 child_idx += 1;
1623 }
1624 #[cfg(not(feature = "extra-children"))]
1625 _ => {
1626 skip_element(reader)?;
1628 }
1629 }
1630 }
1631 Event::Empty(e) => {
1632 match e.local_name().as_ref() {
1633 b"ext" => {
1634 f_ext.push(Extension::from_xml(reader, &e, true)?);
1635 #[cfg(feature = "extra-children")]
1636 {
1637 child_idx += 1;
1638 }
1639 }
1640 #[cfg(feature = "extra-children")]
1641 _ => {
1642 let elem = RawXmlElement::from_empty(&e);
1644 extra_children.push(PositionedNode::new(
1645 child_idx,
1646 RawXmlNode::Element(elem),
1647 ));
1648 child_idx += 1;
1649 }
1650 #[cfg(not(feature = "extra-children"))]
1651 _ => {}
1652 }
1653 }
1654 Event::End(_) => break,
1655 Event::Eof => break,
1656 _ => {}
1657 }
1658 buf.clear();
1659 }
1660 }
1661
1662 Ok(Self {
1663 ext: f_ext,
1664 #[cfg(feature = "extra-children")]
1665 extra_children,
1666 })
1667 }
1668}
1669
1670impl FromXml for CalcChain {
1671 fn from_xml<R: BufRead>(
1672 reader: &mut Reader<R>,
1673 start_tag: &BytesStart,
1674 is_empty: bool,
1675 ) -> Result<Self, ParseError> {
1676 #[cfg(feature = "sml-formulas")]
1677 let mut f_cells = Vec::new();
1678 #[cfg(feature = "sml-extensions")]
1679 let mut f_extension_list = None;
1680 #[cfg(feature = "extra-children")]
1681 let mut extra_children = Vec::new();
1682 #[cfg(feature = "extra-children")]
1683 let mut child_idx: usize = 0;
1684
1685 if !is_empty {
1687 let mut buf = Vec::new();
1688 loop {
1689 match reader.read_event_into(&mut buf)? {
1690 Event::Start(e) => {
1691 match e.local_name().as_ref() {
1692 #[cfg(feature = "sml-formulas")]
1693 b"c" => {
1694 f_cells.push(CalcCell::from_xml(reader, &e, false)?);
1695 #[cfg(feature = "extra-children")]
1696 {
1697 child_idx += 1;
1698 }
1699 }
1700 #[cfg(feature = "sml-extensions")]
1701 b"extLst" => {
1702 f_extension_list =
1703 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
1704 #[cfg(feature = "extra-children")]
1705 {
1706 child_idx += 1;
1707 }
1708 }
1709 #[cfg(feature = "extra-children")]
1710 _ => {
1711 let elem = RawXmlElement::from_reader(reader, &e)?;
1713 extra_children.push(PositionedNode::new(
1714 child_idx,
1715 RawXmlNode::Element(elem),
1716 ));
1717 child_idx += 1;
1718 }
1719 #[cfg(not(feature = "extra-children"))]
1720 _ => {
1721 skip_element(reader)?;
1723 }
1724 }
1725 }
1726 Event::Empty(e) => {
1727 match e.local_name().as_ref() {
1728 #[cfg(feature = "sml-formulas")]
1729 b"c" => {
1730 f_cells.push(CalcCell::from_xml(reader, &e, true)?);
1731 #[cfg(feature = "extra-children")]
1732 {
1733 child_idx += 1;
1734 }
1735 }
1736 #[cfg(feature = "sml-extensions")]
1737 b"extLst" => {
1738 f_extension_list =
1739 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
1740 #[cfg(feature = "extra-children")]
1741 {
1742 child_idx += 1;
1743 }
1744 }
1745 #[cfg(feature = "extra-children")]
1746 _ => {
1747 let elem = RawXmlElement::from_empty(&e);
1749 extra_children.push(PositionedNode::new(
1750 child_idx,
1751 RawXmlNode::Element(elem),
1752 ));
1753 child_idx += 1;
1754 }
1755 #[cfg(not(feature = "extra-children"))]
1756 _ => {}
1757 }
1758 }
1759 Event::End(_) => break,
1760 Event::Eof => break,
1761 _ => {}
1762 }
1763 buf.clear();
1764 }
1765 }
1766
1767 Ok(Self {
1768 #[cfg(feature = "sml-formulas")]
1769 cells: f_cells,
1770 #[cfg(feature = "sml-extensions")]
1771 extension_list: f_extension_list,
1772 #[cfg(feature = "extra-children")]
1773 extra_children,
1774 })
1775 }
1776}
1777
1778impl FromXml for CalcCell {
1779 fn from_xml<R: BufRead>(
1780 reader: &mut Reader<R>,
1781 start_tag: &BytesStart,
1782 is_empty: bool,
1783 ) -> Result<Self, ParseError> {
1784 let mut f_any: Option<CellRef> = None;
1785 #[cfg(feature = "sml-formulas")]
1786 let mut f_i = None;
1787 #[cfg(feature = "sml-formulas")]
1788 let mut f_style_index = None;
1789 #[cfg(feature = "sml-formulas")]
1790 let mut f_l = None;
1791 #[cfg(feature = "sml-formulas")]
1792 let mut f_cell_type = None;
1793 #[cfg(feature = "sml-formulas")]
1794 let mut f_a = None;
1795 #[cfg(feature = "extra-attrs")]
1796 let mut extra_attrs = std::collections::HashMap::new();
1797
1798 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
1800 let val = String::from_utf8_lossy(&attr.value);
1801 match attr.key.local_name().as_ref() {
1802 b"_any" => {
1803 f_any = Some(val.into_owned());
1804 }
1805 #[cfg(feature = "sml-formulas")]
1806 b"i" => {
1807 f_i = val.parse().ok();
1808 }
1809 #[cfg(feature = "sml-formulas")]
1810 b"s" => {
1811 f_style_index = Some(val == "true" || val == "1");
1812 }
1813 #[cfg(feature = "sml-formulas")]
1814 b"l" => {
1815 f_l = Some(val == "true" || val == "1");
1816 }
1817 #[cfg(feature = "sml-formulas")]
1818 b"t" => {
1819 f_cell_type = Some(val == "true" || val == "1");
1820 }
1821 #[cfg(feature = "sml-formulas")]
1822 b"a" => {
1823 f_a = Some(val == "true" || val == "1");
1824 }
1825 #[cfg(feature = "extra-attrs")]
1826 unknown => {
1827 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
1828 extra_attrs.insert(key, val.into_owned());
1829 }
1830 #[cfg(not(feature = "extra-attrs"))]
1831 _ => {}
1832 }
1833 }
1834
1835 if !is_empty {
1836 let mut buf = Vec::new();
1837 loop {
1838 match reader.read_event_into(&mut buf)? {
1839 Event::End(_) => break,
1840 Event::Eof => break,
1841 _ => {}
1842 }
1843 buf.clear();
1844 }
1845 }
1846
1847 Ok(Self {
1848 _any: f_any.ok_or_else(|| ParseError::MissingAttribute("_any".to_string()))?,
1849 #[cfg(feature = "sml-formulas")]
1850 i: f_i,
1851 #[cfg(feature = "sml-formulas")]
1852 style_index: f_style_index,
1853 #[cfg(feature = "sml-formulas")]
1854 l: f_l,
1855 #[cfg(feature = "sml-formulas")]
1856 cell_type: f_cell_type,
1857 #[cfg(feature = "sml-formulas")]
1858 a: f_a,
1859 #[cfg(feature = "extra-attrs")]
1860 extra_attrs,
1861 })
1862 }
1863}
1864
1865impl FromXml for Comments {
1866 fn from_xml<R: BufRead>(
1867 reader: &mut Reader<R>,
1868 start_tag: &BytesStart,
1869 is_empty: bool,
1870 ) -> Result<Self, ParseError> {
1871 let mut f_authors: Option<Box<Authors>> = None;
1872 let mut f_comment_list: Option<Box<CommentList>> = None;
1873 let mut f_extension_list = None;
1874 #[cfg(feature = "extra-children")]
1875 let mut extra_children = Vec::new();
1876 #[cfg(feature = "extra-children")]
1877 let mut child_idx: usize = 0;
1878
1879 if !is_empty {
1881 let mut buf = Vec::new();
1882 loop {
1883 match reader.read_event_into(&mut buf)? {
1884 Event::Start(e) => {
1885 match e.local_name().as_ref() {
1886 b"authors" => {
1887 f_authors = Some(Box::new(Authors::from_xml(reader, &e, false)?));
1888 #[cfg(feature = "extra-children")]
1889 {
1890 child_idx += 1;
1891 }
1892 }
1893 b"commentList" => {
1894 f_comment_list =
1895 Some(Box::new(CommentList::from_xml(reader, &e, false)?));
1896 #[cfg(feature = "extra-children")]
1897 {
1898 child_idx += 1;
1899 }
1900 }
1901 b"extLst" => {
1902 f_extension_list =
1903 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
1904 #[cfg(feature = "extra-children")]
1905 {
1906 child_idx += 1;
1907 }
1908 }
1909 #[cfg(feature = "extra-children")]
1910 _ => {
1911 let elem = RawXmlElement::from_reader(reader, &e)?;
1913 extra_children.push(PositionedNode::new(
1914 child_idx,
1915 RawXmlNode::Element(elem),
1916 ));
1917 child_idx += 1;
1918 }
1919 #[cfg(not(feature = "extra-children"))]
1920 _ => {
1921 skip_element(reader)?;
1923 }
1924 }
1925 }
1926 Event::Empty(e) => {
1927 match e.local_name().as_ref() {
1928 b"authors" => {
1929 f_authors = Some(Box::new(Authors::from_xml(reader, &e, true)?));
1930 #[cfg(feature = "extra-children")]
1931 {
1932 child_idx += 1;
1933 }
1934 }
1935 b"commentList" => {
1936 f_comment_list =
1937 Some(Box::new(CommentList::from_xml(reader, &e, true)?));
1938 #[cfg(feature = "extra-children")]
1939 {
1940 child_idx += 1;
1941 }
1942 }
1943 b"extLst" => {
1944 f_extension_list =
1945 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
1946 #[cfg(feature = "extra-children")]
1947 {
1948 child_idx += 1;
1949 }
1950 }
1951 #[cfg(feature = "extra-children")]
1952 _ => {
1953 let elem = RawXmlElement::from_empty(&e);
1955 extra_children.push(PositionedNode::new(
1956 child_idx,
1957 RawXmlNode::Element(elem),
1958 ));
1959 child_idx += 1;
1960 }
1961 #[cfg(not(feature = "extra-children"))]
1962 _ => {}
1963 }
1964 }
1965 Event::End(_) => break,
1966 Event::Eof => break,
1967 _ => {}
1968 }
1969 buf.clear();
1970 }
1971 }
1972
1973 Ok(Self {
1974 authors: f_authors
1975 .ok_or_else(|| ParseError::MissingAttribute("authors".to_string()))?,
1976 comment_list: f_comment_list
1977 .ok_or_else(|| ParseError::MissingAttribute("commentList".to_string()))?,
1978 extension_list: f_extension_list,
1979 #[cfg(feature = "extra-children")]
1980 extra_children,
1981 })
1982 }
1983}
1984
1985impl FromXml for Authors {
1986 fn from_xml<R: BufRead>(
1987 reader: &mut Reader<R>,
1988 start_tag: &BytesStart,
1989 is_empty: bool,
1990 ) -> Result<Self, ParseError> {
1991 let mut f_author = Vec::new();
1992 #[cfg(feature = "extra-children")]
1993 let mut extra_children = Vec::new();
1994 #[cfg(feature = "extra-children")]
1995 let mut child_idx: usize = 0;
1996
1997 if !is_empty {
1999 let mut buf = Vec::new();
2000 loop {
2001 match reader.read_event_into(&mut buf)? {
2002 Event::Start(e) => {
2003 match e.local_name().as_ref() {
2004 b"author" => {
2005 f_author.push(read_text_content(reader)?);
2006 #[cfg(feature = "extra-children")]
2007 {
2008 child_idx += 1;
2009 }
2010 }
2011 #[cfg(feature = "extra-children")]
2012 _ => {
2013 let elem = RawXmlElement::from_reader(reader, &e)?;
2015 extra_children.push(PositionedNode::new(
2016 child_idx,
2017 RawXmlNode::Element(elem),
2018 ));
2019 child_idx += 1;
2020 }
2021 #[cfg(not(feature = "extra-children"))]
2022 _ => {
2023 skip_element(reader)?;
2025 }
2026 }
2027 }
2028 Event::Empty(e) => {
2029 match e.local_name().as_ref() {
2030 b"author" => {
2031 f_author.push(String::new());
2032 #[cfg(feature = "extra-children")]
2033 {
2034 child_idx += 1;
2035 }
2036 }
2037 #[cfg(feature = "extra-children")]
2038 _ => {
2039 let elem = RawXmlElement::from_empty(&e);
2041 extra_children.push(PositionedNode::new(
2042 child_idx,
2043 RawXmlNode::Element(elem),
2044 ));
2045 child_idx += 1;
2046 }
2047 #[cfg(not(feature = "extra-children"))]
2048 _ => {}
2049 }
2050 }
2051 Event::End(_) => break,
2052 Event::Eof => break,
2053 _ => {}
2054 }
2055 buf.clear();
2056 }
2057 }
2058
2059 Ok(Self {
2060 author: f_author,
2061 #[cfg(feature = "extra-children")]
2062 extra_children,
2063 })
2064 }
2065}
2066
2067impl FromXml for CommentList {
2068 fn from_xml<R: BufRead>(
2069 reader: &mut Reader<R>,
2070 start_tag: &BytesStart,
2071 is_empty: bool,
2072 ) -> Result<Self, ParseError> {
2073 let mut f_comment = Vec::new();
2074 #[cfg(feature = "extra-children")]
2075 let mut extra_children = Vec::new();
2076 #[cfg(feature = "extra-children")]
2077 let mut child_idx: usize = 0;
2078
2079 if !is_empty {
2081 let mut buf = Vec::new();
2082 loop {
2083 match reader.read_event_into(&mut buf)? {
2084 Event::Start(e) => {
2085 match e.local_name().as_ref() {
2086 b"comment" => {
2087 f_comment.push(Comment::from_xml(reader, &e, false)?);
2088 #[cfg(feature = "extra-children")]
2089 {
2090 child_idx += 1;
2091 }
2092 }
2093 #[cfg(feature = "extra-children")]
2094 _ => {
2095 let elem = RawXmlElement::from_reader(reader, &e)?;
2097 extra_children.push(PositionedNode::new(
2098 child_idx,
2099 RawXmlNode::Element(elem),
2100 ));
2101 child_idx += 1;
2102 }
2103 #[cfg(not(feature = "extra-children"))]
2104 _ => {
2105 skip_element(reader)?;
2107 }
2108 }
2109 }
2110 Event::Empty(e) => {
2111 match e.local_name().as_ref() {
2112 b"comment" => {
2113 f_comment.push(Comment::from_xml(reader, &e, true)?);
2114 #[cfg(feature = "extra-children")]
2115 {
2116 child_idx += 1;
2117 }
2118 }
2119 #[cfg(feature = "extra-children")]
2120 _ => {
2121 let elem = RawXmlElement::from_empty(&e);
2123 extra_children.push(PositionedNode::new(
2124 child_idx,
2125 RawXmlNode::Element(elem),
2126 ));
2127 child_idx += 1;
2128 }
2129 #[cfg(not(feature = "extra-children"))]
2130 _ => {}
2131 }
2132 }
2133 Event::End(_) => break,
2134 Event::Eof => break,
2135 _ => {}
2136 }
2137 buf.clear();
2138 }
2139 }
2140
2141 Ok(Self {
2142 comment: f_comment,
2143 #[cfg(feature = "extra-children")]
2144 extra_children,
2145 })
2146 }
2147}
2148
2149impl FromXml for Comment {
2150 fn from_xml<R: BufRead>(
2151 reader: &mut Reader<R>,
2152 start_tag: &BytesStart,
2153 is_empty: bool,
2154 ) -> Result<Self, ParseError> {
2155 #[cfg(feature = "sml-comments")]
2156 let mut f_reference: Option<Reference> = None;
2157 #[cfg(feature = "sml-comments")]
2158 let mut f_author_id: Option<u32> = None;
2159 #[cfg(feature = "sml-comments")]
2160 let mut f_guid = None;
2161 #[cfg(feature = "sml-comments")]
2162 let mut f_shape_id = None;
2163 #[cfg(feature = "sml-comments")]
2164 let mut f_text: Option<Box<RichString>> = None;
2165 let mut f_comment_pr = None;
2166 #[cfg(feature = "extra-attrs")]
2167 let mut extra_attrs = std::collections::HashMap::new();
2168 #[cfg(feature = "extra-children")]
2169 let mut extra_children = Vec::new();
2170 #[cfg(feature = "extra-children")]
2171 let mut child_idx: usize = 0;
2172
2173 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
2175 let val = String::from_utf8_lossy(&attr.value);
2176 match attr.key.local_name().as_ref() {
2177 #[cfg(feature = "sml-comments")]
2178 b"ref" => {
2179 f_reference = Some(val.into_owned());
2180 }
2181 #[cfg(feature = "sml-comments")]
2182 b"authorId" => {
2183 f_author_id = val.parse().ok();
2184 }
2185 #[cfg(feature = "sml-comments")]
2186 b"guid" => {
2187 f_guid = Some(val.into_owned());
2188 }
2189 #[cfg(feature = "sml-comments")]
2190 b"shapeId" => {
2191 f_shape_id = val.parse().ok();
2192 }
2193 #[cfg(feature = "extra-attrs")]
2194 unknown => {
2195 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
2196 extra_attrs.insert(key, val.into_owned());
2197 }
2198 #[cfg(not(feature = "extra-attrs"))]
2199 _ => {}
2200 }
2201 }
2202
2203 if !is_empty {
2205 let mut buf = Vec::new();
2206 loop {
2207 match reader.read_event_into(&mut buf)? {
2208 Event::Start(e) => {
2209 match e.local_name().as_ref() {
2210 #[cfg(feature = "sml-comments")]
2211 b"text" => {
2212 f_text = Some(Box::new(RichString::from_xml(reader, &e, false)?));
2213 #[cfg(feature = "extra-children")]
2214 {
2215 child_idx += 1;
2216 }
2217 }
2218 b"commentPr" => {
2219 f_comment_pr =
2220 Some(Box::new(CTCommentPr::from_xml(reader, &e, false)?));
2221 #[cfg(feature = "extra-children")]
2222 {
2223 child_idx += 1;
2224 }
2225 }
2226 #[cfg(feature = "extra-children")]
2227 _ => {
2228 let elem = RawXmlElement::from_reader(reader, &e)?;
2230 extra_children.push(PositionedNode::new(
2231 child_idx,
2232 RawXmlNode::Element(elem),
2233 ));
2234 child_idx += 1;
2235 }
2236 #[cfg(not(feature = "extra-children"))]
2237 _ => {
2238 skip_element(reader)?;
2240 }
2241 }
2242 }
2243 Event::Empty(e) => {
2244 match e.local_name().as_ref() {
2245 #[cfg(feature = "sml-comments")]
2246 b"text" => {
2247 f_text = Some(Box::new(RichString::from_xml(reader, &e, true)?));
2248 #[cfg(feature = "extra-children")]
2249 {
2250 child_idx += 1;
2251 }
2252 }
2253 b"commentPr" => {
2254 f_comment_pr =
2255 Some(Box::new(CTCommentPr::from_xml(reader, &e, true)?));
2256 #[cfg(feature = "extra-children")]
2257 {
2258 child_idx += 1;
2259 }
2260 }
2261 #[cfg(feature = "extra-children")]
2262 _ => {
2263 let elem = RawXmlElement::from_empty(&e);
2265 extra_children.push(PositionedNode::new(
2266 child_idx,
2267 RawXmlNode::Element(elem),
2268 ));
2269 child_idx += 1;
2270 }
2271 #[cfg(not(feature = "extra-children"))]
2272 _ => {}
2273 }
2274 }
2275 Event::End(_) => break,
2276 Event::Eof => break,
2277 _ => {}
2278 }
2279 buf.clear();
2280 }
2281 }
2282
2283 Ok(Self {
2284 #[cfg(feature = "sml-comments")]
2285 reference: f_reference
2286 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
2287 #[cfg(feature = "sml-comments")]
2288 author_id: f_author_id
2289 .ok_or_else(|| ParseError::MissingAttribute("authorId".to_string()))?,
2290 #[cfg(feature = "sml-comments")]
2291 guid: f_guid,
2292 #[cfg(feature = "sml-comments")]
2293 shape_id: f_shape_id,
2294 #[cfg(feature = "sml-comments")]
2295 text: f_text.ok_or_else(|| ParseError::MissingAttribute("text".to_string()))?,
2296 comment_pr: f_comment_pr,
2297 #[cfg(feature = "extra-attrs")]
2298 extra_attrs,
2299 #[cfg(feature = "extra-children")]
2300 extra_children,
2301 })
2302 }
2303}
2304
2305impl FromXml for CTCommentPr {
2306 fn from_xml<R: BufRead>(
2307 reader: &mut Reader<R>,
2308 start_tag: &BytesStart,
2309 is_empty: bool,
2310 ) -> Result<Self, ParseError> {
2311 let mut f_locked = None;
2312 let mut f_default_size = None;
2313 let mut f_print = None;
2314 let mut f_disabled = None;
2315 let mut f_auto_fill = None;
2316 let mut f_auto_line = None;
2317 let mut f_alt_text = None;
2318 let mut f_text_h_align = None;
2319 let mut f_text_v_align = None;
2320 let mut f_lock_text = None;
2321 let mut f_just_last_x = None;
2322 let mut f_auto_scale = None;
2323 let mut f_anchor: Option<Box<ObjectAnchor>> = None;
2324 #[cfg(feature = "extra-attrs")]
2325 let mut extra_attrs = std::collections::HashMap::new();
2326 #[cfg(feature = "extra-children")]
2327 let mut extra_children = Vec::new();
2328 #[cfg(feature = "extra-children")]
2329 let mut child_idx: usize = 0;
2330
2331 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
2333 let val = String::from_utf8_lossy(&attr.value);
2334 match attr.key.local_name().as_ref() {
2335 b"locked" => {
2336 f_locked = Some(val == "true" || val == "1");
2337 }
2338 b"defaultSize" => {
2339 f_default_size = Some(val == "true" || val == "1");
2340 }
2341 b"print" => {
2342 f_print = Some(val == "true" || val == "1");
2343 }
2344 b"disabled" => {
2345 f_disabled = Some(val == "true" || val == "1");
2346 }
2347 b"autoFill" => {
2348 f_auto_fill = Some(val == "true" || val == "1");
2349 }
2350 b"autoLine" => {
2351 f_auto_line = Some(val == "true" || val == "1");
2352 }
2353 b"altText" => {
2354 f_alt_text = Some(val.into_owned());
2355 }
2356 b"textHAlign" => {
2357 f_text_h_align = val.parse().ok();
2358 }
2359 b"textVAlign" => {
2360 f_text_v_align = val.parse().ok();
2361 }
2362 b"lockText" => {
2363 f_lock_text = Some(val == "true" || val == "1");
2364 }
2365 b"justLastX" => {
2366 f_just_last_x = Some(val == "true" || val == "1");
2367 }
2368 b"autoScale" => {
2369 f_auto_scale = Some(val == "true" || val == "1");
2370 }
2371 #[cfg(feature = "extra-attrs")]
2372 unknown => {
2373 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
2374 extra_attrs.insert(key, val.into_owned());
2375 }
2376 #[cfg(not(feature = "extra-attrs"))]
2377 _ => {}
2378 }
2379 }
2380
2381 if !is_empty {
2383 let mut buf = Vec::new();
2384 loop {
2385 match reader.read_event_into(&mut buf)? {
2386 Event::Start(e) => {
2387 match e.local_name().as_ref() {
2388 b"anchor" => {
2389 f_anchor =
2390 Some(Box::new(ObjectAnchor::from_xml(reader, &e, false)?));
2391 #[cfg(feature = "extra-children")]
2392 {
2393 child_idx += 1;
2394 }
2395 }
2396 #[cfg(feature = "extra-children")]
2397 _ => {
2398 let elem = RawXmlElement::from_reader(reader, &e)?;
2400 extra_children.push(PositionedNode::new(
2401 child_idx,
2402 RawXmlNode::Element(elem),
2403 ));
2404 child_idx += 1;
2405 }
2406 #[cfg(not(feature = "extra-children"))]
2407 _ => {
2408 skip_element(reader)?;
2410 }
2411 }
2412 }
2413 Event::Empty(e) => {
2414 match e.local_name().as_ref() {
2415 b"anchor" => {
2416 f_anchor =
2417 Some(Box::new(ObjectAnchor::from_xml(reader, &e, true)?));
2418 #[cfg(feature = "extra-children")]
2419 {
2420 child_idx += 1;
2421 }
2422 }
2423 #[cfg(feature = "extra-children")]
2424 _ => {
2425 let elem = RawXmlElement::from_empty(&e);
2427 extra_children.push(PositionedNode::new(
2428 child_idx,
2429 RawXmlNode::Element(elem),
2430 ));
2431 child_idx += 1;
2432 }
2433 #[cfg(not(feature = "extra-children"))]
2434 _ => {}
2435 }
2436 }
2437 Event::End(_) => break,
2438 Event::Eof => break,
2439 _ => {}
2440 }
2441 buf.clear();
2442 }
2443 }
2444
2445 Ok(Self {
2446 locked: f_locked,
2447 default_size: f_default_size,
2448 print: f_print,
2449 disabled: f_disabled,
2450 auto_fill: f_auto_fill,
2451 auto_line: f_auto_line,
2452 alt_text: f_alt_text,
2453 text_h_align: f_text_h_align,
2454 text_v_align: f_text_v_align,
2455 lock_text: f_lock_text,
2456 just_last_x: f_just_last_x,
2457 auto_scale: f_auto_scale,
2458 anchor: f_anchor.ok_or_else(|| ParseError::MissingAttribute("anchor".to_string()))?,
2459 #[cfg(feature = "extra-attrs")]
2460 extra_attrs,
2461 #[cfg(feature = "extra-children")]
2462 extra_children,
2463 })
2464 }
2465}
2466
2467impl FromXml for MapInfo {
2468 fn from_xml<R: BufRead>(
2469 reader: &mut Reader<R>,
2470 start_tag: &BytesStart,
2471 is_empty: bool,
2472 ) -> Result<Self, ParseError> {
2473 let mut f_selection_namespaces: Option<String> = None;
2474 let mut f_schema = Vec::new();
2475 let mut f_map = Vec::new();
2476 #[cfg(feature = "extra-attrs")]
2477 let mut extra_attrs = std::collections::HashMap::new();
2478 #[cfg(feature = "extra-children")]
2479 let mut extra_children = Vec::new();
2480 #[cfg(feature = "extra-children")]
2481 let mut child_idx: usize = 0;
2482
2483 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
2485 let val = String::from_utf8_lossy(&attr.value);
2486 match attr.key.local_name().as_ref() {
2487 b"SelectionNamespaces" => {
2488 f_selection_namespaces = Some(val.into_owned());
2489 }
2490 #[cfg(feature = "extra-attrs")]
2491 unknown => {
2492 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
2493 extra_attrs.insert(key, val.into_owned());
2494 }
2495 #[cfg(not(feature = "extra-attrs"))]
2496 _ => {}
2497 }
2498 }
2499
2500 if !is_empty {
2502 let mut buf = Vec::new();
2503 loop {
2504 match reader.read_event_into(&mut buf)? {
2505 Event::Start(e) => {
2506 match e.local_name().as_ref() {
2507 b"Schema" => {
2508 f_schema.push(XmlSchema::from_xml(reader, &e, false)?);
2509 #[cfg(feature = "extra-children")]
2510 {
2511 child_idx += 1;
2512 }
2513 }
2514 b"Map" => {
2515 f_map.push(XmlMap::from_xml(reader, &e, false)?);
2516 #[cfg(feature = "extra-children")]
2517 {
2518 child_idx += 1;
2519 }
2520 }
2521 #[cfg(feature = "extra-children")]
2522 _ => {
2523 let elem = RawXmlElement::from_reader(reader, &e)?;
2525 extra_children.push(PositionedNode::new(
2526 child_idx,
2527 RawXmlNode::Element(elem),
2528 ));
2529 child_idx += 1;
2530 }
2531 #[cfg(not(feature = "extra-children"))]
2532 _ => {
2533 skip_element(reader)?;
2535 }
2536 }
2537 }
2538 Event::Empty(e) => {
2539 match e.local_name().as_ref() {
2540 b"Schema" => {
2541 f_schema.push(XmlSchema::from_xml(reader, &e, true)?);
2542 #[cfg(feature = "extra-children")]
2543 {
2544 child_idx += 1;
2545 }
2546 }
2547 b"Map" => {
2548 f_map.push(XmlMap::from_xml(reader, &e, true)?);
2549 #[cfg(feature = "extra-children")]
2550 {
2551 child_idx += 1;
2552 }
2553 }
2554 #[cfg(feature = "extra-children")]
2555 _ => {
2556 let elem = RawXmlElement::from_empty(&e);
2558 extra_children.push(PositionedNode::new(
2559 child_idx,
2560 RawXmlNode::Element(elem),
2561 ));
2562 child_idx += 1;
2563 }
2564 #[cfg(not(feature = "extra-children"))]
2565 _ => {}
2566 }
2567 }
2568 Event::End(_) => break,
2569 Event::Eof => break,
2570 _ => {}
2571 }
2572 buf.clear();
2573 }
2574 }
2575
2576 Ok(Self {
2577 selection_namespaces: f_selection_namespaces
2578 .ok_or_else(|| ParseError::MissingAttribute("SelectionNamespaces".to_string()))?,
2579 schema: f_schema,
2580 map: f_map,
2581 #[cfg(feature = "extra-attrs")]
2582 extra_attrs,
2583 #[cfg(feature = "extra-children")]
2584 extra_children,
2585 })
2586 }
2587}
2588
2589impl FromXml for XmlSchema {
2590 fn from_xml<R: BufRead>(
2591 reader: &mut Reader<R>,
2592 start_tag: &BytesStart,
2593 is_empty: bool,
2594 ) -> Result<Self, ParseError> {
2595 #[cfg(feature = "extra-children")]
2596 let mut extra_children = Vec::new();
2597 #[cfg(feature = "extra-children")]
2598 let mut child_idx: usize = 0;
2599 if !is_empty {
2600 let mut buf = Vec::new();
2601 loop {
2602 match reader.read_event_into(&mut buf)? {
2603 #[cfg(feature = "extra-children")]
2604 Event::Start(e) => {
2605 let elem = RawXmlElement::from_reader(reader, &e)?;
2606 extra_children
2607 .push(PositionedNode::new(child_idx, RawXmlNode::Element(elem)));
2608 child_idx += 1;
2609 }
2610 #[cfg(not(feature = "extra-children"))]
2611 Event::Start(_) => {
2612 skip_element(reader)?;
2613 }
2614 #[cfg(feature = "extra-children")]
2615 Event::Empty(e) => {
2616 let elem = RawXmlElement::from_empty(&e);
2617 extra_children
2618 .push(PositionedNode::new(child_idx, RawXmlNode::Element(elem)));
2619 child_idx += 1;
2620 }
2621 #[cfg(not(feature = "extra-children"))]
2622 Event::Empty(_) => {}
2623 Event::End(_) => break,
2624 Event::Eof => break,
2625 _ => {}
2626 }
2627 buf.clear();
2628 }
2629 }
2630 Ok(Self {
2631 #[cfg(feature = "extra-children")]
2632 extra_children,
2633 })
2634 }
2635}
2636
2637impl FromXml for XmlMap {
2638 fn from_xml<R: BufRead>(
2639 reader: &mut Reader<R>,
2640 start_tag: &BytesStart,
2641 is_empty: bool,
2642 ) -> Result<Self, ParseError> {
2643 let mut f_i_d: Option<u32> = None;
2644 let mut f_name: Option<String> = None;
2645 let mut f_root_element: Option<String> = None;
2646 let mut f_schema_i_d: Option<String> = None;
2647 let mut f_show_import_export_validation_errors: Option<bool> = None;
2648 let mut f_auto_fit: Option<bool> = None;
2649 let mut f_append: Option<bool> = None;
2650 let mut f_preserve_sort_a_f_layout: Option<bool> = None;
2651 let mut f_preserve_format: Option<bool> = None;
2652 let mut f_data_binding = None;
2653 #[cfg(feature = "extra-attrs")]
2654 let mut extra_attrs = std::collections::HashMap::new();
2655 #[cfg(feature = "extra-children")]
2656 let mut extra_children = Vec::new();
2657 #[cfg(feature = "extra-children")]
2658 let mut child_idx: usize = 0;
2659
2660 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
2662 let val = String::from_utf8_lossy(&attr.value);
2663 match attr.key.local_name().as_ref() {
2664 b"ID" => {
2665 f_i_d = val.parse().ok();
2666 }
2667 b"Name" => {
2668 f_name = Some(val.into_owned());
2669 }
2670 b"RootElement" => {
2671 f_root_element = Some(val.into_owned());
2672 }
2673 b"SchemaID" => {
2674 f_schema_i_d = Some(val.into_owned());
2675 }
2676 b"ShowImportExportValidationErrors" => {
2677 f_show_import_export_validation_errors = Some(val == "true" || val == "1");
2678 }
2679 b"AutoFit" => {
2680 f_auto_fit = Some(val == "true" || val == "1");
2681 }
2682 b"Append" => {
2683 f_append = Some(val == "true" || val == "1");
2684 }
2685 b"PreserveSortAFLayout" => {
2686 f_preserve_sort_a_f_layout = Some(val == "true" || val == "1");
2687 }
2688 b"PreserveFormat" => {
2689 f_preserve_format = Some(val == "true" || val == "1");
2690 }
2691 #[cfg(feature = "extra-attrs")]
2692 unknown => {
2693 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
2694 extra_attrs.insert(key, val.into_owned());
2695 }
2696 #[cfg(not(feature = "extra-attrs"))]
2697 _ => {}
2698 }
2699 }
2700
2701 if !is_empty {
2703 let mut buf = Vec::new();
2704 loop {
2705 match reader.read_event_into(&mut buf)? {
2706 Event::Start(e) => {
2707 match e.local_name().as_ref() {
2708 b"DataBinding" => {
2709 f_data_binding =
2710 Some(Box::new(DataBinding::from_xml(reader, &e, false)?));
2711 #[cfg(feature = "extra-children")]
2712 {
2713 child_idx += 1;
2714 }
2715 }
2716 #[cfg(feature = "extra-children")]
2717 _ => {
2718 let elem = RawXmlElement::from_reader(reader, &e)?;
2720 extra_children.push(PositionedNode::new(
2721 child_idx,
2722 RawXmlNode::Element(elem),
2723 ));
2724 child_idx += 1;
2725 }
2726 #[cfg(not(feature = "extra-children"))]
2727 _ => {
2728 skip_element(reader)?;
2730 }
2731 }
2732 }
2733 Event::Empty(e) => {
2734 match e.local_name().as_ref() {
2735 b"DataBinding" => {
2736 f_data_binding =
2737 Some(Box::new(DataBinding::from_xml(reader, &e, true)?));
2738 #[cfg(feature = "extra-children")]
2739 {
2740 child_idx += 1;
2741 }
2742 }
2743 #[cfg(feature = "extra-children")]
2744 _ => {
2745 let elem = RawXmlElement::from_empty(&e);
2747 extra_children.push(PositionedNode::new(
2748 child_idx,
2749 RawXmlNode::Element(elem),
2750 ));
2751 child_idx += 1;
2752 }
2753 #[cfg(not(feature = "extra-children"))]
2754 _ => {}
2755 }
2756 }
2757 Event::End(_) => break,
2758 Event::Eof => break,
2759 _ => {}
2760 }
2761 buf.clear();
2762 }
2763 }
2764
2765 Ok(Self {
2766 i_d: f_i_d.ok_or_else(|| ParseError::MissingAttribute("ID".to_string()))?,
2767 name: f_name.ok_or_else(|| ParseError::MissingAttribute("Name".to_string()))?,
2768 root_element: f_root_element
2769 .ok_or_else(|| ParseError::MissingAttribute("RootElement".to_string()))?,
2770 schema_i_d: f_schema_i_d
2771 .ok_or_else(|| ParseError::MissingAttribute("SchemaID".to_string()))?,
2772 show_import_export_validation_errors: f_show_import_export_validation_errors
2773 .ok_or_else(|| {
2774 ParseError::MissingAttribute("ShowImportExportValidationErrors".to_string())
2775 })?,
2776 auto_fit: f_auto_fit
2777 .ok_or_else(|| ParseError::MissingAttribute("AutoFit".to_string()))?,
2778 append: f_append.ok_or_else(|| ParseError::MissingAttribute("Append".to_string()))?,
2779 preserve_sort_a_f_layout: f_preserve_sort_a_f_layout
2780 .ok_or_else(|| ParseError::MissingAttribute("PreserveSortAFLayout".to_string()))?,
2781 preserve_format: f_preserve_format
2782 .ok_or_else(|| ParseError::MissingAttribute("PreserveFormat".to_string()))?,
2783 data_binding: f_data_binding,
2784 #[cfg(feature = "extra-attrs")]
2785 extra_attrs,
2786 #[cfg(feature = "extra-children")]
2787 extra_children,
2788 })
2789 }
2790}
2791
2792impl FromXml for DataBinding {
2793 fn from_xml<R: BufRead>(
2794 reader: &mut Reader<R>,
2795 start_tag: &BytesStart,
2796 is_empty: bool,
2797 ) -> Result<Self, ParseError> {
2798 let mut f_data_binding_name = None;
2799 let mut f_file_binding = None;
2800 let mut f_connection_i_d = None;
2801 let mut f_file_binding_name = None;
2802 let mut f_data_binding_load_mode: Option<u32> = None;
2803 #[cfg(feature = "extra-attrs")]
2804 let mut extra_attrs = std::collections::HashMap::new();
2805
2806 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
2808 let val = String::from_utf8_lossy(&attr.value);
2809 match attr.key.local_name().as_ref() {
2810 b"DataBindingName" => {
2811 f_data_binding_name = Some(val.into_owned());
2812 }
2813 b"FileBinding" => {
2814 f_file_binding = Some(val == "true" || val == "1");
2815 }
2816 b"ConnectionID" => {
2817 f_connection_i_d = val.parse().ok();
2818 }
2819 b"FileBindingName" => {
2820 f_file_binding_name = Some(val.into_owned());
2821 }
2822 b"DataBindingLoadMode" => {
2823 f_data_binding_load_mode = val.parse().ok();
2824 }
2825 #[cfg(feature = "extra-attrs")]
2826 unknown => {
2827 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
2828 extra_attrs.insert(key, val.into_owned());
2829 }
2830 #[cfg(not(feature = "extra-attrs"))]
2831 _ => {}
2832 }
2833 }
2834
2835 if !is_empty {
2836 let mut buf = Vec::new();
2837 loop {
2838 match reader.read_event_into(&mut buf)? {
2839 Event::End(_) => break,
2840 Event::Eof => break,
2841 _ => {}
2842 }
2843 buf.clear();
2844 }
2845 }
2846
2847 Ok(Self {
2848 data_binding_name: f_data_binding_name,
2849 file_binding: f_file_binding,
2850 connection_i_d: f_connection_i_d,
2851 file_binding_name: f_file_binding_name,
2852 data_binding_load_mode: f_data_binding_load_mode
2853 .ok_or_else(|| ParseError::MissingAttribute("DataBindingLoadMode".to_string()))?,
2854 #[cfg(feature = "extra-attrs")]
2855 extra_attrs,
2856 })
2857 }
2858}
2859
2860impl FromXml for Connections {
2861 fn from_xml<R: BufRead>(
2862 reader: &mut Reader<R>,
2863 start_tag: &BytesStart,
2864 is_empty: bool,
2865 ) -> Result<Self, ParseError> {
2866 let mut f_connection = Vec::new();
2867 #[cfg(feature = "extra-children")]
2868 let mut extra_children = Vec::new();
2869 #[cfg(feature = "extra-children")]
2870 let mut child_idx: usize = 0;
2871
2872 if !is_empty {
2874 let mut buf = Vec::new();
2875 loop {
2876 match reader.read_event_into(&mut buf)? {
2877 Event::Start(e) => {
2878 match e.local_name().as_ref() {
2879 b"connection" => {
2880 f_connection.push(Connection::from_xml(reader, &e, false)?);
2881 #[cfg(feature = "extra-children")]
2882 {
2883 child_idx += 1;
2884 }
2885 }
2886 #[cfg(feature = "extra-children")]
2887 _ => {
2888 let elem = RawXmlElement::from_reader(reader, &e)?;
2890 extra_children.push(PositionedNode::new(
2891 child_idx,
2892 RawXmlNode::Element(elem),
2893 ));
2894 child_idx += 1;
2895 }
2896 #[cfg(not(feature = "extra-children"))]
2897 _ => {
2898 skip_element(reader)?;
2900 }
2901 }
2902 }
2903 Event::Empty(e) => {
2904 match e.local_name().as_ref() {
2905 b"connection" => {
2906 f_connection.push(Connection::from_xml(reader, &e, true)?);
2907 #[cfg(feature = "extra-children")]
2908 {
2909 child_idx += 1;
2910 }
2911 }
2912 #[cfg(feature = "extra-children")]
2913 _ => {
2914 let elem = RawXmlElement::from_empty(&e);
2916 extra_children.push(PositionedNode::new(
2917 child_idx,
2918 RawXmlNode::Element(elem),
2919 ));
2920 child_idx += 1;
2921 }
2922 #[cfg(not(feature = "extra-children"))]
2923 _ => {}
2924 }
2925 }
2926 Event::End(_) => break,
2927 Event::Eof => break,
2928 _ => {}
2929 }
2930 buf.clear();
2931 }
2932 }
2933
2934 Ok(Self {
2935 connection: f_connection,
2936 #[cfg(feature = "extra-children")]
2937 extra_children,
2938 })
2939 }
2940}
2941
2942impl FromXml for Connection {
2943 fn from_xml<R: BufRead>(
2944 reader: &mut Reader<R>,
2945 start_tag: &BytesStart,
2946 is_empty: bool,
2947 ) -> Result<Self, ParseError> {
2948 let mut f_id: Option<u32> = None;
2949 let mut f_source_file = None;
2950 let mut f_odc_file = None;
2951 let mut f_keep_alive = None;
2952 let mut f_interval = None;
2953 let mut f_name = None;
2954 let mut f_description = None;
2955 let mut f_type = None;
2956 let mut f_reconnection_method = None;
2957 let mut f_refreshed_version: Option<u8> = None;
2958 let mut f_min_refreshable_version = None;
2959 let mut f_save_password = None;
2960 let mut f_new = None;
2961 let mut f_deleted = None;
2962 let mut f_only_use_connection_file = None;
2963 let mut f_background = None;
2964 let mut f_refresh_on_load = None;
2965 let mut f_save_data = None;
2966 let mut f_credentials = None;
2967 let mut f_single_sign_on_id = None;
2968 let mut f_db_pr = None;
2969 let mut f_olap_pr = None;
2970 let mut f_web_pr = None;
2971 let mut f_text_pr = None;
2972 let mut f_parameters = None;
2973 let mut f_extension_list = None;
2974 #[cfg(feature = "extra-attrs")]
2975 let mut extra_attrs = std::collections::HashMap::new();
2976 #[cfg(feature = "extra-children")]
2977 let mut extra_children = Vec::new();
2978 #[cfg(feature = "extra-children")]
2979 let mut child_idx: usize = 0;
2980
2981 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
2983 let val = String::from_utf8_lossy(&attr.value);
2984 match attr.key.local_name().as_ref() {
2985 b"id" => {
2986 f_id = val.parse().ok();
2987 }
2988 b"sourceFile" => {
2989 f_source_file = Some(val.into_owned());
2990 }
2991 b"odcFile" => {
2992 f_odc_file = Some(val.into_owned());
2993 }
2994 b"keepAlive" => {
2995 f_keep_alive = Some(val == "true" || val == "1");
2996 }
2997 b"interval" => {
2998 f_interval = val.parse().ok();
2999 }
3000 b"name" => {
3001 f_name = Some(val.into_owned());
3002 }
3003 b"description" => {
3004 f_description = Some(val.into_owned());
3005 }
3006 b"type" => {
3007 f_type = val.parse().ok();
3008 }
3009 b"reconnectionMethod" => {
3010 f_reconnection_method = val.parse().ok();
3011 }
3012 b"refreshedVersion" => {
3013 f_refreshed_version = val.parse().ok();
3014 }
3015 b"minRefreshableVersion" => {
3016 f_min_refreshable_version = val.parse().ok();
3017 }
3018 b"savePassword" => {
3019 f_save_password = Some(val == "true" || val == "1");
3020 }
3021 b"new" => {
3022 f_new = Some(val == "true" || val == "1");
3023 }
3024 b"deleted" => {
3025 f_deleted = Some(val == "true" || val == "1");
3026 }
3027 b"onlyUseConnectionFile" => {
3028 f_only_use_connection_file = Some(val == "true" || val == "1");
3029 }
3030 b"background" => {
3031 f_background = Some(val == "true" || val == "1");
3032 }
3033 b"refreshOnLoad" => {
3034 f_refresh_on_load = Some(val == "true" || val == "1");
3035 }
3036 b"saveData" => {
3037 f_save_data = Some(val == "true" || val == "1");
3038 }
3039 b"credentials" => {
3040 f_credentials = val.parse().ok();
3041 }
3042 b"singleSignOnId" => {
3043 f_single_sign_on_id = Some(val.into_owned());
3044 }
3045 #[cfg(feature = "extra-attrs")]
3046 unknown => {
3047 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
3048 extra_attrs.insert(key, val.into_owned());
3049 }
3050 #[cfg(not(feature = "extra-attrs"))]
3051 _ => {}
3052 }
3053 }
3054
3055 if !is_empty {
3057 let mut buf = Vec::new();
3058 loop {
3059 match reader.read_event_into(&mut buf)? {
3060 Event::Start(e) => {
3061 match e.local_name().as_ref() {
3062 b"dbPr" => {
3063 f_db_pr = Some(Box::new(DatabaseProperties::from_xml(
3064 reader, &e, false,
3065 )?));
3066 #[cfg(feature = "extra-children")]
3067 {
3068 child_idx += 1;
3069 }
3070 }
3071 b"olapPr" => {
3072 f_olap_pr =
3073 Some(Box::new(OlapProperties::from_xml(reader, &e, false)?));
3074 #[cfg(feature = "extra-children")]
3075 {
3076 child_idx += 1;
3077 }
3078 }
3079 b"webPr" => {
3080 f_web_pr = Some(Box::new(WebQueryProperties::from_xml(
3081 reader, &e, false,
3082 )?));
3083 #[cfg(feature = "extra-children")]
3084 {
3085 child_idx += 1;
3086 }
3087 }
3088 b"textPr" => {
3089 f_text_pr = Some(Box::new(TextImportProperties::from_xml(
3090 reader, &e, false,
3091 )?));
3092 #[cfg(feature = "extra-children")]
3093 {
3094 child_idx += 1;
3095 }
3096 }
3097 b"parameters" => {
3098 f_parameters =
3099 Some(Box::new(Parameters::from_xml(reader, &e, false)?));
3100 #[cfg(feature = "extra-children")]
3101 {
3102 child_idx += 1;
3103 }
3104 }
3105 b"extLst" => {
3106 f_extension_list =
3107 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
3108 #[cfg(feature = "extra-children")]
3109 {
3110 child_idx += 1;
3111 }
3112 }
3113 #[cfg(feature = "extra-children")]
3114 _ => {
3115 let elem = RawXmlElement::from_reader(reader, &e)?;
3117 extra_children.push(PositionedNode::new(
3118 child_idx,
3119 RawXmlNode::Element(elem),
3120 ));
3121 child_idx += 1;
3122 }
3123 #[cfg(not(feature = "extra-children"))]
3124 _ => {
3125 skip_element(reader)?;
3127 }
3128 }
3129 }
3130 Event::Empty(e) => {
3131 match e.local_name().as_ref() {
3132 b"dbPr" => {
3133 f_db_pr =
3134 Some(Box::new(DatabaseProperties::from_xml(reader, &e, true)?));
3135 #[cfg(feature = "extra-children")]
3136 {
3137 child_idx += 1;
3138 }
3139 }
3140 b"olapPr" => {
3141 f_olap_pr =
3142 Some(Box::new(OlapProperties::from_xml(reader, &e, true)?));
3143 #[cfg(feature = "extra-children")]
3144 {
3145 child_idx += 1;
3146 }
3147 }
3148 b"webPr" => {
3149 f_web_pr =
3150 Some(Box::new(WebQueryProperties::from_xml(reader, &e, true)?));
3151 #[cfg(feature = "extra-children")]
3152 {
3153 child_idx += 1;
3154 }
3155 }
3156 b"textPr" => {
3157 f_text_pr = Some(Box::new(TextImportProperties::from_xml(
3158 reader, &e, true,
3159 )?));
3160 #[cfg(feature = "extra-children")]
3161 {
3162 child_idx += 1;
3163 }
3164 }
3165 b"parameters" => {
3166 f_parameters =
3167 Some(Box::new(Parameters::from_xml(reader, &e, true)?));
3168 #[cfg(feature = "extra-children")]
3169 {
3170 child_idx += 1;
3171 }
3172 }
3173 b"extLst" => {
3174 f_extension_list =
3175 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
3176 #[cfg(feature = "extra-children")]
3177 {
3178 child_idx += 1;
3179 }
3180 }
3181 #[cfg(feature = "extra-children")]
3182 _ => {
3183 let elem = RawXmlElement::from_empty(&e);
3185 extra_children.push(PositionedNode::new(
3186 child_idx,
3187 RawXmlNode::Element(elem),
3188 ));
3189 child_idx += 1;
3190 }
3191 #[cfg(not(feature = "extra-children"))]
3192 _ => {}
3193 }
3194 }
3195 Event::End(_) => break,
3196 Event::Eof => break,
3197 _ => {}
3198 }
3199 buf.clear();
3200 }
3201 }
3202
3203 Ok(Self {
3204 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
3205 source_file: f_source_file,
3206 odc_file: f_odc_file,
3207 keep_alive: f_keep_alive,
3208 interval: f_interval,
3209 name: f_name,
3210 description: f_description,
3211 r#type: f_type,
3212 reconnection_method: f_reconnection_method,
3213 refreshed_version: f_refreshed_version
3214 .ok_or_else(|| ParseError::MissingAttribute("refreshedVersion".to_string()))?,
3215 min_refreshable_version: f_min_refreshable_version,
3216 save_password: f_save_password,
3217 new: f_new,
3218 deleted: f_deleted,
3219 only_use_connection_file: f_only_use_connection_file,
3220 background: f_background,
3221 refresh_on_load: f_refresh_on_load,
3222 save_data: f_save_data,
3223 credentials: f_credentials,
3224 single_sign_on_id: f_single_sign_on_id,
3225 db_pr: f_db_pr,
3226 olap_pr: f_olap_pr,
3227 web_pr: f_web_pr,
3228 text_pr: f_text_pr,
3229 parameters: f_parameters,
3230 extension_list: f_extension_list,
3231 #[cfg(feature = "extra-attrs")]
3232 extra_attrs,
3233 #[cfg(feature = "extra-children")]
3234 extra_children,
3235 })
3236 }
3237}
3238
3239impl FromXml for DatabaseProperties {
3240 fn from_xml<R: BufRead>(
3241 reader: &mut Reader<R>,
3242 start_tag: &BytesStart,
3243 is_empty: bool,
3244 ) -> Result<Self, ParseError> {
3245 let mut f_connection: Option<XmlString> = None;
3246 let mut f_command = None;
3247 let mut f_server_command = None;
3248 let mut f_command_type = None;
3249 #[cfg(feature = "extra-attrs")]
3250 let mut extra_attrs = std::collections::HashMap::new();
3251
3252 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
3254 let val = String::from_utf8_lossy(&attr.value);
3255 match attr.key.local_name().as_ref() {
3256 b"connection" => {
3257 f_connection = Some(val.into_owned());
3258 }
3259 b"command" => {
3260 f_command = Some(val.into_owned());
3261 }
3262 b"serverCommand" => {
3263 f_server_command = Some(val.into_owned());
3264 }
3265 b"commandType" => {
3266 f_command_type = val.parse().ok();
3267 }
3268 #[cfg(feature = "extra-attrs")]
3269 unknown => {
3270 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
3271 extra_attrs.insert(key, val.into_owned());
3272 }
3273 #[cfg(not(feature = "extra-attrs"))]
3274 _ => {}
3275 }
3276 }
3277
3278 if !is_empty {
3279 let mut buf = Vec::new();
3280 loop {
3281 match reader.read_event_into(&mut buf)? {
3282 Event::End(_) => break,
3283 Event::Eof => break,
3284 _ => {}
3285 }
3286 buf.clear();
3287 }
3288 }
3289
3290 Ok(Self {
3291 connection: f_connection
3292 .ok_or_else(|| ParseError::MissingAttribute("connection".to_string()))?,
3293 command: f_command,
3294 server_command: f_server_command,
3295 command_type: f_command_type,
3296 #[cfg(feature = "extra-attrs")]
3297 extra_attrs,
3298 })
3299 }
3300}
3301
3302impl FromXml for OlapProperties {
3303 fn from_xml<R: BufRead>(
3304 reader: &mut Reader<R>,
3305 start_tag: &BytesStart,
3306 is_empty: bool,
3307 ) -> Result<Self, ParseError> {
3308 let mut f_local = None;
3309 let mut f_local_connection = None;
3310 let mut f_local_refresh = None;
3311 let mut f_send_locale = None;
3312 let mut f_row_drill_count = None;
3313 let mut f_server_fill = None;
3314 let mut f_server_number_format = None;
3315 let mut f_server_font = None;
3316 let mut f_server_font_color = None;
3317 #[cfg(feature = "extra-attrs")]
3318 let mut extra_attrs = std::collections::HashMap::new();
3319
3320 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
3322 let val = String::from_utf8_lossy(&attr.value);
3323 match attr.key.local_name().as_ref() {
3324 b"local" => {
3325 f_local = Some(val == "true" || val == "1");
3326 }
3327 b"localConnection" => {
3328 f_local_connection = Some(val.into_owned());
3329 }
3330 b"localRefresh" => {
3331 f_local_refresh = Some(val == "true" || val == "1");
3332 }
3333 b"sendLocale" => {
3334 f_send_locale = Some(val == "true" || val == "1");
3335 }
3336 b"rowDrillCount" => {
3337 f_row_drill_count = val.parse().ok();
3338 }
3339 b"serverFill" => {
3340 f_server_fill = Some(val == "true" || val == "1");
3341 }
3342 b"serverNumberFormat" => {
3343 f_server_number_format = Some(val == "true" || val == "1");
3344 }
3345 b"serverFont" => {
3346 f_server_font = Some(val == "true" || val == "1");
3347 }
3348 b"serverFontColor" => {
3349 f_server_font_color = Some(val == "true" || val == "1");
3350 }
3351 #[cfg(feature = "extra-attrs")]
3352 unknown => {
3353 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
3354 extra_attrs.insert(key, val.into_owned());
3355 }
3356 #[cfg(not(feature = "extra-attrs"))]
3357 _ => {}
3358 }
3359 }
3360
3361 if !is_empty {
3362 let mut buf = Vec::new();
3363 loop {
3364 match reader.read_event_into(&mut buf)? {
3365 Event::End(_) => break,
3366 Event::Eof => break,
3367 _ => {}
3368 }
3369 buf.clear();
3370 }
3371 }
3372
3373 Ok(Self {
3374 local: f_local,
3375 local_connection: f_local_connection,
3376 local_refresh: f_local_refresh,
3377 send_locale: f_send_locale,
3378 row_drill_count: f_row_drill_count,
3379 server_fill: f_server_fill,
3380 server_number_format: f_server_number_format,
3381 server_font: f_server_font,
3382 server_font_color: f_server_font_color,
3383 #[cfg(feature = "extra-attrs")]
3384 extra_attrs,
3385 })
3386 }
3387}
3388
3389impl FromXml for WebQueryProperties {
3390 fn from_xml<R: BufRead>(
3391 reader: &mut Reader<R>,
3392 start_tag: &BytesStart,
3393 is_empty: bool,
3394 ) -> Result<Self, ParseError> {
3395 let mut f_xml = None;
3396 let mut f_source_data = None;
3397 let mut f_parse_pre = None;
3398 let mut f_consecutive = None;
3399 let mut f_first_row = None;
3400 let mut f_xl97 = None;
3401 let mut f_text_dates = None;
3402 let mut f_xl2000 = None;
3403 let mut f_url = None;
3404 let mut f_post = None;
3405 let mut f_html_tables = None;
3406 let mut f_html_format = None;
3407 let mut f_edit_page = None;
3408 let mut f_tables = None;
3409 #[cfg(feature = "extra-attrs")]
3410 let mut extra_attrs = std::collections::HashMap::new();
3411 #[cfg(feature = "extra-children")]
3412 let mut extra_children = Vec::new();
3413 #[cfg(feature = "extra-children")]
3414 let mut child_idx: usize = 0;
3415
3416 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
3418 let val = String::from_utf8_lossy(&attr.value);
3419 match attr.key.local_name().as_ref() {
3420 b"xml" => {
3421 f_xml = Some(val == "true" || val == "1");
3422 }
3423 b"sourceData" => {
3424 f_source_data = Some(val == "true" || val == "1");
3425 }
3426 b"parsePre" => {
3427 f_parse_pre = Some(val == "true" || val == "1");
3428 }
3429 b"consecutive" => {
3430 f_consecutive = Some(val == "true" || val == "1");
3431 }
3432 b"firstRow" => {
3433 f_first_row = Some(val == "true" || val == "1");
3434 }
3435 b"xl97" => {
3436 f_xl97 = Some(val == "true" || val == "1");
3437 }
3438 b"textDates" => {
3439 f_text_dates = Some(val == "true" || val == "1");
3440 }
3441 b"xl2000" => {
3442 f_xl2000 = Some(val == "true" || val == "1");
3443 }
3444 b"url" => {
3445 f_url = Some(val.into_owned());
3446 }
3447 b"post" => {
3448 f_post = Some(val.into_owned());
3449 }
3450 b"htmlTables" => {
3451 f_html_tables = Some(val == "true" || val == "1");
3452 }
3453 b"htmlFormat" => {
3454 f_html_format = val.parse().ok();
3455 }
3456 b"editPage" => {
3457 f_edit_page = Some(val.into_owned());
3458 }
3459 #[cfg(feature = "extra-attrs")]
3460 unknown => {
3461 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
3462 extra_attrs.insert(key, val.into_owned());
3463 }
3464 #[cfg(not(feature = "extra-attrs"))]
3465 _ => {}
3466 }
3467 }
3468
3469 if !is_empty {
3471 let mut buf = Vec::new();
3472 loop {
3473 match reader.read_event_into(&mut buf)? {
3474 Event::Start(e) => {
3475 match e.local_name().as_ref() {
3476 b"tables" => {
3477 f_tables = Some(Box::new(DataTables::from_xml(reader, &e, false)?));
3478 #[cfg(feature = "extra-children")]
3479 {
3480 child_idx += 1;
3481 }
3482 }
3483 #[cfg(feature = "extra-children")]
3484 _ => {
3485 let elem = RawXmlElement::from_reader(reader, &e)?;
3487 extra_children.push(PositionedNode::new(
3488 child_idx,
3489 RawXmlNode::Element(elem),
3490 ));
3491 child_idx += 1;
3492 }
3493 #[cfg(not(feature = "extra-children"))]
3494 _ => {
3495 skip_element(reader)?;
3497 }
3498 }
3499 }
3500 Event::Empty(e) => {
3501 match e.local_name().as_ref() {
3502 b"tables" => {
3503 f_tables = Some(Box::new(DataTables::from_xml(reader, &e, true)?));
3504 #[cfg(feature = "extra-children")]
3505 {
3506 child_idx += 1;
3507 }
3508 }
3509 #[cfg(feature = "extra-children")]
3510 _ => {
3511 let elem = RawXmlElement::from_empty(&e);
3513 extra_children.push(PositionedNode::new(
3514 child_idx,
3515 RawXmlNode::Element(elem),
3516 ));
3517 child_idx += 1;
3518 }
3519 #[cfg(not(feature = "extra-children"))]
3520 _ => {}
3521 }
3522 }
3523 Event::End(_) => break,
3524 Event::Eof => break,
3525 _ => {}
3526 }
3527 buf.clear();
3528 }
3529 }
3530
3531 Ok(Self {
3532 xml: f_xml,
3533 source_data: f_source_data,
3534 parse_pre: f_parse_pre,
3535 consecutive: f_consecutive,
3536 first_row: f_first_row,
3537 xl97: f_xl97,
3538 text_dates: f_text_dates,
3539 xl2000: f_xl2000,
3540 url: f_url,
3541 post: f_post,
3542 html_tables: f_html_tables,
3543 html_format: f_html_format,
3544 edit_page: f_edit_page,
3545 tables: f_tables,
3546 #[cfg(feature = "extra-attrs")]
3547 extra_attrs,
3548 #[cfg(feature = "extra-children")]
3549 extra_children,
3550 })
3551 }
3552}
3553
3554impl FromXml for Parameters {
3555 fn from_xml<R: BufRead>(
3556 reader: &mut Reader<R>,
3557 start_tag: &BytesStart,
3558 is_empty: bool,
3559 ) -> Result<Self, ParseError> {
3560 let mut f_count = None;
3561 let mut f_parameter = Vec::new();
3562 #[cfg(feature = "extra-attrs")]
3563 let mut extra_attrs = std::collections::HashMap::new();
3564 #[cfg(feature = "extra-children")]
3565 let mut extra_children = Vec::new();
3566 #[cfg(feature = "extra-children")]
3567 let mut child_idx: usize = 0;
3568
3569 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
3571 let val = String::from_utf8_lossy(&attr.value);
3572 match attr.key.local_name().as_ref() {
3573 b"count" => {
3574 f_count = val.parse().ok();
3575 }
3576 #[cfg(feature = "extra-attrs")]
3577 unknown => {
3578 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
3579 extra_attrs.insert(key, val.into_owned());
3580 }
3581 #[cfg(not(feature = "extra-attrs"))]
3582 _ => {}
3583 }
3584 }
3585
3586 if !is_empty {
3588 let mut buf = Vec::new();
3589 loop {
3590 match reader.read_event_into(&mut buf)? {
3591 Event::Start(e) => {
3592 match e.local_name().as_ref() {
3593 b"parameter" => {
3594 f_parameter.push(Parameter::from_xml(reader, &e, false)?);
3595 #[cfg(feature = "extra-children")]
3596 {
3597 child_idx += 1;
3598 }
3599 }
3600 #[cfg(feature = "extra-children")]
3601 _ => {
3602 let elem = RawXmlElement::from_reader(reader, &e)?;
3604 extra_children.push(PositionedNode::new(
3605 child_idx,
3606 RawXmlNode::Element(elem),
3607 ));
3608 child_idx += 1;
3609 }
3610 #[cfg(not(feature = "extra-children"))]
3611 _ => {
3612 skip_element(reader)?;
3614 }
3615 }
3616 }
3617 Event::Empty(e) => {
3618 match e.local_name().as_ref() {
3619 b"parameter" => {
3620 f_parameter.push(Parameter::from_xml(reader, &e, true)?);
3621 #[cfg(feature = "extra-children")]
3622 {
3623 child_idx += 1;
3624 }
3625 }
3626 #[cfg(feature = "extra-children")]
3627 _ => {
3628 let elem = RawXmlElement::from_empty(&e);
3630 extra_children.push(PositionedNode::new(
3631 child_idx,
3632 RawXmlNode::Element(elem),
3633 ));
3634 child_idx += 1;
3635 }
3636 #[cfg(not(feature = "extra-children"))]
3637 _ => {}
3638 }
3639 }
3640 Event::End(_) => break,
3641 Event::Eof => break,
3642 _ => {}
3643 }
3644 buf.clear();
3645 }
3646 }
3647
3648 Ok(Self {
3649 count: f_count,
3650 parameter: f_parameter,
3651 #[cfg(feature = "extra-attrs")]
3652 extra_attrs,
3653 #[cfg(feature = "extra-children")]
3654 extra_children,
3655 })
3656 }
3657}
3658
3659impl FromXml for Parameter {
3660 fn from_xml<R: BufRead>(
3661 reader: &mut Reader<R>,
3662 start_tag: &BytesStart,
3663 is_empty: bool,
3664 ) -> Result<Self, ParseError> {
3665 let mut f_name = None;
3666 let mut f_sql_type = None;
3667 let mut f_parameter_type = None;
3668 let mut f_refresh_on_change = None;
3669 let mut f_prompt = None;
3670 let mut f_boolean = None;
3671 let mut f_double = None;
3672 let mut f_integer = None;
3673 let mut f_string = None;
3674 let mut f_cell = None;
3675 #[cfg(feature = "extra-attrs")]
3676 let mut extra_attrs = std::collections::HashMap::new();
3677
3678 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
3680 let val = String::from_utf8_lossy(&attr.value);
3681 match attr.key.local_name().as_ref() {
3682 b"name" => {
3683 f_name = Some(val.into_owned());
3684 }
3685 b"sqlType" => {
3686 f_sql_type = val.parse().ok();
3687 }
3688 b"parameterType" => {
3689 f_parameter_type = val.parse().ok();
3690 }
3691 b"refreshOnChange" => {
3692 f_refresh_on_change = Some(val == "true" || val == "1");
3693 }
3694 b"prompt" => {
3695 f_prompt = Some(val.into_owned());
3696 }
3697 b"boolean" => {
3698 f_boolean = Some(val == "true" || val == "1");
3699 }
3700 b"double" => {
3701 f_double = val.parse().ok();
3702 }
3703 b"integer" => {
3704 f_integer = val.parse().ok();
3705 }
3706 b"string" => {
3707 f_string = Some(val.into_owned());
3708 }
3709 b"cell" => {
3710 f_cell = Some(val.into_owned());
3711 }
3712 #[cfg(feature = "extra-attrs")]
3713 unknown => {
3714 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
3715 extra_attrs.insert(key, val.into_owned());
3716 }
3717 #[cfg(not(feature = "extra-attrs"))]
3718 _ => {}
3719 }
3720 }
3721
3722 if !is_empty {
3723 let mut buf = Vec::new();
3724 loop {
3725 match reader.read_event_into(&mut buf)? {
3726 Event::End(_) => break,
3727 Event::Eof => break,
3728 _ => {}
3729 }
3730 buf.clear();
3731 }
3732 }
3733
3734 Ok(Self {
3735 name: f_name,
3736 sql_type: f_sql_type,
3737 parameter_type: f_parameter_type,
3738 refresh_on_change: f_refresh_on_change,
3739 prompt: f_prompt,
3740 boolean: f_boolean,
3741 double: f_double,
3742 integer: f_integer,
3743 string: f_string,
3744 cell: f_cell,
3745 #[cfg(feature = "extra-attrs")]
3746 extra_attrs,
3747 })
3748 }
3749}
3750
3751impl FromXml for DataTables {
3752 fn from_xml<R: BufRead>(
3753 reader: &mut Reader<R>,
3754 start_tag: &BytesStart,
3755 is_empty: bool,
3756 ) -> Result<Self, ParseError> {
3757 let mut f_count = None;
3758 let mut f_m = Vec::new();
3759 let mut f_style_index = Vec::new();
3760 let mut f_x = Vec::new();
3761 #[cfg(feature = "extra-attrs")]
3762 let mut extra_attrs = std::collections::HashMap::new();
3763 #[cfg(feature = "extra-children")]
3764 let mut extra_children = Vec::new();
3765 #[cfg(feature = "extra-children")]
3766 let mut child_idx: usize = 0;
3767
3768 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
3770 let val = String::from_utf8_lossy(&attr.value);
3771 match attr.key.local_name().as_ref() {
3772 b"count" => {
3773 f_count = val.parse().ok();
3774 }
3775 #[cfg(feature = "extra-attrs")]
3776 unknown => {
3777 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
3778 extra_attrs.insert(key, val.into_owned());
3779 }
3780 #[cfg(not(feature = "extra-attrs"))]
3781 _ => {}
3782 }
3783 }
3784
3785 if !is_empty {
3787 let mut buf = Vec::new();
3788 loop {
3789 match reader.read_event_into(&mut buf)? {
3790 Event::Start(e) => {
3791 match e.local_name().as_ref() {
3792 b"m" => {
3793 f_m.push(TableMissing::from_xml(reader, &e, false)?);
3794 #[cfg(feature = "extra-children")]
3795 {
3796 child_idx += 1;
3797 }
3798 }
3799 b"s" => {
3800 f_style_index.push(CTXStringElement::from_xml(reader, &e, false)?);
3801 #[cfg(feature = "extra-children")]
3802 {
3803 child_idx += 1;
3804 }
3805 }
3806 b"x" => {
3807 f_x.push(CTIndex::from_xml(reader, &e, false)?);
3808 #[cfg(feature = "extra-children")]
3809 {
3810 child_idx += 1;
3811 }
3812 }
3813 #[cfg(feature = "extra-children")]
3814 _ => {
3815 let elem = RawXmlElement::from_reader(reader, &e)?;
3817 extra_children.push(PositionedNode::new(
3818 child_idx,
3819 RawXmlNode::Element(elem),
3820 ));
3821 child_idx += 1;
3822 }
3823 #[cfg(not(feature = "extra-children"))]
3824 _ => {
3825 skip_element(reader)?;
3827 }
3828 }
3829 }
3830 Event::Empty(e) => {
3831 match e.local_name().as_ref() {
3832 b"m" => {
3833 f_m.push(TableMissing::from_xml(reader, &e, true)?);
3834 #[cfg(feature = "extra-children")]
3835 {
3836 child_idx += 1;
3837 }
3838 }
3839 b"s" => {
3840 f_style_index.push(CTXStringElement::from_xml(reader, &e, true)?);
3841 #[cfg(feature = "extra-children")]
3842 {
3843 child_idx += 1;
3844 }
3845 }
3846 b"x" => {
3847 f_x.push(CTIndex::from_xml(reader, &e, true)?);
3848 #[cfg(feature = "extra-children")]
3849 {
3850 child_idx += 1;
3851 }
3852 }
3853 #[cfg(feature = "extra-children")]
3854 _ => {
3855 let elem = RawXmlElement::from_empty(&e);
3857 extra_children.push(PositionedNode::new(
3858 child_idx,
3859 RawXmlNode::Element(elem),
3860 ));
3861 child_idx += 1;
3862 }
3863 #[cfg(not(feature = "extra-children"))]
3864 _ => {}
3865 }
3866 }
3867 Event::End(_) => break,
3868 Event::Eof => break,
3869 _ => {}
3870 }
3871 buf.clear();
3872 }
3873 }
3874
3875 Ok(Self {
3876 count: f_count,
3877 m: f_m,
3878 style_index: f_style_index,
3879 x: f_x,
3880 #[cfg(feature = "extra-attrs")]
3881 extra_attrs,
3882 #[cfg(feature = "extra-children")]
3883 extra_children,
3884 })
3885 }
3886}
3887
3888impl FromXml for TableMissing {
3889 fn from_xml<R: BufRead>(
3890 reader: &mut Reader<R>,
3891 _start: &BytesStart,
3892 is_empty: bool,
3893 ) -> Result<Self, ParseError> {
3894 if !is_empty {
3895 let mut buf = Vec::new();
3896 let mut depth = 1u32;
3897 loop {
3898 match reader.read_event_into(&mut buf)? {
3899 Event::Start(_) => depth += 1,
3900 Event::End(_) => {
3901 depth -= 1;
3902 if depth == 0 {
3903 break;
3904 }
3905 }
3906 Event::Eof => break,
3907 _ => {}
3908 }
3909 buf.clear();
3910 }
3911 }
3912 Ok(Self {})
3913 }
3914}
3915
3916impl FromXml for TextImportProperties {
3917 fn from_xml<R: BufRead>(
3918 reader: &mut Reader<R>,
3919 start_tag: &BytesStart,
3920 is_empty: bool,
3921 ) -> Result<Self, ParseError> {
3922 let mut f_prompt = None;
3923 let mut f_file_type = None;
3924 let mut f_code_page = None;
3925 let mut f_character_set = None;
3926 let mut f_first_row = None;
3927 let mut f_source_file = None;
3928 let mut f_delimited = None;
3929 let mut f_decimal = None;
3930 let mut f_thousands = None;
3931 let mut f_tab = None;
3932 let mut f_space = None;
3933 let mut f_comma = None;
3934 let mut f_semicolon = None;
3935 let mut f_consecutive = None;
3936 let mut f_qualifier = None;
3937 let mut f_delimiter = None;
3938 let mut f_text_fields = None;
3939 #[cfg(feature = "extra-attrs")]
3940 let mut extra_attrs = std::collections::HashMap::new();
3941 #[cfg(feature = "extra-children")]
3942 let mut extra_children = Vec::new();
3943 #[cfg(feature = "extra-children")]
3944 let mut child_idx: usize = 0;
3945
3946 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
3948 let val = String::from_utf8_lossy(&attr.value);
3949 match attr.key.local_name().as_ref() {
3950 b"prompt" => {
3951 f_prompt = Some(val == "true" || val == "1");
3952 }
3953 b"fileType" => {
3954 f_file_type = val.parse().ok();
3955 }
3956 b"codePage" => {
3957 f_code_page = val.parse().ok();
3958 }
3959 b"characterSet" => {
3960 f_character_set = Some(val.into_owned());
3961 }
3962 b"firstRow" => {
3963 f_first_row = val.parse().ok();
3964 }
3965 b"sourceFile" => {
3966 f_source_file = Some(val.into_owned());
3967 }
3968 b"delimited" => {
3969 f_delimited = Some(val == "true" || val == "1");
3970 }
3971 b"decimal" => {
3972 f_decimal = Some(val.into_owned());
3973 }
3974 b"thousands" => {
3975 f_thousands = Some(val.into_owned());
3976 }
3977 b"tab" => {
3978 f_tab = Some(val == "true" || val == "1");
3979 }
3980 b"space" => {
3981 f_space = Some(val == "true" || val == "1");
3982 }
3983 b"comma" => {
3984 f_comma = Some(val == "true" || val == "1");
3985 }
3986 b"semicolon" => {
3987 f_semicolon = Some(val == "true" || val == "1");
3988 }
3989 b"consecutive" => {
3990 f_consecutive = Some(val == "true" || val == "1");
3991 }
3992 b"qualifier" => {
3993 f_qualifier = val.parse().ok();
3994 }
3995 b"delimiter" => {
3996 f_delimiter = Some(val.into_owned());
3997 }
3998 #[cfg(feature = "extra-attrs")]
3999 unknown => {
4000 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
4001 extra_attrs.insert(key, val.into_owned());
4002 }
4003 #[cfg(not(feature = "extra-attrs"))]
4004 _ => {}
4005 }
4006 }
4007
4008 if !is_empty {
4010 let mut buf = Vec::new();
4011 loop {
4012 match reader.read_event_into(&mut buf)? {
4013 Event::Start(e) => {
4014 match e.local_name().as_ref() {
4015 b"textFields" => {
4016 f_text_fields =
4017 Some(Box::new(TextFields::from_xml(reader, &e, false)?));
4018 #[cfg(feature = "extra-children")]
4019 {
4020 child_idx += 1;
4021 }
4022 }
4023 #[cfg(feature = "extra-children")]
4024 _ => {
4025 let elem = RawXmlElement::from_reader(reader, &e)?;
4027 extra_children.push(PositionedNode::new(
4028 child_idx,
4029 RawXmlNode::Element(elem),
4030 ));
4031 child_idx += 1;
4032 }
4033 #[cfg(not(feature = "extra-children"))]
4034 _ => {
4035 skip_element(reader)?;
4037 }
4038 }
4039 }
4040 Event::Empty(e) => {
4041 match e.local_name().as_ref() {
4042 b"textFields" => {
4043 f_text_fields =
4044 Some(Box::new(TextFields::from_xml(reader, &e, true)?));
4045 #[cfg(feature = "extra-children")]
4046 {
4047 child_idx += 1;
4048 }
4049 }
4050 #[cfg(feature = "extra-children")]
4051 _ => {
4052 let elem = RawXmlElement::from_empty(&e);
4054 extra_children.push(PositionedNode::new(
4055 child_idx,
4056 RawXmlNode::Element(elem),
4057 ));
4058 child_idx += 1;
4059 }
4060 #[cfg(not(feature = "extra-children"))]
4061 _ => {}
4062 }
4063 }
4064 Event::End(_) => break,
4065 Event::Eof => break,
4066 _ => {}
4067 }
4068 buf.clear();
4069 }
4070 }
4071
4072 Ok(Self {
4073 prompt: f_prompt,
4074 file_type: f_file_type,
4075 code_page: f_code_page,
4076 character_set: f_character_set,
4077 first_row: f_first_row,
4078 source_file: f_source_file,
4079 delimited: f_delimited,
4080 decimal: f_decimal,
4081 thousands: f_thousands,
4082 tab: f_tab,
4083 space: f_space,
4084 comma: f_comma,
4085 semicolon: f_semicolon,
4086 consecutive: f_consecutive,
4087 qualifier: f_qualifier,
4088 delimiter: f_delimiter,
4089 text_fields: f_text_fields,
4090 #[cfg(feature = "extra-attrs")]
4091 extra_attrs,
4092 #[cfg(feature = "extra-children")]
4093 extra_children,
4094 })
4095 }
4096}
4097
4098impl FromXml for TextFields {
4099 fn from_xml<R: BufRead>(
4100 reader: &mut Reader<R>,
4101 start_tag: &BytesStart,
4102 is_empty: bool,
4103 ) -> Result<Self, ParseError> {
4104 let mut f_count = None;
4105 let mut f_text_field = Vec::new();
4106 #[cfg(feature = "extra-attrs")]
4107 let mut extra_attrs = std::collections::HashMap::new();
4108 #[cfg(feature = "extra-children")]
4109 let mut extra_children = Vec::new();
4110 #[cfg(feature = "extra-children")]
4111 let mut child_idx: usize = 0;
4112
4113 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
4115 let val = String::from_utf8_lossy(&attr.value);
4116 match attr.key.local_name().as_ref() {
4117 b"count" => {
4118 f_count = val.parse().ok();
4119 }
4120 #[cfg(feature = "extra-attrs")]
4121 unknown => {
4122 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
4123 extra_attrs.insert(key, val.into_owned());
4124 }
4125 #[cfg(not(feature = "extra-attrs"))]
4126 _ => {}
4127 }
4128 }
4129
4130 if !is_empty {
4132 let mut buf = Vec::new();
4133 loop {
4134 match reader.read_event_into(&mut buf)? {
4135 Event::Start(e) => {
4136 match e.local_name().as_ref() {
4137 b"textField" => {
4138 f_text_field.push(TextField::from_xml(reader, &e, false)?);
4139 #[cfg(feature = "extra-children")]
4140 {
4141 child_idx += 1;
4142 }
4143 }
4144 #[cfg(feature = "extra-children")]
4145 _ => {
4146 let elem = RawXmlElement::from_reader(reader, &e)?;
4148 extra_children.push(PositionedNode::new(
4149 child_idx,
4150 RawXmlNode::Element(elem),
4151 ));
4152 child_idx += 1;
4153 }
4154 #[cfg(not(feature = "extra-children"))]
4155 _ => {
4156 skip_element(reader)?;
4158 }
4159 }
4160 }
4161 Event::Empty(e) => {
4162 match e.local_name().as_ref() {
4163 b"textField" => {
4164 f_text_field.push(TextField::from_xml(reader, &e, true)?);
4165 #[cfg(feature = "extra-children")]
4166 {
4167 child_idx += 1;
4168 }
4169 }
4170 #[cfg(feature = "extra-children")]
4171 _ => {
4172 let elem = RawXmlElement::from_empty(&e);
4174 extra_children.push(PositionedNode::new(
4175 child_idx,
4176 RawXmlNode::Element(elem),
4177 ));
4178 child_idx += 1;
4179 }
4180 #[cfg(not(feature = "extra-children"))]
4181 _ => {}
4182 }
4183 }
4184 Event::End(_) => break,
4185 Event::Eof => break,
4186 _ => {}
4187 }
4188 buf.clear();
4189 }
4190 }
4191
4192 Ok(Self {
4193 count: f_count,
4194 text_field: f_text_field,
4195 #[cfg(feature = "extra-attrs")]
4196 extra_attrs,
4197 #[cfg(feature = "extra-children")]
4198 extra_children,
4199 })
4200 }
4201}
4202
4203impl FromXml for TextField {
4204 fn from_xml<R: BufRead>(
4205 reader: &mut Reader<R>,
4206 start_tag: &BytesStart,
4207 is_empty: bool,
4208 ) -> Result<Self, ParseError> {
4209 let mut f_type = None;
4210 let mut f_position = None;
4211 #[cfg(feature = "extra-attrs")]
4212 let mut extra_attrs = std::collections::HashMap::new();
4213
4214 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
4216 let val = String::from_utf8_lossy(&attr.value);
4217 match attr.key.local_name().as_ref() {
4218 b"type" => {
4219 f_type = val.parse().ok();
4220 }
4221 b"position" => {
4222 f_position = val.parse().ok();
4223 }
4224 #[cfg(feature = "extra-attrs")]
4225 unknown => {
4226 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
4227 extra_attrs.insert(key, val.into_owned());
4228 }
4229 #[cfg(not(feature = "extra-attrs"))]
4230 _ => {}
4231 }
4232 }
4233
4234 if !is_empty {
4235 let mut buf = Vec::new();
4236 loop {
4237 match reader.read_event_into(&mut buf)? {
4238 Event::End(_) => break,
4239 Event::Eof => break,
4240 _ => {}
4241 }
4242 buf.clear();
4243 }
4244 }
4245
4246 Ok(Self {
4247 r#type: f_type,
4248 position: f_position,
4249 #[cfg(feature = "extra-attrs")]
4250 extra_attrs,
4251 })
4252 }
4253}
4254
4255impl FromXml for PivotCacheDefinition {
4256 fn from_xml<R: BufRead>(
4257 reader: &mut Reader<R>,
4258 start_tag: &BytesStart,
4259 is_empty: bool,
4260 ) -> Result<Self, ParseError> {
4261 let mut f_id = None;
4262 let mut f_invalid = None;
4263 let mut f_save_data = None;
4264 let mut f_refresh_on_load = None;
4265 let mut f_optimize_memory = None;
4266 let mut f_enable_refresh = None;
4267 let mut f_refreshed_by = None;
4268 let mut f_refreshed_date = None;
4269 let mut f_refreshed_date_iso = None;
4270 let mut f_background_query = None;
4271 let mut f_missing_items_limit = None;
4272 let mut f_created_version = None;
4273 let mut f_refreshed_version = None;
4274 let mut f_min_refreshable_version = None;
4275 let mut f_record_count = None;
4276 let mut f_upgrade_on_refresh = None;
4277 let mut f_tuple_cache = None;
4278 let mut f_support_subquery = None;
4279 let mut f_support_advanced_drill = None;
4280 let mut f_cache_source: Option<Box<CacheSource>> = None;
4281 let mut f_cache_fields: Option<Box<CacheFields>> = None;
4282 let mut f_cache_hierarchies = None;
4283 let mut f_kpis = None;
4284 let mut f_calculated_items = None;
4285 let mut f_calculated_members = None;
4286 let mut f_dimensions = None;
4287 let mut f_measure_groups = None;
4288 let mut f_maps = None;
4289 let mut f_extension_list = None;
4290 #[cfg(feature = "extra-attrs")]
4291 let mut extra_attrs = std::collections::HashMap::new();
4292 #[cfg(feature = "extra-children")]
4293 let mut extra_children = Vec::new();
4294 #[cfg(feature = "extra-children")]
4295 let mut child_idx: usize = 0;
4296
4297 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
4299 let val = String::from_utf8_lossy(&attr.value);
4300 match attr.key.local_name().as_ref() {
4301 b"id" => {
4302 f_id = Some(val.into_owned());
4303 }
4304 b"invalid" => {
4305 f_invalid = Some(val == "true" || val == "1");
4306 }
4307 b"saveData" => {
4308 f_save_data = Some(val == "true" || val == "1");
4309 }
4310 b"refreshOnLoad" => {
4311 f_refresh_on_load = Some(val == "true" || val == "1");
4312 }
4313 b"optimizeMemory" => {
4314 f_optimize_memory = Some(val == "true" || val == "1");
4315 }
4316 b"enableRefresh" => {
4317 f_enable_refresh = Some(val == "true" || val == "1");
4318 }
4319 b"refreshedBy" => {
4320 f_refreshed_by = Some(val.into_owned());
4321 }
4322 b"refreshedDate" => {
4323 f_refreshed_date = val.parse().ok();
4324 }
4325 b"refreshedDateIso" => {
4326 f_refreshed_date_iso = Some(val.into_owned());
4327 }
4328 b"backgroundQuery" => {
4329 f_background_query = Some(val == "true" || val == "1");
4330 }
4331 b"missingItemsLimit" => {
4332 f_missing_items_limit = val.parse().ok();
4333 }
4334 b"createdVersion" => {
4335 f_created_version = val.parse().ok();
4336 }
4337 b"refreshedVersion" => {
4338 f_refreshed_version = val.parse().ok();
4339 }
4340 b"minRefreshableVersion" => {
4341 f_min_refreshable_version = val.parse().ok();
4342 }
4343 b"recordCount" => {
4344 f_record_count = val.parse().ok();
4345 }
4346 b"upgradeOnRefresh" => {
4347 f_upgrade_on_refresh = Some(val == "true" || val == "1");
4348 }
4349 b"tupleCache" => {
4350 f_tuple_cache = Some(val == "true" || val == "1");
4351 }
4352 b"supportSubquery" => {
4353 f_support_subquery = Some(val == "true" || val == "1");
4354 }
4355 b"supportAdvancedDrill" => {
4356 f_support_advanced_drill = Some(val == "true" || val == "1");
4357 }
4358 #[cfg(feature = "extra-attrs")]
4359 unknown => {
4360 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
4361 extra_attrs.insert(key, val.into_owned());
4362 }
4363 #[cfg(not(feature = "extra-attrs"))]
4364 _ => {}
4365 }
4366 }
4367
4368 if !is_empty {
4370 let mut buf = Vec::new();
4371 loop {
4372 match reader.read_event_into(&mut buf)? {
4373 Event::Start(e) => {
4374 match e.local_name().as_ref() {
4375 b"cacheSource" => {
4376 f_cache_source =
4377 Some(Box::new(CacheSource::from_xml(reader, &e, false)?));
4378 #[cfg(feature = "extra-children")]
4379 {
4380 child_idx += 1;
4381 }
4382 }
4383 b"cacheFields" => {
4384 f_cache_fields =
4385 Some(Box::new(CacheFields::from_xml(reader, &e, false)?));
4386 #[cfg(feature = "extra-children")]
4387 {
4388 child_idx += 1;
4389 }
4390 }
4391 b"cacheHierarchies" => {
4392 f_cache_hierarchies = Some(Box::new(CTCacheHierarchies::from_xml(
4393 reader, &e, false,
4394 )?));
4395 #[cfg(feature = "extra-children")]
4396 {
4397 child_idx += 1;
4398 }
4399 }
4400 b"kpis" => {
4401 f_kpis = Some(Box::new(CTPCDKPIs::from_xml(reader, &e, false)?));
4402 #[cfg(feature = "extra-children")]
4403 {
4404 child_idx += 1;
4405 }
4406 }
4407 b"calculatedItems" => {
4408 f_calculated_items =
4409 Some(Box::new(CTCalculatedItems::from_xml(reader, &e, false)?));
4410 #[cfg(feature = "extra-children")]
4411 {
4412 child_idx += 1;
4413 }
4414 }
4415 b"calculatedMembers" => {
4416 f_calculated_members = Some(Box::new(
4417 CTCalculatedMembers::from_xml(reader, &e, false)?,
4418 ));
4419 #[cfg(feature = "extra-children")]
4420 {
4421 child_idx += 1;
4422 }
4423 }
4424 b"dimensions" => {
4425 f_dimensions =
4426 Some(Box::new(CTDimensions::from_xml(reader, &e, false)?));
4427 #[cfg(feature = "extra-children")]
4428 {
4429 child_idx += 1;
4430 }
4431 }
4432 b"measureGroups" => {
4433 f_measure_groups =
4434 Some(Box::new(CTMeasureGroups::from_xml(reader, &e, false)?));
4435 #[cfg(feature = "extra-children")]
4436 {
4437 child_idx += 1;
4438 }
4439 }
4440 b"maps" => {
4441 f_maps = Some(Box::new(CTMeasureDimensionMaps::from_xml(
4442 reader, &e, false,
4443 )?));
4444 #[cfg(feature = "extra-children")]
4445 {
4446 child_idx += 1;
4447 }
4448 }
4449 b"extLst" => {
4450 f_extension_list =
4451 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
4452 #[cfg(feature = "extra-children")]
4453 {
4454 child_idx += 1;
4455 }
4456 }
4457 #[cfg(feature = "extra-children")]
4458 _ => {
4459 let elem = RawXmlElement::from_reader(reader, &e)?;
4461 extra_children.push(PositionedNode::new(
4462 child_idx,
4463 RawXmlNode::Element(elem),
4464 ));
4465 child_idx += 1;
4466 }
4467 #[cfg(not(feature = "extra-children"))]
4468 _ => {
4469 skip_element(reader)?;
4471 }
4472 }
4473 }
4474 Event::Empty(e) => {
4475 match e.local_name().as_ref() {
4476 b"cacheSource" => {
4477 f_cache_source =
4478 Some(Box::new(CacheSource::from_xml(reader, &e, true)?));
4479 #[cfg(feature = "extra-children")]
4480 {
4481 child_idx += 1;
4482 }
4483 }
4484 b"cacheFields" => {
4485 f_cache_fields =
4486 Some(Box::new(CacheFields::from_xml(reader, &e, true)?));
4487 #[cfg(feature = "extra-children")]
4488 {
4489 child_idx += 1;
4490 }
4491 }
4492 b"cacheHierarchies" => {
4493 f_cache_hierarchies =
4494 Some(Box::new(CTCacheHierarchies::from_xml(reader, &e, true)?));
4495 #[cfg(feature = "extra-children")]
4496 {
4497 child_idx += 1;
4498 }
4499 }
4500 b"kpis" => {
4501 f_kpis = Some(Box::new(CTPCDKPIs::from_xml(reader, &e, true)?));
4502 #[cfg(feature = "extra-children")]
4503 {
4504 child_idx += 1;
4505 }
4506 }
4507 b"calculatedItems" => {
4508 f_calculated_items =
4509 Some(Box::new(CTCalculatedItems::from_xml(reader, &e, true)?));
4510 #[cfg(feature = "extra-children")]
4511 {
4512 child_idx += 1;
4513 }
4514 }
4515 b"calculatedMembers" => {
4516 f_calculated_members = Some(Box::new(
4517 CTCalculatedMembers::from_xml(reader, &e, true)?,
4518 ));
4519 #[cfg(feature = "extra-children")]
4520 {
4521 child_idx += 1;
4522 }
4523 }
4524 b"dimensions" => {
4525 f_dimensions =
4526 Some(Box::new(CTDimensions::from_xml(reader, &e, true)?));
4527 #[cfg(feature = "extra-children")]
4528 {
4529 child_idx += 1;
4530 }
4531 }
4532 b"measureGroups" => {
4533 f_measure_groups =
4534 Some(Box::new(CTMeasureGroups::from_xml(reader, &e, true)?));
4535 #[cfg(feature = "extra-children")]
4536 {
4537 child_idx += 1;
4538 }
4539 }
4540 b"maps" => {
4541 f_maps = Some(Box::new(CTMeasureDimensionMaps::from_xml(
4542 reader, &e, true,
4543 )?));
4544 #[cfg(feature = "extra-children")]
4545 {
4546 child_idx += 1;
4547 }
4548 }
4549 b"extLst" => {
4550 f_extension_list =
4551 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
4552 #[cfg(feature = "extra-children")]
4553 {
4554 child_idx += 1;
4555 }
4556 }
4557 #[cfg(feature = "extra-children")]
4558 _ => {
4559 let elem = RawXmlElement::from_empty(&e);
4561 extra_children.push(PositionedNode::new(
4562 child_idx,
4563 RawXmlNode::Element(elem),
4564 ));
4565 child_idx += 1;
4566 }
4567 #[cfg(not(feature = "extra-children"))]
4568 _ => {}
4569 }
4570 }
4571 Event::End(_) => break,
4572 Event::Eof => break,
4573 _ => {}
4574 }
4575 buf.clear();
4576 }
4577 }
4578
4579 Ok(Self {
4580 id: f_id,
4581 invalid: f_invalid,
4582 save_data: f_save_data,
4583 refresh_on_load: f_refresh_on_load,
4584 optimize_memory: f_optimize_memory,
4585 enable_refresh: f_enable_refresh,
4586 refreshed_by: f_refreshed_by,
4587 refreshed_date: f_refreshed_date,
4588 refreshed_date_iso: f_refreshed_date_iso,
4589 background_query: f_background_query,
4590 missing_items_limit: f_missing_items_limit,
4591 created_version: f_created_version,
4592 refreshed_version: f_refreshed_version,
4593 min_refreshable_version: f_min_refreshable_version,
4594 record_count: f_record_count,
4595 upgrade_on_refresh: f_upgrade_on_refresh,
4596 tuple_cache: f_tuple_cache,
4597 support_subquery: f_support_subquery,
4598 support_advanced_drill: f_support_advanced_drill,
4599 cache_source: f_cache_source
4600 .ok_or_else(|| ParseError::MissingAttribute("cacheSource".to_string()))?,
4601 cache_fields: f_cache_fields
4602 .ok_or_else(|| ParseError::MissingAttribute("cacheFields".to_string()))?,
4603 cache_hierarchies: f_cache_hierarchies,
4604 kpis: f_kpis,
4605 calculated_items: f_calculated_items,
4606 calculated_members: f_calculated_members,
4607 dimensions: f_dimensions,
4608 measure_groups: f_measure_groups,
4609 maps: f_maps,
4610 extension_list: f_extension_list,
4611 #[cfg(feature = "extra-attrs")]
4612 extra_attrs,
4613 #[cfg(feature = "extra-children")]
4614 extra_children,
4615 })
4616 }
4617}
4618
4619impl FromXml for CacheFields {
4620 fn from_xml<R: BufRead>(
4621 reader: &mut Reader<R>,
4622 start_tag: &BytesStart,
4623 is_empty: bool,
4624 ) -> Result<Self, ParseError> {
4625 let mut f_count = None;
4626 let mut f_cache_field = Vec::new();
4627 #[cfg(feature = "extra-attrs")]
4628 let mut extra_attrs = std::collections::HashMap::new();
4629 #[cfg(feature = "extra-children")]
4630 let mut extra_children = Vec::new();
4631 #[cfg(feature = "extra-children")]
4632 let mut child_idx: usize = 0;
4633
4634 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
4636 let val = String::from_utf8_lossy(&attr.value);
4637 match attr.key.local_name().as_ref() {
4638 b"count" => {
4639 f_count = val.parse().ok();
4640 }
4641 #[cfg(feature = "extra-attrs")]
4642 unknown => {
4643 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
4644 extra_attrs.insert(key, val.into_owned());
4645 }
4646 #[cfg(not(feature = "extra-attrs"))]
4647 _ => {}
4648 }
4649 }
4650
4651 if !is_empty {
4653 let mut buf = Vec::new();
4654 loop {
4655 match reader.read_event_into(&mut buf)? {
4656 Event::Start(e) => {
4657 match e.local_name().as_ref() {
4658 b"cacheField" => {
4659 f_cache_field.push(CacheField::from_xml(reader, &e, false)?);
4660 #[cfg(feature = "extra-children")]
4661 {
4662 child_idx += 1;
4663 }
4664 }
4665 #[cfg(feature = "extra-children")]
4666 _ => {
4667 let elem = RawXmlElement::from_reader(reader, &e)?;
4669 extra_children.push(PositionedNode::new(
4670 child_idx,
4671 RawXmlNode::Element(elem),
4672 ));
4673 child_idx += 1;
4674 }
4675 #[cfg(not(feature = "extra-children"))]
4676 _ => {
4677 skip_element(reader)?;
4679 }
4680 }
4681 }
4682 Event::Empty(e) => {
4683 match e.local_name().as_ref() {
4684 b"cacheField" => {
4685 f_cache_field.push(CacheField::from_xml(reader, &e, true)?);
4686 #[cfg(feature = "extra-children")]
4687 {
4688 child_idx += 1;
4689 }
4690 }
4691 #[cfg(feature = "extra-children")]
4692 _ => {
4693 let elem = RawXmlElement::from_empty(&e);
4695 extra_children.push(PositionedNode::new(
4696 child_idx,
4697 RawXmlNode::Element(elem),
4698 ));
4699 child_idx += 1;
4700 }
4701 #[cfg(not(feature = "extra-children"))]
4702 _ => {}
4703 }
4704 }
4705 Event::End(_) => break,
4706 Event::Eof => break,
4707 _ => {}
4708 }
4709 buf.clear();
4710 }
4711 }
4712
4713 Ok(Self {
4714 count: f_count,
4715 cache_field: f_cache_field,
4716 #[cfg(feature = "extra-attrs")]
4717 extra_attrs,
4718 #[cfg(feature = "extra-children")]
4719 extra_children,
4720 })
4721 }
4722}
4723
4724impl FromXml for CacheField {
4725 fn from_xml<R: BufRead>(
4726 reader: &mut Reader<R>,
4727 start_tag: &BytesStart,
4728 is_empty: bool,
4729 ) -> Result<Self, ParseError> {
4730 let mut f_name: Option<XmlString> = None;
4731 let mut f_caption = None;
4732 let mut f_property_name = None;
4733 let mut f_server_field = None;
4734 let mut f_unique_list = None;
4735 let mut f_number_format_id = None;
4736 let mut f_formula = None;
4737 let mut f_sql_type = None;
4738 let mut f_hierarchy = None;
4739 let mut f_level = None;
4740 let mut f_database_field = None;
4741 let mut f_mapping_count = None;
4742 let mut f_member_property_field = None;
4743 let mut f_shared_items = None;
4744 let mut f_field_group = None;
4745 let mut f_mp_map = Vec::new();
4746 let mut f_extension_list = None;
4747 #[cfg(feature = "extra-attrs")]
4748 let mut extra_attrs = std::collections::HashMap::new();
4749 #[cfg(feature = "extra-children")]
4750 let mut extra_children = Vec::new();
4751 #[cfg(feature = "extra-children")]
4752 let mut child_idx: usize = 0;
4753
4754 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
4756 let val = String::from_utf8_lossy(&attr.value);
4757 match attr.key.local_name().as_ref() {
4758 b"name" => {
4759 f_name = Some(val.into_owned());
4760 }
4761 b"caption" => {
4762 f_caption = Some(val.into_owned());
4763 }
4764 b"propertyName" => {
4765 f_property_name = Some(val.into_owned());
4766 }
4767 b"serverField" => {
4768 f_server_field = Some(val == "true" || val == "1");
4769 }
4770 b"uniqueList" => {
4771 f_unique_list = Some(val == "true" || val == "1");
4772 }
4773 b"numFmtId" => {
4774 f_number_format_id = val.parse().ok();
4775 }
4776 b"formula" => {
4777 f_formula = Some(val.into_owned());
4778 }
4779 b"sqlType" => {
4780 f_sql_type = val.parse().ok();
4781 }
4782 b"hierarchy" => {
4783 f_hierarchy = val.parse().ok();
4784 }
4785 b"level" => {
4786 f_level = val.parse().ok();
4787 }
4788 b"databaseField" => {
4789 f_database_field = Some(val == "true" || val == "1");
4790 }
4791 b"mappingCount" => {
4792 f_mapping_count = val.parse().ok();
4793 }
4794 b"memberPropertyField" => {
4795 f_member_property_field = Some(val == "true" || val == "1");
4796 }
4797 #[cfg(feature = "extra-attrs")]
4798 unknown => {
4799 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
4800 extra_attrs.insert(key, val.into_owned());
4801 }
4802 #[cfg(not(feature = "extra-attrs"))]
4803 _ => {}
4804 }
4805 }
4806
4807 if !is_empty {
4809 let mut buf = Vec::new();
4810 loop {
4811 match reader.read_event_into(&mut buf)? {
4812 Event::Start(e) => {
4813 match e.local_name().as_ref() {
4814 b"sharedItems" => {
4815 f_shared_items =
4816 Some(Box::new(SharedItems::from_xml(reader, &e, false)?));
4817 #[cfg(feature = "extra-children")]
4818 {
4819 child_idx += 1;
4820 }
4821 }
4822 b"fieldGroup" => {
4823 f_field_group =
4824 Some(Box::new(FieldGroup::from_xml(reader, &e, false)?));
4825 #[cfg(feature = "extra-children")]
4826 {
4827 child_idx += 1;
4828 }
4829 }
4830 b"mpMap" => {
4831 f_mp_map.push(CTX::from_xml(reader, &e, false)?);
4832 #[cfg(feature = "extra-children")]
4833 {
4834 child_idx += 1;
4835 }
4836 }
4837 b"extLst" => {
4838 f_extension_list =
4839 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
4840 #[cfg(feature = "extra-children")]
4841 {
4842 child_idx += 1;
4843 }
4844 }
4845 #[cfg(feature = "extra-children")]
4846 _ => {
4847 let elem = RawXmlElement::from_reader(reader, &e)?;
4849 extra_children.push(PositionedNode::new(
4850 child_idx,
4851 RawXmlNode::Element(elem),
4852 ));
4853 child_idx += 1;
4854 }
4855 #[cfg(not(feature = "extra-children"))]
4856 _ => {
4857 skip_element(reader)?;
4859 }
4860 }
4861 }
4862 Event::Empty(e) => {
4863 match e.local_name().as_ref() {
4864 b"sharedItems" => {
4865 f_shared_items =
4866 Some(Box::new(SharedItems::from_xml(reader, &e, true)?));
4867 #[cfg(feature = "extra-children")]
4868 {
4869 child_idx += 1;
4870 }
4871 }
4872 b"fieldGroup" => {
4873 f_field_group =
4874 Some(Box::new(FieldGroup::from_xml(reader, &e, true)?));
4875 #[cfg(feature = "extra-children")]
4876 {
4877 child_idx += 1;
4878 }
4879 }
4880 b"mpMap" => {
4881 f_mp_map.push(CTX::from_xml(reader, &e, true)?);
4882 #[cfg(feature = "extra-children")]
4883 {
4884 child_idx += 1;
4885 }
4886 }
4887 b"extLst" => {
4888 f_extension_list =
4889 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
4890 #[cfg(feature = "extra-children")]
4891 {
4892 child_idx += 1;
4893 }
4894 }
4895 #[cfg(feature = "extra-children")]
4896 _ => {
4897 let elem = RawXmlElement::from_empty(&e);
4899 extra_children.push(PositionedNode::new(
4900 child_idx,
4901 RawXmlNode::Element(elem),
4902 ));
4903 child_idx += 1;
4904 }
4905 #[cfg(not(feature = "extra-children"))]
4906 _ => {}
4907 }
4908 }
4909 Event::End(_) => break,
4910 Event::Eof => break,
4911 _ => {}
4912 }
4913 buf.clear();
4914 }
4915 }
4916
4917 Ok(Self {
4918 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
4919 caption: f_caption,
4920 property_name: f_property_name,
4921 server_field: f_server_field,
4922 unique_list: f_unique_list,
4923 number_format_id: f_number_format_id,
4924 formula: f_formula,
4925 sql_type: f_sql_type,
4926 hierarchy: f_hierarchy,
4927 level: f_level,
4928 database_field: f_database_field,
4929 mapping_count: f_mapping_count,
4930 member_property_field: f_member_property_field,
4931 shared_items: f_shared_items,
4932 field_group: f_field_group,
4933 mp_map: f_mp_map,
4934 extension_list: f_extension_list,
4935 #[cfg(feature = "extra-attrs")]
4936 extra_attrs,
4937 #[cfg(feature = "extra-children")]
4938 extra_children,
4939 })
4940 }
4941}
4942
4943impl FromXml for CacheSource {
4944 fn from_xml<R: BufRead>(
4945 reader: &mut Reader<R>,
4946 start_tag: &BytesStart,
4947 is_empty: bool,
4948 ) -> Result<Self, ParseError> {
4949 let mut f_type: Option<STSourceType> = None;
4950 let mut f_connection_id = None;
4951 let mut f_worksheet_source = None;
4952 let mut f_consolidation = None;
4953 let mut f_extension_list = None;
4954 #[cfg(feature = "extra-attrs")]
4955 let mut extra_attrs = std::collections::HashMap::new();
4956 #[cfg(feature = "extra-children")]
4957 let mut extra_children = Vec::new();
4958 #[cfg(feature = "extra-children")]
4959 let mut child_idx: usize = 0;
4960
4961 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
4963 let val = String::from_utf8_lossy(&attr.value);
4964 match attr.key.local_name().as_ref() {
4965 b"type" => {
4966 f_type = val.parse().ok();
4967 }
4968 b"connectionId" => {
4969 f_connection_id = val.parse().ok();
4970 }
4971 #[cfg(feature = "extra-attrs")]
4972 unknown => {
4973 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
4974 extra_attrs.insert(key, val.into_owned());
4975 }
4976 #[cfg(not(feature = "extra-attrs"))]
4977 _ => {}
4978 }
4979 }
4980
4981 if !is_empty {
4983 let mut buf = Vec::new();
4984 loop {
4985 match reader.read_event_into(&mut buf)? {
4986 Event::Start(e) => {
4987 match e.local_name().as_ref() {
4988 b"worksheetSource" => {
4989 f_worksheet_source =
4990 Some(Box::new(WorksheetSource::from_xml(reader, &e, false)?));
4991 #[cfg(feature = "extra-children")]
4992 {
4993 child_idx += 1;
4994 }
4995 }
4996 b"consolidation" => {
4997 f_consolidation =
4998 Some(Box::new(Consolidation::from_xml(reader, &e, false)?));
4999 #[cfg(feature = "extra-children")]
5000 {
5001 child_idx += 1;
5002 }
5003 }
5004 b"extLst" => {
5005 f_extension_list =
5006 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
5007 #[cfg(feature = "extra-children")]
5008 {
5009 child_idx += 1;
5010 }
5011 }
5012 #[cfg(feature = "extra-children")]
5013 _ => {
5014 let elem = RawXmlElement::from_reader(reader, &e)?;
5016 extra_children.push(PositionedNode::new(
5017 child_idx,
5018 RawXmlNode::Element(elem),
5019 ));
5020 child_idx += 1;
5021 }
5022 #[cfg(not(feature = "extra-children"))]
5023 _ => {
5024 skip_element(reader)?;
5026 }
5027 }
5028 }
5029 Event::Empty(e) => {
5030 match e.local_name().as_ref() {
5031 b"worksheetSource" => {
5032 f_worksheet_source =
5033 Some(Box::new(WorksheetSource::from_xml(reader, &e, true)?));
5034 #[cfg(feature = "extra-children")]
5035 {
5036 child_idx += 1;
5037 }
5038 }
5039 b"consolidation" => {
5040 f_consolidation =
5041 Some(Box::new(Consolidation::from_xml(reader, &e, true)?));
5042 #[cfg(feature = "extra-children")]
5043 {
5044 child_idx += 1;
5045 }
5046 }
5047 b"extLst" => {
5048 f_extension_list =
5049 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
5050 #[cfg(feature = "extra-children")]
5051 {
5052 child_idx += 1;
5053 }
5054 }
5055 #[cfg(feature = "extra-children")]
5056 _ => {
5057 let elem = RawXmlElement::from_empty(&e);
5059 extra_children.push(PositionedNode::new(
5060 child_idx,
5061 RawXmlNode::Element(elem),
5062 ));
5063 child_idx += 1;
5064 }
5065 #[cfg(not(feature = "extra-children"))]
5066 _ => {}
5067 }
5068 }
5069 Event::End(_) => break,
5070 Event::Eof => break,
5071 _ => {}
5072 }
5073 buf.clear();
5074 }
5075 }
5076
5077 Ok(Self {
5078 r#type: f_type.ok_or_else(|| ParseError::MissingAttribute("type".to_string()))?,
5079 connection_id: f_connection_id,
5080 worksheet_source: f_worksheet_source,
5081 consolidation: f_consolidation,
5082 extension_list: f_extension_list,
5083 #[cfg(feature = "extra-attrs")]
5084 extra_attrs,
5085 #[cfg(feature = "extra-children")]
5086 extra_children,
5087 })
5088 }
5089}
5090
5091impl FromXml for WorksheetSource {
5092 fn from_xml<R: BufRead>(
5093 reader: &mut Reader<R>,
5094 start_tag: &BytesStart,
5095 is_empty: bool,
5096 ) -> Result<Self, ParseError> {
5097 let mut f_reference = None;
5098 let mut f_name = None;
5099 let mut f_sheet = None;
5100 let mut f_id = None;
5101 #[cfg(feature = "extra-attrs")]
5102 let mut extra_attrs = std::collections::HashMap::new();
5103
5104 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
5106 let val = String::from_utf8_lossy(&attr.value);
5107 match attr.key.local_name().as_ref() {
5108 b"ref" => {
5109 f_reference = Some(val.into_owned());
5110 }
5111 b"name" => {
5112 f_name = Some(val.into_owned());
5113 }
5114 b"sheet" => {
5115 f_sheet = Some(val.into_owned());
5116 }
5117 b"id" => {
5118 f_id = Some(val.into_owned());
5119 }
5120 #[cfg(feature = "extra-attrs")]
5121 unknown => {
5122 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
5123 extra_attrs.insert(key, val.into_owned());
5124 }
5125 #[cfg(not(feature = "extra-attrs"))]
5126 _ => {}
5127 }
5128 }
5129
5130 if !is_empty {
5131 let mut buf = Vec::new();
5132 loop {
5133 match reader.read_event_into(&mut buf)? {
5134 Event::End(_) => break,
5135 Event::Eof => break,
5136 _ => {}
5137 }
5138 buf.clear();
5139 }
5140 }
5141
5142 Ok(Self {
5143 reference: f_reference,
5144 name: f_name,
5145 sheet: f_sheet,
5146 id: f_id,
5147 #[cfg(feature = "extra-attrs")]
5148 extra_attrs,
5149 })
5150 }
5151}
5152
5153impl FromXml for Consolidation {
5154 fn from_xml<R: BufRead>(
5155 reader: &mut Reader<R>,
5156 start_tag: &BytesStart,
5157 is_empty: bool,
5158 ) -> Result<Self, ParseError> {
5159 let mut f_auto_page = None;
5160 let mut f_pages = None;
5161 let mut f_range_sets: Option<Box<CTRangeSets>> = None;
5162 #[cfg(feature = "extra-attrs")]
5163 let mut extra_attrs = std::collections::HashMap::new();
5164 #[cfg(feature = "extra-children")]
5165 let mut extra_children = Vec::new();
5166 #[cfg(feature = "extra-children")]
5167 let mut child_idx: usize = 0;
5168
5169 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
5171 let val = String::from_utf8_lossy(&attr.value);
5172 match attr.key.local_name().as_ref() {
5173 b"autoPage" => {
5174 f_auto_page = Some(val == "true" || val == "1");
5175 }
5176 #[cfg(feature = "extra-attrs")]
5177 unknown => {
5178 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
5179 extra_attrs.insert(key, val.into_owned());
5180 }
5181 #[cfg(not(feature = "extra-attrs"))]
5182 _ => {}
5183 }
5184 }
5185
5186 if !is_empty {
5188 let mut buf = Vec::new();
5189 loop {
5190 match reader.read_event_into(&mut buf)? {
5191 Event::Start(e) => {
5192 match e.local_name().as_ref() {
5193 b"pages" => {
5194 f_pages = Some(Box::new(CTPages::from_xml(reader, &e, false)?));
5195 #[cfg(feature = "extra-children")]
5196 {
5197 child_idx += 1;
5198 }
5199 }
5200 b"rangeSets" => {
5201 f_range_sets =
5202 Some(Box::new(CTRangeSets::from_xml(reader, &e, false)?));
5203 #[cfg(feature = "extra-children")]
5204 {
5205 child_idx += 1;
5206 }
5207 }
5208 #[cfg(feature = "extra-children")]
5209 _ => {
5210 let elem = RawXmlElement::from_reader(reader, &e)?;
5212 extra_children.push(PositionedNode::new(
5213 child_idx,
5214 RawXmlNode::Element(elem),
5215 ));
5216 child_idx += 1;
5217 }
5218 #[cfg(not(feature = "extra-children"))]
5219 _ => {
5220 skip_element(reader)?;
5222 }
5223 }
5224 }
5225 Event::Empty(e) => {
5226 match e.local_name().as_ref() {
5227 b"pages" => {
5228 f_pages = Some(Box::new(CTPages::from_xml(reader, &e, true)?));
5229 #[cfg(feature = "extra-children")]
5230 {
5231 child_idx += 1;
5232 }
5233 }
5234 b"rangeSets" => {
5235 f_range_sets =
5236 Some(Box::new(CTRangeSets::from_xml(reader, &e, true)?));
5237 #[cfg(feature = "extra-children")]
5238 {
5239 child_idx += 1;
5240 }
5241 }
5242 #[cfg(feature = "extra-children")]
5243 _ => {
5244 let elem = RawXmlElement::from_empty(&e);
5246 extra_children.push(PositionedNode::new(
5247 child_idx,
5248 RawXmlNode::Element(elem),
5249 ));
5250 child_idx += 1;
5251 }
5252 #[cfg(not(feature = "extra-children"))]
5253 _ => {}
5254 }
5255 }
5256 Event::End(_) => break,
5257 Event::Eof => break,
5258 _ => {}
5259 }
5260 buf.clear();
5261 }
5262 }
5263
5264 Ok(Self {
5265 auto_page: f_auto_page,
5266 pages: f_pages,
5267 range_sets: f_range_sets
5268 .ok_or_else(|| ParseError::MissingAttribute("rangeSets".to_string()))?,
5269 #[cfg(feature = "extra-attrs")]
5270 extra_attrs,
5271 #[cfg(feature = "extra-children")]
5272 extra_children,
5273 })
5274 }
5275}
5276
5277impl FromXml for CTPages {
5278 fn from_xml<R: BufRead>(
5279 reader: &mut Reader<R>,
5280 start_tag: &BytesStart,
5281 is_empty: bool,
5282 ) -> Result<Self, ParseError> {
5283 let mut f_count = None;
5284 let mut f_page = Vec::new();
5285 #[cfg(feature = "extra-attrs")]
5286 let mut extra_attrs = std::collections::HashMap::new();
5287 #[cfg(feature = "extra-children")]
5288 let mut extra_children = Vec::new();
5289 #[cfg(feature = "extra-children")]
5290 let mut child_idx: usize = 0;
5291
5292 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
5294 let val = String::from_utf8_lossy(&attr.value);
5295 match attr.key.local_name().as_ref() {
5296 b"count" => {
5297 f_count = val.parse().ok();
5298 }
5299 #[cfg(feature = "extra-attrs")]
5300 unknown => {
5301 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
5302 extra_attrs.insert(key, val.into_owned());
5303 }
5304 #[cfg(not(feature = "extra-attrs"))]
5305 _ => {}
5306 }
5307 }
5308
5309 if !is_empty {
5311 let mut buf = Vec::new();
5312 loop {
5313 match reader.read_event_into(&mut buf)? {
5314 Event::Start(e) => {
5315 match e.local_name().as_ref() {
5316 b"page" => {
5317 f_page.push(CTPCDSCPage::from_xml(reader, &e, false)?);
5318 #[cfg(feature = "extra-children")]
5319 {
5320 child_idx += 1;
5321 }
5322 }
5323 #[cfg(feature = "extra-children")]
5324 _ => {
5325 let elem = RawXmlElement::from_reader(reader, &e)?;
5327 extra_children.push(PositionedNode::new(
5328 child_idx,
5329 RawXmlNode::Element(elem),
5330 ));
5331 child_idx += 1;
5332 }
5333 #[cfg(not(feature = "extra-children"))]
5334 _ => {
5335 skip_element(reader)?;
5337 }
5338 }
5339 }
5340 Event::Empty(e) => {
5341 match e.local_name().as_ref() {
5342 b"page" => {
5343 f_page.push(CTPCDSCPage::from_xml(reader, &e, true)?);
5344 #[cfg(feature = "extra-children")]
5345 {
5346 child_idx += 1;
5347 }
5348 }
5349 #[cfg(feature = "extra-children")]
5350 _ => {
5351 let elem = RawXmlElement::from_empty(&e);
5353 extra_children.push(PositionedNode::new(
5354 child_idx,
5355 RawXmlNode::Element(elem),
5356 ));
5357 child_idx += 1;
5358 }
5359 #[cfg(not(feature = "extra-children"))]
5360 _ => {}
5361 }
5362 }
5363 Event::End(_) => break,
5364 Event::Eof => break,
5365 _ => {}
5366 }
5367 buf.clear();
5368 }
5369 }
5370
5371 Ok(Self {
5372 count: f_count,
5373 page: f_page,
5374 #[cfg(feature = "extra-attrs")]
5375 extra_attrs,
5376 #[cfg(feature = "extra-children")]
5377 extra_children,
5378 })
5379 }
5380}
5381
5382impl FromXml for CTPCDSCPage {
5383 fn from_xml<R: BufRead>(
5384 reader: &mut Reader<R>,
5385 start_tag: &BytesStart,
5386 is_empty: bool,
5387 ) -> Result<Self, ParseError> {
5388 let mut f_count = None;
5389 let mut f_page_item = Vec::new();
5390 #[cfg(feature = "extra-attrs")]
5391 let mut extra_attrs = std::collections::HashMap::new();
5392 #[cfg(feature = "extra-children")]
5393 let mut extra_children = Vec::new();
5394 #[cfg(feature = "extra-children")]
5395 let mut child_idx: usize = 0;
5396
5397 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
5399 let val = String::from_utf8_lossy(&attr.value);
5400 match attr.key.local_name().as_ref() {
5401 b"count" => {
5402 f_count = val.parse().ok();
5403 }
5404 #[cfg(feature = "extra-attrs")]
5405 unknown => {
5406 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
5407 extra_attrs.insert(key, val.into_owned());
5408 }
5409 #[cfg(not(feature = "extra-attrs"))]
5410 _ => {}
5411 }
5412 }
5413
5414 if !is_empty {
5416 let mut buf = Vec::new();
5417 loop {
5418 match reader.read_event_into(&mut buf)? {
5419 Event::Start(e) => {
5420 match e.local_name().as_ref() {
5421 b"pageItem" => {
5422 f_page_item.push(CTPageItem::from_xml(reader, &e, false)?);
5423 #[cfg(feature = "extra-children")]
5424 {
5425 child_idx += 1;
5426 }
5427 }
5428 #[cfg(feature = "extra-children")]
5429 _ => {
5430 let elem = RawXmlElement::from_reader(reader, &e)?;
5432 extra_children.push(PositionedNode::new(
5433 child_idx,
5434 RawXmlNode::Element(elem),
5435 ));
5436 child_idx += 1;
5437 }
5438 #[cfg(not(feature = "extra-children"))]
5439 _ => {
5440 skip_element(reader)?;
5442 }
5443 }
5444 }
5445 Event::Empty(e) => {
5446 match e.local_name().as_ref() {
5447 b"pageItem" => {
5448 f_page_item.push(CTPageItem::from_xml(reader, &e, true)?);
5449 #[cfg(feature = "extra-children")]
5450 {
5451 child_idx += 1;
5452 }
5453 }
5454 #[cfg(feature = "extra-children")]
5455 _ => {
5456 let elem = RawXmlElement::from_empty(&e);
5458 extra_children.push(PositionedNode::new(
5459 child_idx,
5460 RawXmlNode::Element(elem),
5461 ));
5462 child_idx += 1;
5463 }
5464 #[cfg(not(feature = "extra-children"))]
5465 _ => {}
5466 }
5467 }
5468 Event::End(_) => break,
5469 Event::Eof => break,
5470 _ => {}
5471 }
5472 buf.clear();
5473 }
5474 }
5475
5476 Ok(Self {
5477 count: f_count,
5478 page_item: f_page_item,
5479 #[cfg(feature = "extra-attrs")]
5480 extra_attrs,
5481 #[cfg(feature = "extra-children")]
5482 extra_children,
5483 })
5484 }
5485}
5486
5487impl FromXml for CTPageItem {
5488 fn from_xml<R: BufRead>(
5489 reader: &mut Reader<R>,
5490 start_tag: &BytesStart,
5491 is_empty: bool,
5492 ) -> Result<Self, ParseError> {
5493 let mut f_name: Option<XmlString> = None;
5494 #[cfg(feature = "extra-attrs")]
5495 let mut extra_attrs = std::collections::HashMap::new();
5496
5497 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
5499 let val = String::from_utf8_lossy(&attr.value);
5500 match attr.key.local_name().as_ref() {
5501 b"name" => {
5502 f_name = Some(val.into_owned());
5503 }
5504 #[cfg(feature = "extra-attrs")]
5505 unknown => {
5506 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
5507 extra_attrs.insert(key, val.into_owned());
5508 }
5509 #[cfg(not(feature = "extra-attrs"))]
5510 _ => {}
5511 }
5512 }
5513
5514 if !is_empty {
5515 let mut buf = Vec::new();
5516 loop {
5517 match reader.read_event_into(&mut buf)? {
5518 Event::End(_) => break,
5519 Event::Eof => break,
5520 _ => {}
5521 }
5522 buf.clear();
5523 }
5524 }
5525
5526 Ok(Self {
5527 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
5528 #[cfg(feature = "extra-attrs")]
5529 extra_attrs,
5530 })
5531 }
5532}
5533
5534impl FromXml for CTRangeSets {
5535 fn from_xml<R: BufRead>(
5536 reader: &mut Reader<R>,
5537 start_tag: &BytesStart,
5538 is_empty: bool,
5539 ) -> Result<Self, ParseError> {
5540 let mut f_count = None;
5541 let mut f_range_set = Vec::new();
5542 #[cfg(feature = "extra-attrs")]
5543 let mut extra_attrs = std::collections::HashMap::new();
5544 #[cfg(feature = "extra-children")]
5545 let mut extra_children = Vec::new();
5546 #[cfg(feature = "extra-children")]
5547 let mut child_idx: usize = 0;
5548
5549 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
5551 let val = String::from_utf8_lossy(&attr.value);
5552 match attr.key.local_name().as_ref() {
5553 b"count" => {
5554 f_count = val.parse().ok();
5555 }
5556 #[cfg(feature = "extra-attrs")]
5557 unknown => {
5558 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
5559 extra_attrs.insert(key, val.into_owned());
5560 }
5561 #[cfg(not(feature = "extra-attrs"))]
5562 _ => {}
5563 }
5564 }
5565
5566 if !is_empty {
5568 let mut buf = Vec::new();
5569 loop {
5570 match reader.read_event_into(&mut buf)? {
5571 Event::Start(e) => {
5572 match e.local_name().as_ref() {
5573 b"rangeSet" => {
5574 f_range_set.push(CTRangeSet::from_xml(reader, &e, false)?);
5575 #[cfg(feature = "extra-children")]
5576 {
5577 child_idx += 1;
5578 }
5579 }
5580 #[cfg(feature = "extra-children")]
5581 _ => {
5582 let elem = RawXmlElement::from_reader(reader, &e)?;
5584 extra_children.push(PositionedNode::new(
5585 child_idx,
5586 RawXmlNode::Element(elem),
5587 ));
5588 child_idx += 1;
5589 }
5590 #[cfg(not(feature = "extra-children"))]
5591 _ => {
5592 skip_element(reader)?;
5594 }
5595 }
5596 }
5597 Event::Empty(e) => {
5598 match e.local_name().as_ref() {
5599 b"rangeSet" => {
5600 f_range_set.push(CTRangeSet::from_xml(reader, &e, true)?);
5601 #[cfg(feature = "extra-children")]
5602 {
5603 child_idx += 1;
5604 }
5605 }
5606 #[cfg(feature = "extra-children")]
5607 _ => {
5608 let elem = RawXmlElement::from_empty(&e);
5610 extra_children.push(PositionedNode::new(
5611 child_idx,
5612 RawXmlNode::Element(elem),
5613 ));
5614 child_idx += 1;
5615 }
5616 #[cfg(not(feature = "extra-children"))]
5617 _ => {}
5618 }
5619 }
5620 Event::End(_) => break,
5621 Event::Eof => break,
5622 _ => {}
5623 }
5624 buf.clear();
5625 }
5626 }
5627
5628 Ok(Self {
5629 count: f_count,
5630 range_set: f_range_set,
5631 #[cfg(feature = "extra-attrs")]
5632 extra_attrs,
5633 #[cfg(feature = "extra-children")]
5634 extra_children,
5635 })
5636 }
5637}
5638
5639impl FromXml for CTRangeSet {
5640 fn from_xml<R: BufRead>(
5641 reader: &mut Reader<R>,
5642 start_tag: &BytesStart,
5643 is_empty: bool,
5644 ) -> Result<Self, ParseError> {
5645 let mut f_i1 = None;
5646 let mut f_i2 = None;
5647 let mut f_i3 = None;
5648 let mut f_i4 = None;
5649 let mut f_reference = None;
5650 let mut f_name = None;
5651 let mut f_sheet = None;
5652 let mut f_id = None;
5653 #[cfg(feature = "extra-attrs")]
5654 let mut extra_attrs = std::collections::HashMap::new();
5655
5656 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
5658 let val = String::from_utf8_lossy(&attr.value);
5659 match attr.key.local_name().as_ref() {
5660 b"i1" => {
5661 f_i1 = val.parse().ok();
5662 }
5663 b"i2" => {
5664 f_i2 = val.parse().ok();
5665 }
5666 b"i3" => {
5667 f_i3 = val.parse().ok();
5668 }
5669 b"i4" => {
5670 f_i4 = val.parse().ok();
5671 }
5672 b"ref" => {
5673 f_reference = Some(val.into_owned());
5674 }
5675 b"name" => {
5676 f_name = Some(val.into_owned());
5677 }
5678 b"sheet" => {
5679 f_sheet = Some(val.into_owned());
5680 }
5681 b"id" => {
5682 f_id = Some(val.into_owned());
5683 }
5684 #[cfg(feature = "extra-attrs")]
5685 unknown => {
5686 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
5687 extra_attrs.insert(key, val.into_owned());
5688 }
5689 #[cfg(not(feature = "extra-attrs"))]
5690 _ => {}
5691 }
5692 }
5693
5694 if !is_empty {
5695 let mut buf = Vec::new();
5696 loop {
5697 match reader.read_event_into(&mut buf)? {
5698 Event::End(_) => break,
5699 Event::Eof => break,
5700 _ => {}
5701 }
5702 buf.clear();
5703 }
5704 }
5705
5706 Ok(Self {
5707 i1: f_i1,
5708 i2: f_i2,
5709 i3: f_i3,
5710 i4: f_i4,
5711 reference: f_reference,
5712 name: f_name,
5713 sheet: f_sheet,
5714 id: f_id,
5715 #[cfg(feature = "extra-attrs")]
5716 extra_attrs,
5717 })
5718 }
5719}
5720
5721impl FromXml for SharedItems {
5722 fn from_xml<R: BufRead>(
5723 reader: &mut Reader<R>,
5724 start_tag: &BytesStart,
5725 is_empty: bool,
5726 ) -> Result<Self, ParseError> {
5727 let mut f_contains_semi_mixed_types = None;
5728 let mut f_contains_non_date = None;
5729 let mut f_contains_date = None;
5730 let mut f_contains_string = None;
5731 let mut f_contains_blank = None;
5732 let mut f_contains_mixed_types = None;
5733 let mut f_contains_number = None;
5734 let mut f_contains_integer = None;
5735 let mut f_min_value = None;
5736 let mut f_max_value = None;
5737 let mut f_min_date = None;
5738 let mut f_max_date = None;
5739 let mut f_count = None;
5740 let mut f_long_text = None;
5741 let mut f_m = Vec::new();
5742 let mut f_n = Vec::new();
5743 let mut f_b = Vec::new();
5744 let mut f_e = Vec::new();
5745 let mut f_style_index = Vec::new();
5746 let mut f_d = Vec::new();
5747 #[cfg(feature = "extra-attrs")]
5748 let mut extra_attrs = std::collections::HashMap::new();
5749 #[cfg(feature = "extra-children")]
5750 let mut extra_children = Vec::new();
5751 #[cfg(feature = "extra-children")]
5752 let mut child_idx: usize = 0;
5753
5754 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
5756 let val = String::from_utf8_lossy(&attr.value);
5757 match attr.key.local_name().as_ref() {
5758 b"containsSemiMixedTypes" => {
5759 f_contains_semi_mixed_types = Some(val == "true" || val == "1");
5760 }
5761 b"containsNonDate" => {
5762 f_contains_non_date = Some(val == "true" || val == "1");
5763 }
5764 b"containsDate" => {
5765 f_contains_date = Some(val == "true" || val == "1");
5766 }
5767 b"containsString" => {
5768 f_contains_string = Some(val == "true" || val == "1");
5769 }
5770 b"containsBlank" => {
5771 f_contains_blank = Some(val == "true" || val == "1");
5772 }
5773 b"containsMixedTypes" => {
5774 f_contains_mixed_types = Some(val == "true" || val == "1");
5775 }
5776 b"containsNumber" => {
5777 f_contains_number = Some(val == "true" || val == "1");
5778 }
5779 b"containsInteger" => {
5780 f_contains_integer = Some(val == "true" || val == "1");
5781 }
5782 b"minValue" => {
5783 f_min_value = val.parse().ok();
5784 }
5785 b"maxValue" => {
5786 f_max_value = val.parse().ok();
5787 }
5788 b"minDate" => {
5789 f_min_date = Some(val.into_owned());
5790 }
5791 b"maxDate" => {
5792 f_max_date = Some(val.into_owned());
5793 }
5794 b"count" => {
5795 f_count = val.parse().ok();
5796 }
5797 b"longText" => {
5798 f_long_text = Some(val == "true" || val == "1");
5799 }
5800 #[cfg(feature = "extra-attrs")]
5801 unknown => {
5802 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
5803 extra_attrs.insert(key, val.into_owned());
5804 }
5805 #[cfg(not(feature = "extra-attrs"))]
5806 _ => {}
5807 }
5808 }
5809
5810 if !is_empty {
5812 let mut buf = Vec::new();
5813 loop {
5814 match reader.read_event_into(&mut buf)? {
5815 Event::Start(e) => {
5816 match e.local_name().as_ref() {
5817 b"m" => {
5818 f_m.push(CTMissing::from_xml(reader, &e, false)?);
5819 #[cfg(feature = "extra-children")]
5820 {
5821 child_idx += 1;
5822 }
5823 }
5824 b"n" => {
5825 f_n.push(CTNumber::from_xml(reader, &e, false)?);
5826 #[cfg(feature = "extra-children")]
5827 {
5828 child_idx += 1;
5829 }
5830 }
5831 b"b" => {
5832 f_b.push(CTBoolean::from_xml(reader, &e, false)?);
5833 #[cfg(feature = "extra-children")]
5834 {
5835 child_idx += 1;
5836 }
5837 }
5838 b"e" => {
5839 f_e.push(CTError::from_xml(reader, &e, false)?);
5840 #[cfg(feature = "extra-children")]
5841 {
5842 child_idx += 1;
5843 }
5844 }
5845 b"s" => {
5846 f_style_index.push(CTString::from_xml(reader, &e, false)?);
5847 #[cfg(feature = "extra-children")]
5848 {
5849 child_idx += 1;
5850 }
5851 }
5852 b"d" => {
5853 f_d.push(CTDateTime::from_xml(reader, &e, false)?);
5854 #[cfg(feature = "extra-children")]
5855 {
5856 child_idx += 1;
5857 }
5858 }
5859 #[cfg(feature = "extra-children")]
5860 _ => {
5861 let elem = RawXmlElement::from_reader(reader, &e)?;
5863 extra_children.push(PositionedNode::new(
5864 child_idx,
5865 RawXmlNode::Element(elem),
5866 ));
5867 child_idx += 1;
5868 }
5869 #[cfg(not(feature = "extra-children"))]
5870 _ => {
5871 skip_element(reader)?;
5873 }
5874 }
5875 }
5876 Event::Empty(e) => {
5877 match e.local_name().as_ref() {
5878 b"m" => {
5879 f_m.push(CTMissing::from_xml(reader, &e, true)?);
5880 #[cfg(feature = "extra-children")]
5881 {
5882 child_idx += 1;
5883 }
5884 }
5885 b"n" => {
5886 f_n.push(CTNumber::from_xml(reader, &e, true)?);
5887 #[cfg(feature = "extra-children")]
5888 {
5889 child_idx += 1;
5890 }
5891 }
5892 b"b" => {
5893 f_b.push(CTBoolean::from_xml(reader, &e, true)?);
5894 #[cfg(feature = "extra-children")]
5895 {
5896 child_idx += 1;
5897 }
5898 }
5899 b"e" => {
5900 f_e.push(CTError::from_xml(reader, &e, true)?);
5901 #[cfg(feature = "extra-children")]
5902 {
5903 child_idx += 1;
5904 }
5905 }
5906 b"s" => {
5907 f_style_index.push(CTString::from_xml(reader, &e, true)?);
5908 #[cfg(feature = "extra-children")]
5909 {
5910 child_idx += 1;
5911 }
5912 }
5913 b"d" => {
5914 f_d.push(CTDateTime::from_xml(reader, &e, true)?);
5915 #[cfg(feature = "extra-children")]
5916 {
5917 child_idx += 1;
5918 }
5919 }
5920 #[cfg(feature = "extra-children")]
5921 _ => {
5922 let elem = RawXmlElement::from_empty(&e);
5924 extra_children.push(PositionedNode::new(
5925 child_idx,
5926 RawXmlNode::Element(elem),
5927 ));
5928 child_idx += 1;
5929 }
5930 #[cfg(not(feature = "extra-children"))]
5931 _ => {}
5932 }
5933 }
5934 Event::End(_) => break,
5935 Event::Eof => break,
5936 _ => {}
5937 }
5938 buf.clear();
5939 }
5940 }
5941
5942 Ok(Self {
5943 contains_semi_mixed_types: f_contains_semi_mixed_types,
5944 contains_non_date: f_contains_non_date,
5945 contains_date: f_contains_date,
5946 contains_string: f_contains_string,
5947 contains_blank: f_contains_blank,
5948 contains_mixed_types: f_contains_mixed_types,
5949 contains_number: f_contains_number,
5950 contains_integer: f_contains_integer,
5951 min_value: f_min_value,
5952 max_value: f_max_value,
5953 min_date: f_min_date,
5954 max_date: f_max_date,
5955 count: f_count,
5956 long_text: f_long_text,
5957 m: f_m,
5958 n: f_n,
5959 b: f_b,
5960 e: f_e,
5961 style_index: f_style_index,
5962 d: f_d,
5963 #[cfg(feature = "extra-attrs")]
5964 extra_attrs,
5965 #[cfg(feature = "extra-children")]
5966 extra_children,
5967 })
5968 }
5969}
5970
5971impl FromXml for CTMissing {
5972 fn from_xml<R: BufRead>(
5973 reader: &mut Reader<R>,
5974 start_tag: &BytesStart,
5975 is_empty: bool,
5976 ) -> Result<Self, ParseError> {
5977 let mut f_u = None;
5978 let mut f_formula = None;
5979 let mut f_cells = None;
5980 let mut f_cp = None;
5981 let mut f_in = None;
5982 let mut f_bc = None;
5983 let mut f_fc = None;
5984 let mut f_i = None;
5985 let mut f_un = None;
5986 let mut f_st = None;
5987 let mut f_b = None;
5988 let mut f_tpls = Vec::new();
5989 let mut f_x = Vec::new();
5990 #[cfg(feature = "extra-attrs")]
5991 let mut extra_attrs = std::collections::HashMap::new();
5992 #[cfg(feature = "extra-children")]
5993 let mut extra_children = Vec::new();
5994 #[cfg(feature = "extra-children")]
5995 let mut child_idx: usize = 0;
5996
5997 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
5999 let val = String::from_utf8_lossy(&attr.value);
6000 match attr.key.local_name().as_ref() {
6001 b"u" => {
6002 f_u = Some(val == "true" || val == "1");
6003 }
6004 b"f" => {
6005 f_formula = Some(val == "true" || val == "1");
6006 }
6007 b"c" => {
6008 f_cells = Some(val.into_owned());
6009 }
6010 b"cp" => {
6011 f_cp = val.parse().ok();
6012 }
6013 b"in" => {
6014 f_in = val.parse().ok();
6015 }
6016 b"bc" => {
6017 f_bc = decode_hex(&val);
6018 }
6019 b"fc" => {
6020 f_fc = decode_hex(&val);
6021 }
6022 b"i" => {
6023 f_i = Some(val == "true" || val == "1");
6024 }
6025 b"un" => {
6026 f_un = Some(val == "true" || val == "1");
6027 }
6028 b"st" => {
6029 f_st = Some(val == "true" || val == "1");
6030 }
6031 b"b" => {
6032 f_b = Some(val == "true" || val == "1");
6033 }
6034 #[cfg(feature = "extra-attrs")]
6035 unknown => {
6036 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
6037 extra_attrs.insert(key, val.into_owned());
6038 }
6039 #[cfg(not(feature = "extra-attrs"))]
6040 _ => {}
6041 }
6042 }
6043
6044 if !is_empty {
6046 let mut buf = Vec::new();
6047 loop {
6048 match reader.read_event_into(&mut buf)? {
6049 Event::Start(e) => {
6050 match e.local_name().as_ref() {
6051 b"tpls" => {
6052 f_tpls.push(CTTuples::from_xml(reader, &e, false)?);
6053 #[cfg(feature = "extra-children")]
6054 {
6055 child_idx += 1;
6056 }
6057 }
6058 b"x" => {
6059 f_x.push(CTX::from_xml(reader, &e, false)?);
6060 #[cfg(feature = "extra-children")]
6061 {
6062 child_idx += 1;
6063 }
6064 }
6065 #[cfg(feature = "extra-children")]
6066 _ => {
6067 let elem = RawXmlElement::from_reader(reader, &e)?;
6069 extra_children.push(PositionedNode::new(
6070 child_idx,
6071 RawXmlNode::Element(elem),
6072 ));
6073 child_idx += 1;
6074 }
6075 #[cfg(not(feature = "extra-children"))]
6076 _ => {
6077 skip_element(reader)?;
6079 }
6080 }
6081 }
6082 Event::Empty(e) => {
6083 match e.local_name().as_ref() {
6084 b"tpls" => {
6085 f_tpls.push(CTTuples::from_xml(reader, &e, true)?);
6086 #[cfg(feature = "extra-children")]
6087 {
6088 child_idx += 1;
6089 }
6090 }
6091 b"x" => {
6092 f_x.push(CTX::from_xml(reader, &e, true)?);
6093 #[cfg(feature = "extra-children")]
6094 {
6095 child_idx += 1;
6096 }
6097 }
6098 #[cfg(feature = "extra-children")]
6099 _ => {
6100 let elem = RawXmlElement::from_empty(&e);
6102 extra_children.push(PositionedNode::new(
6103 child_idx,
6104 RawXmlNode::Element(elem),
6105 ));
6106 child_idx += 1;
6107 }
6108 #[cfg(not(feature = "extra-children"))]
6109 _ => {}
6110 }
6111 }
6112 Event::End(_) => break,
6113 Event::Eof => break,
6114 _ => {}
6115 }
6116 buf.clear();
6117 }
6118 }
6119
6120 Ok(Self {
6121 u: f_u,
6122 formula: f_formula,
6123 cells: f_cells,
6124 cp: f_cp,
6125 r#in: f_in,
6126 bc: f_bc,
6127 fc: f_fc,
6128 i: f_i,
6129 un: f_un,
6130 st: f_st,
6131 b: f_b,
6132 tpls: f_tpls,
6133 x: f_x,
6134 #[cfg(feature = "extra-attrs")]
6135 extra_attrs,
6136 #[cfg(feature = "extra-children")]
6137 extra_children,
6138 })
6139 }
6140}
6141
6142impl FromXml for CTNumber {
6143 fn from_xml<R: BufRead>(
6144 reader: &mut Reader<R>,
6145 start_tag: &BytesStart,
6146 is_empty: bool,
6147 ) -> Result<Self, ParseError> {
6148 let mut f_value: Option<f64> = None;
6149 let mut f_u = None;
6150 let mut f_formula = None;
6151 let mut f_cells = None;
6152 let mut f_cp = None;
6153 let mut f_in = None;
6154 let mut f_bc = None;
6155 let mut f_fc = None;
6156 let mut f_i = None;
6157 let mut f_un = None;
6158 let mut f_st = None;
6159 let mut f_b = None;
6160 let mut f_tpls = Vec::new();
6161 let mut f_x = Vec::new();
6162 #[cfg(feature = "extra-attrs")]
6163 let mut extra_attrs = std::collections::HashMap::new();
6164 #[cfg(feature = "extra-children")]
6165 let mut extra_children = Vec::new();
6166 #[cfg(feature = "extra-children")]
6167 let mut child_idx: usize = 0;
6168
6169 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
6171 let val = String::from_utf8_lossy(&attr.value);
6172 match attr.key.local_name().as_ref() {
6173 b"v" => {
6174 f_value = val.parse().ok();
6175 }
6176 b"u" => {
6177 f_u = Some(val == "true" || val == "1");
6178 }
6179 b"f" => {
6180 f_formula = Some(val == "true" || val == "1");
6181 }
6182 b"c" => {
6183 f_cells = Some(val.into_owned());
6184 }
6185 b"cp" => {
6186 f_cp = val.parse().ok();
6187 }
6188 b"in" => {
6189 f_in = val.parse().ok();
6190 }
6191 b"bc" => {
6192 f_bc = decode_hex(&val);
6193 }
6194 b"fc" => {
6195 f_fc = decode_hex(&val);
6196 }
6197 b"i" => {
6198 f_i = Some(val == "true" || val == "1");
6199 }
6200 b"un" => {
6201 f_un = Some(val == "true" || val == "1");
6202 }
6203 b"st" => {
6204 f_st = Some(val == "true" || val == "1");
6205 }
6206 b"b" => {
6207 f_b = Some(val == "true" || val == "1");
6208 }
6209 #[cfg(feature = "extra-attrs")]
6210 unknown => {
6211 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
6212 extra_attrs.insert(key, val.into_owned());
6213 }
6214 #[cfg(not(feature = "extra-attrs"))]
6215 _ => {}
6216 }
6217 }
6218
6219 if !is_empty {
6221 let mut buf = Vec::new();
6222 loop {
6223 match reader.read_event_into(&mut buf)? {
6224 Event::Start(e) => {
6225 match e.local_name().as_ref() {
6226 b"tpls" => {
6227 f_tpls.push(CTTuples::from_xml(reader, &e, false)?);
6228 #[cfg(feature = "extra-children")]
6229 {
6230 child_idx += 1;
6231 }
6232 }
6233 b"x" => {
6234 f_x.push(CTX::from_xml(reader, &e, false)?);
6235 #[cfg(feature = "extra-children")]
6236 {
6237 child_idx += 1;
6238 }
6239 }
6240 #[cfg(feature = "extra-children")]
6241 _ => {
6242 let elem = RawXmlElement::from_reader(reader, &e)?;
6244 extra_children.push(PositionedNode::new(
6245 child_idx,
6246 RawXmlNode::Element(elem),
6247 ));
6248 child_idx += 1;
6249 }
6250 #[cfg(not(feature = "extra-children"))]
6251 _ => {
6252 skip_element(reader)?;
6254 }
6255 }
6256 }
6257 Event::Empty(e) => {
6258 match e.local_name().as_ref() {
6259 b"tpls" => {
6260 f_tpls.push(CTTuples::from_xml(reader, &e, true)?);
6261 #[cfg(feature = "extra-children")]
6262 {
6263 child_idx += 1;
6264 }
6265 }
6266 b"x" => {
6267 f_x.push(CTX::from_xml(reader, &e, true)?);
6268 #[cfg(feature = "extra-children")]
6269 {
6270 child_idx += 1;
6271 }
6272 }
6273 #[cfg(feature = "extra-children")]
6274 _ => {
6275 let elem = RawXmlElement::from_empty(&e);
6277 extra_children.push(PositionedNode::new(
6278 child_idx,
6279 RawXmlNode::Element(elem),
6280 ));
6281 child_idx += 1;
6282 }
6283 #[cfg(not(feature = "extra-children"))]
6284 _ => {}
6285 }
6286 }
6287 Event::End(_) => break,
6288 Event::Eof => break,
6289 _ => {}
6290 }
6291 buf.clear();
6292 }
6293 }
6294
6295 Ok(Self {
6296 value: f_value.ok_or_else(|| ParseError::MissingAttribute("v".to_string()))?,
6297 u: f_u,
6298 formula: f_formula,
6299 cells: f_cells,
6300 cp: f_cp,
6301 r#in: f_in,
6302 bc: f_bc,
6303 fc: f_fc,
6304 i: f_i,
6305 un: f_un,
6306 st: f_st,
6307 b: f_b,
6308 tpls: f_tpls,
6309 x: f_x,
6310 #[cfg(feature = "extra-attrs")]
6311 extra_attrs,
6312 #[cfg(feature = "extra-children")]
6313 extra_children,
6314 })
6315 }
6316}
6317
6318impl FromXml for CTBoolean {
6319 fn from_xml<R: BufRead>(
6320 reader: &mut Reader<R>,
6321 start_tag: &BytesStart,
6322 is_empty: bool,
6323 ) -> Result<Self, ParseError> {
6324 let mut f_value: Option<bool> = None;
6325 let mut f_u = None;
6326 let mut f_formula = None;
6327 let mut f_cells = None;
6328 let mut f_cp = None;
6329 let mut f_x = Vec::new();
6330 #[cfg(feature = "extra-attrs")]
6331 let mut extra_attrs = std::collections::HashMap::new();
6332 #[cfg(feature = "extra-children")]
6333 let mut extra_children = Vec::new();
6334 #[cfg(feature = "extra-children")]
6335 let mut child_idx: usize = 0;
6336
6337 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
6339 let val = String::from_utf8_lossy(&attr.value);
6340 match attr.key.local_name().as_ref() {
6341 b"v" => {
6342 f_value = Some(val == "true" || val == "1");
6343 }
6344 b"u" => {
6345 f_u = Some(val == "true" || val == "1");
6346 }
6347 b"f" => {
6348 f_formula = Some(val == "true" || val == "1");
6349 }
6350 b"c" => {
6351 f_cells = Some(val.into_owned());
6352 }
6353 b"cp" => {
6354 f_cp = val.parse().ok();
6355 }
6356 #[cfg(feature = "extra-attrs")]
6357 unknown => {
6358 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
6359 extra_attrs.insert(key, val.into_owned());
6360 }
6361 #[cfg(not(feature = "extra-attrs"))]
6362 _ => {}
6363 }
6364 }
6365
6366 if !is_empty {
6368 let mut buf = Vec::new();
6369 loop {
6370 match reader.read_event_into(&mut buf)? {
6371 Event::Start(e) => {
6372 match e.local_name().as_ref() {
6373 b"x" => {
6374 f_x.push(CTX::from_xml(reader, &e, false)?);
6375 #[cfg(feature = "extra-children")]
6376 {
6377 child_idx += 1;
6378 }
6379 }
6380 #[cfg(feature = "extra-children")]
6381 _ => {
6382 let elem = RawXmlElement::from_reader(reader, &e)?;
6384 extra_children.push(PositionedNode::new(
6385 child_idx,
6386 RawXmlNode::Element(elem),
6387 ));
6388 child_idx += 1;
6389 }
6390 #[cfg(not(feature = "extra-children"))]
6391 _ => {
6392 skip_element(reader)?;
6394 }
6395 }
6396 }
6397 Event::Empty(e) => {
6398 match e.local_name().as_ref() {
6399 b"x" => {
6400 f_x.push(CTX::from_xml(reader, &e, true)?);
6401 #[cfg(feature = "extra-children")]
6402 {
6403 child_idx += 1;
6404 }
6405 }
6406 #[cfg(feature = "extra-children")]
6407 _ => {
6408 let elem = RawXmlElement::from_empty(&e);
6410 extra_children.push(PositionedNode::new(
6411 child_idx,
6412 RawXmlNode::Element(elem),
6413 ));
6414 child_idx += 1;
6415 }
6416 #[cfg(not(feature = "extra-children"))]
6417 _ => {}
6418 }
6419 }
6420 Event::End(_) => break,
6421 Event::Eof => break,
6422 _ => {}
6423 }
6424 buf.clear();
6425 }
6426 }
6427
6428 Ok(Self {
6429 value: f_value.ok_or_else(|| ParseError::MissingAttribute("v".to_string()))?,
6430 u: f_u,
6431 formula: f_formula,
6432 cells: f_cells,
6433 cp: f_cp,
6434 x: f_x,
6435 #[cfg(feature = "extra-attrs")]
6436 extra_attrs,
6437 #[cfg(feature = "extra-children")]
6438 extra_children,
6439 })
6440 }
6441}
6442
6443impl FromXml for CTError {
6444 fn from_xml<R: BufRead>(
6445 reader: &mut Reader<R>,
6446 start_tag: &BytesStart,
6447 is_empty: bool,
6448 ) -> Result<Self, ParseError> {
6449 let mut f_value: Option<XmlString> = None;
6450 let mut f_u = None;
6451 let mut f_formula = None;
6452 let mut f_cells = None;
6453 let mut f_cp = None;
6454 let mut f_in = None;
6455 let mut f_bc = None;
6456 let mut f_fc = None;
6457 let mut f_i = None;
6458 let mut f_un = None;
6459 let mut f_st = None;
6460 let mut f_b = None;
6461 let mut f_tpls = None;
6462 let mut f_x = Vec::new();
6463 #[cfg(feature = "extra-attrs")]
6464 let mut extra_attrs = std::collections::HashMap::new();
6465 #[cfg(feature = "extra-children")]
6466 let mut extra_children = Vec::new();
6467 #[cfg(feature = "extra-children")]
6468 let mut child_idx: usize = 0;
6469
6470 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
6472 let val = String::from_utf8_lossy(&attr.value);
6473 match attr.key.local_name().as_ref() {
6474 b"v" => {
6475 f_value = Some(val.into_owned());
6476 }
6477 b"u" => {
6478 f_u = Some(val == "true" || val == "1");
6479 }
6480 b"f" => {
6481 f_formula = Some(val == "true" || val == "1");
6482 }
6483 b"c" => {
6484 f_cells = Some(val.into_owned());
6485 }
6486 b"cp" => {
6487 f_cp = val.parse().ok();
6488 }
6489 b"in" => {
6490 f_in = val.parse().ok();
6491 }
6492 b"bc" => {
6493 f_bc = decode_hex(&val);
6494 }
6495 b"fc" => {
6496 f_fc = decode_hex(&val);
6497 }
6498 b"i" => {
6499 f_i = Some(val == "true" || val == "1");
6500 }
6501 b"un" => {
6502 f_un = Some(val == "true" || val == "1");
6503 }
6504 b"st" => {
6505 f_st = Some(val == "true" || val == "1");
6506 }
6507 b"b" => {
6508 f_b = Some(val == "true" || val == "1");
6509 }
6510 #[cfg(feature = "extra-attrs")]
6511 unknown => {
6512 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
6513 extra_attrs.insert(key, val.into_owned());
6514 }
6515 #[cfg(not(feature = "extra-attrs"))]
6516 _ => {}
6517 }
6518 }
6519
6520 if !is_empty {
6522 let mut buf = Vec::new();
6523 loop {
6524 match reader.read_event_into(&mut buf)? {
6525 Event::Start(e) => {
6526 match e.local_name().as_ref() {
6527 b"tpls" => {
6528 f_tpls = Some(Box::new(CTTuples::from_xml(reader, &e, false)?));
6529 #[cfg(feature = "extra-children")]
6530 {
6531 child_idx += 1;
6532 }
6533 }
6534 b"x" => {
6535 f_x.push(CTX::from_xml(reader, &e, false)?);
6536 #[cfg(feature = "extra-children")]
6537 {
6538 child_idx += 1;
6539 }
6540 }
6541 #[cfg(feature = "extra-children")]
6542 _ => {
6543 let elem = RawXmlElement::from_reader(reader, &e)?;
6545 extra_children.push(PositionedNode::new(
6546 child_idx,
6547 RawXmlNode::Element(elem),
6548 ));
6549 child_idx += 1;
6550 }
6551 #[cfg(not(feature = "extra-children"))]
6552 _ => {
6553 skip_element(reader)?;
6555 }
6556 }
6557 }
6558 Event::Empty(e) => {
6559 match e.local_name().as_ref() {
6560 b"tpls" => {
6561 f_tpls = Some(Box::new(CTTuples::from_xml(reader, &e, true)?));
6562 #[cfg(feature = "extra-children")]
6563 {
6564 child_idx += 1;
6565 }
6566 }
6567 b"x" => {
6568 f_x.push(CTX::from_xml(reader, &e, true)?);
6569 #[cfg(feature = "extra-children")]
6570 {
6571 child_idx += 1;
6572 }
6573 }
6574 #[cfg(feature = "extra-children")]
6575 _ => {
6576 let elem = RawXmlElement::from_empty(&e);
6578 extra_children.push(PositionedNode::new(
6579 child_idx,
6580 RawXmlNode::Element(elem),
6581 ));
6582 child_idx += 1;
6583 }
6584 #[cfg(not(feature = "extra-children"))]
6585 _ => {}
6586 }
6587 }
6588 Event::End(_) => break,
6589 Event::Eof => break,
6590 _ => {}
6591 }
6592 buf.clear();
6593 }
6594 }
6595
6596 Ok(Self {
6597 value: f_value.ok_or_else(|| ParseError::MissingAttribute("v".to_string()))?,
6598 u: f_u,
6599 formula: f_formula,
6600 cells: f_cells,
6601 cp: f_cp,
6602 r#in: f_in,
6603 bc: f_bc,
6604 fc: f_fc,
6605 i: f_i,
6606 un: f_un,
6607 st: f_st,
6608 b: f_b,
6609 tpls: f_tpls,
6610 x: f_x,
6611 #[cfg(feature = "extra-attrs")]
6612 extra_attrs,
6613 #[cfg(feature = "extra-children")]
6614 extra_children,
6615 })
6616 }
6617}
6618
6619impl FromXml for CTString {
6620 fn from_xml<R: BufRead>(
6621 reader: &mut Reader<R>,
6622 start_tag: &BytesStart,
6623 is_empty: bool,
6624 ) -> Result<Self, ParseError> {
6625 let mut f_value: Option<XmlString> = None;
6626 let mut f_u = None;
6627 let mut f_formula = None;
6628 let mut f_cells = None;
6629 let mut f_cp = None;
6630 let mut f_in = None;
6631 let mut f_bc = None;
6632 let mut f_fc = None;
6633 let mut f_i = None;
6634 let mut f_un = None;
6635 let mut f_st = None;
6636 let mut f_b = None;
6637 let mut f_tpls = Vec::new();
6638 let mut f_x = Vec::new();
6639 #[cfg(feature = "extra-attrs")]
6640 let mut extra_attrs = std::collections::HashMap::new();
6641 #[cfg(feature = "extra-children")]
6642 let mut extra_children = Vec::new();
6643 #[cfg(feature = "extra-children")]
6644 let mut child_idx: usize = 0;
6645
6646 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
6648 let val = String::from_utf8_lossy(&attr.value);
6649 match attr.key.local_name().as_ref() {
6650 b"v" => {
6651 f_value = Some(val.into_owned());
6652 }
6653 b"u" => {
6654 f_u = Some(val == "true" || val == "1");
6655 }
6656 b"f" => {
6657 f_formula = Some(val == "true" || val == "1");
6658 }
6659 b"c" => {
6660 f_cells = Some(val.into_owned());
6661 }
6662 b"cp" => {
6663 f_cp = val.parse().ok();
6664 }
6665 b"in" => {
6666 f_in = val.parse().ok();
6667 }
6668 b"bc" => {
6669 f_bc = decode_hex(&val);
6670 }
6671 b"fc" => {
6672 f_fc = decode_hex(&val);
6673 }
6674 b"i" => {
6675 f_i = Some(val == "true" || val == "1");
6676 }
6677 b"un" => {
6678 f_un = Some(val == "true" || val == "1");
6679 }
6680 b"st" => {
6681 f_st = Some(val == "true" || val == "1");
6682 }
6683 b"b" => {
6684 f_b = Some(val == "true" || val == "1");
6685 }
6686 #[cfg(feature = "extra-attrs")]
6687 unknown => {
6688 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
6689 extra_attrs.insert(key, val.into_owned());
6690 }
6691 #[cfg(not(feature = "extra-attrs"))]
6692 _ => {}
6693 }
6694 }
6695
6696 if !is_empty {
6698 let mut buf = Vec::new();
6699 loop {
6700 match reader.read_event_into(&mut buf)? {
6701 Event::Start(e) => {
6702 match e.local_name().as_ref() {
6703 b"tpls" => {
6704 f_tpls.push(CTTuples::from_xml(reader, &e, false)?);
6705 #[cfg(feature = "extra-children")]
6706 {
6707 child_idx += 1;
6708 }
6709 }
6710 b"x" => {
6711 f_x.push(CTX::from_xml(reader, &e, false)?);
6712 #[cfg(feature = "extra-children")]
6713 {
6714 child_idx += 1;
6715 }
6716 }
6717 #[cfg(feature = "extra-children")]
6718 _ => {
6719 let elem = RawXmlElement::from_reader(reader, &e)?;
6721 extra_children.push(PositionedNode::new(
6722 child_idx,
6723 RawXmlNode::Element(elem),
6724 ));
6725 child_idx += 1;
6726 }
6727 #[cfg(not(feature = "extra-children"))]
6728 _ => {
6729 skip_element(reader)?;
6731 }
6732 }
6733 }
6734 Event::Empty(e) => {
6735 match e.local_name().as_ref() {
6736 b"tpls" => {
6737 f_tpls.push(CTTuples::from_xml(reader, &e, true)?);
6738 #[cfg(feature = "extra-children")]
6739 {
6740 child_idx += 1;
6741 }
6742 }
6743 b"x" => {
6744 f_x.push(CTX::from_xml(reader, &e, true)?);
6745 #[cfg(feature = "extra-children")]
6746 {
6747 child_idx += 1;
6748 }
6749 }
6750 #[cfg(feature = "extra-children")]
6751 _ => {
6752 let elem = RawXmlElement::from_empty(&e);
6754 extra_children.push(PositionedNode::new(
6755 child_idx,
6756 RawXmlNode::Element(elem),
6757 ));
6758 child_idx += 1;
6759 }
6760 #[cfg(not(feature = "extra-children"))]
6761 _ => {}
6762 }
6763 }
6764 Event::End(_) => break,
6765 Event::Eof => break,
6766 _ => {}
6767 }
6768 buf.clear();
6769 }
6770 }
6771
6772 Ok(Self {
6773 value: f_value.ok_or_else(|| ParseError::MissingAttribute("v".to_string()))?,
6774 u: f_u,
6775 formula: f_formula,
6776 cells: f_cells,
6777 cp: f_cp,
6778 r#in: f_in,
6779 bc: f_bc,
6780 fc: f_fc,
6781 i: f_i,
6782 un: f_un,
6783 st: f_st,
6784 b: f_b,
6785 tpls: f_tpls,
6786 x: f_x,
6787 #[cfg(feature = "extra-attrs")]
6788 extra_attrs,
6789 #[cfg(feature = "extra-children")]
6790 extra_children,
6791 })
6792 }
6793}
6794
6795impl FromXml for CTDateTime {
6796 fn from_xml<R: BufRead>(
6797 reader: &mut Reader<R>,
6798 start_tag: &BytesStart,
6799 is_empty: bool,
6800 ) -> Result<Self, ParseError> {
6801 let mut f_value: Option<String> = None;
6802 let mut f_u = None;
6803 let mut f_formula = None;
6804 let mut f_cells = None;
6805 let mut f_cp = None;
6806 let mut f_x = Vec::new();
6807 #[cfg(feature = "extra-attrs")]
6808 let mut extra_attrs = std::collections::HashMap::new();
6809 #[cfg(feature = "extra-children")]
6810 let mut extra_children = Vec::new();
6811 #[cfg(feature = "extra-children")]
6812 let mut child_idx: usize = 0;
6813
6814 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
6816 let val = String::from_utf8_lossy(&attr.value);
6817 match attr.key.local_name().as_ref() {
6818 b"v" => {
6819 f_value = Some(val.into_owned());
6820 }
6821 b"u" => {
6822 f_u = Some(val == "true" || val == "1");
6823 }
6824 b"f" => {
6825 f_formula = Some(val == "true" || val == "1");
6826 }
6827 b"c" => {
6828 f_cells = Some(val.into_owned());
6829 }
6830 b"cp" => {
6831 f_cp = val.parse().ok();
6832 }
6833 #[cfg(feature = "extra-attrs")]
6834 unknown => {
6835 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
6836 extra_attrs.insert(key, val.into_owned());
6837 }
6838 #[cfg(not(feature = "extra-attrs"))]
6839 _ => {}
6840 }
6841 }
6842
6843 if !is_empty {
6845 let mut buf = Vec::new();
6846 loop {
6847 match reader.read_event_into(&mut buf)? {
6848 Event::Start(e) => {
6849 match e.local_name().as_ref() {
6850 b"x" => {
6851 f_x.push(CTX::from_xml(reader, &e, false)?);
6852 #[cfg(feature = "extra-children")]
6853 {
6854 child_idx += 1;
6855 }
6856 }
6857 #[cfg(feature = "extra-children")]
6858 _ => {
6859 let elem = RawXmlElement::from_reader(reader, &e)?;
6861 extra_children.push(PositionedNode::new(
6862 child_idx,
6863 RawXmlNode::Element(elem),
6864 ));
6865 child_idx += 1;
6866 }
6867 #[cfg(not(feature = "extra-children"))]
6868 _ => {
6869 skip_element(reader)?;
6871 }
6872 }
6873 }
6874 Event::Empty(e) => {
6875 match e.local_name().as_ref() {
6876 b"x" => {
6877 f_x.push(CTX::from_xml(reader, &e, true)?);
6878 #[cfg(feature = "extra-children")]
6879 {
6880 child_idx += 1;
6881 }
6882 }
6883 #[cfg(feature = "extra-children")]
6884 _ => {
6885 let elem = RawXmlElement::from_empty(&e);
6887 extra_children.push(PositionedNode::new(
6888 child_idx,
6889 RawXmlNode::Element(elem),
6890 ));
6891 child_idx += 1;
6892 }
6893 #[cfg(not(feature = "extra-children"))]
6894 _ => {}
6895 }
6896 }
6897 Event::End(_) => break,
6898 Event::Eof => break,
6899 _ => {}
6900 }
6901 buf.clear();
6902 }
6903 }
6904
6905 Ok(Self {
6906 value: f_value.ok_or_else(|| ParseError::MissingAttribute("v".to_string()))?,
6907 u: f_u,
6908 formula: f_formula,
6909 cells: f_cells,
6910 cp: f_cp,
6911 x: f_x,
6912 #[cfg(feature = "extra-attrs")]
6913 extra_attrs,
6914 #[cfg(feature = "extra-children")]
6915 extra_children,
6916 })
6917 }
6918}
6919
6920impl FromXml for FieldGroup {
6921 fn from_xml<R: BufRead>(
6922 reader: &mut Reader<R>,
6923 start_tag: &BytesStart,
6924 is_empty: bool,
6925 ) -> Result<Self, ParseError> {
6926 let mut f_par = None;
6927 let mut f_base = None;
6928 let mut f_range_pr = None;
6929 let mut f_discrete_pr = None;
6930 let mut f_group_items = None;
6931 #[cfg(feature = "extra-attrs")]
6932 let mut extra_attrs = std::collections::HashMap::new();
6933 #[cfg(feature = "extra-children")]
6934 let mut extra_children = Vec::new();
6935 #[cfg(feature = "extra-children")]
6936 let mut child_idx: usize = 0;
6937
6938 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
6940 let val = String::from_utf8_lossy(&attr.value);
6941 match attr.key.local_name().as_ref() {
6942 b"par" => {
6943 f_par = val.parse().ok();
6944 }
6945 b"base" => {
6946 f_base = val.parse().ok();
6947 }
6948 #[cfg(feature = "extra-attrs")]
6949 unknown => {
6950 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
6951 extra_attrs.insert(key, val.into_owned());
6952 }
6953 #[cfg(not(feature = "extra-attrs"))]
6954 _ => {}
6955 }
6956 }
6957
6958 if !is_empty {
6960 let mut buf = Vec::new();
6961 loop {
6962 match reader.read_event_into(&mut buf)? {
6963 Event::Start(e) => {
6964 match e.local_name().as_ref() {
6965 b"rangePr" => {
6966 f_range_pr =
6967 Some(Box::new(CTRangePr::from_xml(reader, &e, false)?));
6968 #[cfg(feature = "extra-children")]
6969 {
6970 child_idx += 1;
6971 }
6972 }
6973 b"discretePr" => {
6974 f_discrete_pr =
6975 Some(Box::new(CTDiscretePr::from_xml(reader, &e, false)?));
6976 #[cfg(feature = "extra-children")]
6977 {
6978 child_idx += 1;
6979 }
6980 }
6981 b"groupItems" => {
6982 f_group_items =
6983 Some(Box::new(GroupItems::from_xml(reader, &e, false)?));
6984 #[cfg(feature = "extra-children")]
6985 {
6986 child_idx += 1;
6987 }
6988 }
6989 #[cfg(feature = "extra-children")]
6990 _ => {
6991 let elem = RawXmlElement::from_reader(reader, &e)?;
6993 extra_children.push(PositionedNode::new(
6994 child_idx,
6995 RawXmlNode::Element(elem),
6996 ));
6997 child_idx += 1;
6998 }
6999 #[cfg(not(feature = "extra-children"))]
7000 _ => {
7001 skip_element(reader)?;
7003 }
7004 }
7005 }
7006 Event::Empty(e) => {
7007 match e.local_name().as_ref() {
7008 b"rangePr" => {
7009 f_range_pr = Some(Box::new(CTRangePr::from_xml(reader, &e, true)?));
7010 #[cfg(feature = "extra-children")]
7011 {
7012 child_idx += 1;
7013 }
7014 }
7015 b"discretePr" => {
7016 f_discrete_pr =
7017 Some(Box::new(CTDiscretePr::from_xml(reader, &e, true)?));
7018 #[cfg(feature = "extra-children")]
7019 {
7020 child_idx += 1;
7021 }
7022 }
7023 b"groupItems" => {
7024 f_group_items =
7025 Some(Box::new(GroupItems::from_xml(reader, &e, true)?));
7026 #[cfg(feature = "extra-children")]
7027 {
7028 child_idx += 1;
7029 }
7030 }
7031 #[cfg(feature = "extra-children")]
7032 _ => {
7033 let elem = RawXmlElement::from_empty(&e);
7035 extra_children.push(PositionedNode::new(
7036 child_idx,
7037 RawXmlNode::Element(elem),
7038 ));
7039 child_idx += 1;
7040 }
7041 #[cfg(not(feature = "extra-children"))]
7042 _ => {}
7043 }
7044 }
7045 Event::End(_) => break,
7046 Event::Eof => break,
7047 _ => {}
7048 }
7049 buf.clear();
7050 }
7051 }
7052
7053 Ok(Self {
7054 par: f_par,
7055 base: f_base,
7056 range_pr: f_range_pr,
7057 discrete_pr: f_discrete_pr,
7058 group_items: f_group_items,
7059 #[cfg(feature = "extra-attrs")]
7060 extra_attrs,
7061 #[cfg(feature = "extra-children")]
7062 extra_children,
7063 })
7064 }
7065}
7066
7067impl FromXml for CTRangePr {
7068 fn from_xml<R: BufRead>(
7069 reader: &mut Reader<R>,
7070 start_tag: &BytesStart,
7071 is_empty: bool,
7072 ) -> Result<Self, ParseError> {
7073 let mut f_auto_start = None;
7074 let mut f_auto_end = None;
7075 let mut f_group_by = None;
7076 let mut f_start_num = None;
7077 let mut f_end_num = None;
7078 let mut f_start_date = None;
7079 let mut f_end_date = None;
7080 let mut f_group_interval = None;
7081 #[cfg(feature = "extra-attrs")]
7082 let mut extra_attrs = std::collections::HashMap::new();
7083
7084 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
7086 let val = String::from_utf8_lossy(&attr.value);
7087 match attr.key.local_name().as_ref() {
7088 b"autoStart" => {
7089 f_auto_start = Some(val == "true" || val == "1");
7090 }
7091 b"autoEnd" => {
7092 f_auto_end = Some(val == "true" || val == "1");
7093 }
7094 b"groupBy" => {
7095 f_group_by = val.parse().ok();
7096 }
7097 b"startNum" => {
7098 f_start_num = val.parse().ok();
7099 }
7100 b"endNum" => {
7101 f_end_num = val.parse().ok();
7102 }
7103 b"startDate" => {
7104 f_start_date = Some(val.into_owned());
7105 }
7106 b"endDate" => {
7107 f_end_date = Some(val.into_owned());
7108 }
7109 b"groupInterval" => {
7110 f_group_interval = val.parse().ok();
7111 }
7112 #[cfg(feature = "extra-attrs")]
7113 unknown => {
7114 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
7115 extra_attrs.insert(key, val.into_owned());
7116 }
7117 #[cfg(not(feature = "extra-attrs"))]
7118 _ => {}
7119 }
7120 }
7121
7122 if !is_empty {
7123 let mut buf = Vec::new();
7124 loop {
7125 match reader.read_event_into(&mut buf)? {
7126 Event::End(_) => break,
7127 Event::Eof => break,
7128 _ => {}
7129 }
7130 buf.clear();
7131 }
7132 }
7133
7134 Ok(Self {
7135 auto_start: f_auto_start,
7136 auto_end: f_auto_end,
7137 group_by: f_group_by,
7138 start_num: f_start_num,
7139 end_num: f_end_num,
7140 start_date: f_start_date,
7141 end_date: f_end_date,
7142 group_interval: f_group_interval,
7143 #[cfg(feature = "extra-attrs")]
7144 extra_attrs,
7145 })
7146 }
7147}
7148
7149impl FromXml for CTDiscretePr {
7150 fn from_xml<R: BufRead>(
7151 reader: &mut Reader<R>,
7152 start_tag: &BytesStart,
7153 is_empty: bool,
7154 ) -> Result<Self, ParseError> {
7155 let mut f_count = None;
7156 let mut f_x = Vec::new();
7157 #[cfg(feature = "extra-attrs")]
7158 let mut extra_attrs = std::collections::HashMap::new();
7159 #[cfg(feature = "extra-children")]
7160 let mut extra_children = Vec::new();
7161 #[cfg(feature = "extra-children")]
7162 let mut child_idx: usize = 0;
7163
7164 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
7166 let val = String::from_utf8_lossy(&attr.value);
7167 match attr.key.local_name().as_ref() {
7168 b"count" => {
7169 f_count = val.parse().ok();
7170 }
7171 #[cfg(feature = "extra-attrs")]
7172 unknown => {
7173 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
7174 extra_attrs.insert(key, val.into_owned());
7175 }
7176 #[cfg(not(feature = "extra-attrs"))]
7177 _ => {}
7178 }
7179 }
7180
7181 if !is_empty {
7183 let mut buf = Vec::new();
7184 loop {
7185 match reader.read_event_into(&mut buf)? {
7186 Event::Start(e) => {
7187 match e.local_name().as_ref() {
7188 b"x" => {
7189 f_x.push(CTIndex::from_xml(reader, &e, false)?);
7190 #[cfg(feature = "extra-children")]
7191 {
7192 child_idx += 1;
7193 }
7194 }
7195 #[cfg(feature = "extra-children")]
7196 _ => {
7197 let elem = RawXmlElement::from_reader(reader, &e)?;
7199 extra_children.push(PositionedNode::new(
7200 child_idx,
7201 RawXmlNode::Element(elem),
7202 ));
7203 child_idx += 1;
7204 }
7205 #[cfg(not(feature = "extra-children"))]
7206 _ => {
7207 skip_element(reader)?;
7209 }
7210 }
7211 }
7212 Event::Empty(e) => {
7213 match e.local_name().as_ref() {
7214 b"x" => {
7215 f_x.push(CTIndex::from_xml(reader, &e, true)?);
7216 #[cfg(feature = "extra-children")]
7217 {
7218 child_idx += 1;
7219 }
7220 }
7221 #[cfg(feature = "extra-children")]
7222 _ => {
7223 let elem = RawXmlElement::from_empty(&e);
7225 extra_children.push(PositionedNode::new(
7226 child_idx,
7227 RawXmlNode::Element(elem),
7228 ));
7229 child_idx += 1;
7230 }
7231 #[cfg(not(feature = "extra-children"))]
7232 _ => {}
7233 }
7234 }
7235 Event::End(_) => break,
7236 Event::Eof => break,
7237 _ => {}
7238 }
7239 buf.clear();
7240 }
7241 }
7242
7243 Ok(Self {
7244 count: f_count,
7245 x: f_x,
7246 #[cfg(feature = "extra-attrs")]
7247 extra_attrs,
7248 #[cfg(feature = "extra-children")]
7249 extra_children,
7250 })
7251 }
7252}
7253
7254impl FromXml for GroupItems {
7255 fn from_xml<R: BufRead>(
7256 reader: &mut Reader<R>,
7257 start_tag: &BytesStart,
7258 is_empty: bool,
7259 ) -> Result<Self, ParseError> {
7260 let mut f_count = None;
7261 let mut f_m = Vec::new();
7262 let mut f_n = Vec::new();
7263 let mut f_b = Vec::new();
7264 let mut f_e = Vec::new();
7265 let mut f_style_index = Vec::new();
7266 let mut f_d = Vec::new();
7267 #[cfg(feature = "extra-attrs")]
7268 let mut extra_attrs = std::collections::HashMap::new();
7269 #[cfg(feature = "extra-children")]
7270 let mut extra_children = Vec::new();
7271 #[cfg(feature = "extra-children")]
7272 let mut child_idx: usize = 0;
7273
7274 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
7276 let val = String::from_utf8_lossy(&attr.value);
7277 match attr.key.local_name().as_ref() {
7278 b"count" => {
7279 f_count = val.parse().ok();
7280 }
7281 #[cfg(feature = "extra-attrs")]
7282 unknown => {
7283 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
7284 extra_attrs.insert(key, val.into_owned());
7285 }
7286 #[cfg(not(feature = "extra-attrs"))]
7287 _ => {}
7288 }
7289 }
7290
7291 if !is_empty {
7293 let mut buf = Vec::new();
7294 loop {
7295 match reader.read_event_into(&mut buf)? {
7296 Event::Start(e) => {
7297 match e.local_name().as_ref() {
7298 b"m" => {
7299 f_m.push(CTMissing::from_xml(reader, &e, false)?);
7300 #[cfg(feature = "extra-children")]
7301 {
7302 child_idx += 1;
7303 }
7304 }
7305 b"n" => {
7306 f_n.push(CTNumber::from_xml(reader, &e, false)?);
7307 #[cfg(feature = "extra-children")]
7308 {
7309 child_idx += 1;
7310 }
7311 }
7312 b"b" => {
7313 f_b.push(CTBoolean::from_xml(reader, &e, false)?);
7314 #[cfg(feature = "extra-children")]
7315 {
7316 child_idx += 1;
7317 }
7318 }
7319 b"e" => {
7320 f_e.push(CTError::from_xml(reader, &e, false)?);
7321 #[cfg(feature = "extra-children")]
7322 {
7323 child_idx += 1;
7324 }
7325 }
7326 b"s" => {
7327 f_style_index.push(CTString::from_xml(reader, &e, false)?);
7328 #[cfg(feature = "extra-children")]
7329 {
7330 child_idx += 1;
7331 }
7332 }
7333 b"d" => {
7334 f_d.push(CTDateTime::from_xml(reader, &e, false)?);
7335 #[cfg(feature = "extra-children")]
7336 {
7337 child_idx += 1;
7338 }
7339 }
7340 #[cfg(feature = "extra-children")]
7341 _ => {
7342 let elem = RawXmlElement::from_reader(reader, &e)?;
7344 extra_children.push(PositionedNode::new(
7345 child_idx,
7346 RawXmlNode::Element(elem),
7347 ));
7348 child_idx += 1;
7349 }
7350 #[cfg(not(feature = "extra-children"))]
7351 _ => {
7352 skip_element(reader)?;
7354 }
7355 }
7356 }
7357 Event::Empty(e) => {
7358 match e.local_name().as_ref() {
7359 b"m" => {
7360 f_m.push(CTMissing::from_xml(reader, &e, true)?);
7361 #[cfg(feature = "extra-children")]
7362 {
7363 child_idx += 1;
7364 }
7365 }
7366 b"n" => {
7367 f_n.push(CTNumber::from_xml(reader, &e, true)?);
7368 #[cfg(feature = "extra-children")]
7369 {
7370 child_idx += 1;
7371 }
7372 }
7373 b"b" => {
7374 f_b.push(CTBoolean::from_xml(reader, &e, true)?);
7375 #[cfg(feature = "extra-children")]
7376 {
7377 child_idx += 1;
7378 }
7379 }
7380 b"e" => {
7381 f_e.push(CTError::from_xml(reader, &e, true)?);
7382 #[cfg(feature = "extra-children")]
7383 {
7384 child_idx += 1;
7385 }
7386 }
7387 b"s" => {
7388 f_style_index.push(CTString::from_xml(reader, &e, true)?);
7389 #[cfg(feature = "extra-children")]
7390 {
7391 child_idx += 1;
7392 }
7393 }
7394 b"d" => {
7395 f_d.push(CTDateTime::from_xml(reader, &e, true)?);
7396 #[cfg(feature = "extra-children")]
7397 {
7398 child_idx += 1;
7399 }
7400 }
7401 #[cfg(feature = "extra-children")]
7402 _ => {
7403 let elem = RawXmlElement::from_empty(&e);
7405 extra_children.push(PositionedNode::new(
7406 child_idx,
7407 RawXmlNode::Element(elem),
7408 ));
7409 child_idx += 1;
7410 }
7411 #[cfg(not(feature = "extra-children"))]
7412 _ => {}
7413 }
7414 }
7415 Event::End(_) => break,
7416 Event::Eof => break,
7417 _ => {}
7418 }
7419 buf.clear();
7420 }
7421 }
7422
7423 Ok(Self {
7424 count: f_count,
7425 m: f_m,
7426 n: f_n,
7427 b: f_b,
7428 e: f_e,
7429 style_index: f_style_index,
7430 d: f_d,
7431 #[cfg(feature = "extra-attrs")]
7432 extra_attrs,
7433 #[cfg(feature = "extra-children")]
7434 extra_children,
7435 })
7436 }
7437}
7438
7439impl FromXml for PivotCacheRecords {
7440 fn from_xml<R: BufRead>(
7441 reader: &mut Reader<R>,
7442 start_tag: &BytesStart,
7443 is_empty: bool,
7444 ) -> Result<Self, ParseError> {
7445 let mut f_count = None;
7446 let mut f_reference = Vec::new();
7447 let mut f_extension_list = None;
7448 #[cfg(feature = "extra-attrs")]
7449 let mut extra_attrs = std::collections::HashMap::new();
7450 #[cfg(feature = "extra-children")]
7451 let mut extra_children = Vec::new();
7452 #[cfg(feature = "extra-children")]
7453 let mut child_idx: usize = 0;
7454
7455 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
7457 let val = String::from_utf8_lossy(&attr.value);
7458 match attr.key.local_name().as_ref() {
7459 b"count" => {
7460 f_count = val.parse().ok();
7461 }
7462 #[cfg(feature = "extra-attrs")]
7463 unknown => {
7464 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
7465 extra_attrs.insert(key, val.into_owned());
7466 }
7467 #[cfg(not(feature = "extra-attrs"))]
7468 _ => {}
7469 }
7470 }
7471
7472 if !is_empty {
7474 let mut buf = Vec::new();
7475 loop {
7476 match reader.read_event_into(&mut buf)? {
7477 Event::Start(e) => {
7478 match e.local_name().as_ref() {
7479 b"r" => {
7480 f_reference.push(CTRecord::from_xml(reader, &e, false)?);
7481 #[cfg(feature = "extra-children")]
7482 {
7483 child_idx += 1;
7484 }
7485 }
7486 b"extLst" => {
7487 f_extension_list =
7488 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
7489 #[cfg(feature = "extra-children")]
7490 {
7491 child_idx += 1;
7492 }
7493 }
7494 #[cfg(feature = "extra-children")]
7495 _ => {
7496 let elem = RawXmlElement::from_reader(reader, &e)?;
7498 extra_children.push(PositionedNode::new(
7499 child_idx,
7500 RawXmlNode::Element(elem),
7501 ));
7502 child_idx += 1;
7503 }
7504 #[cfg(not(feature = "extra-children"))]
7505 _ => {
7506 skip_element(reader)?;
7508 }
7509 }
7510 }
7511 Event::Empty(e) => {
7512 match e.local_name().as_ref() {
7513 b"r" => {
7514 f_reference.push(CTRecord::from_xml(reader, &e, true)?);
7515 #[cfg(feature = "extra-children")]
7516 {
7517 child_idx += 1;
7518 }
7519 }
7520 b"extLst" => {
7521 f_extension_list =
7522 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
7523 #[cfg(feature = "extra-children")]
7524 {
7525 child_idx += 1;
7526 }
7527 }
7528 #[cfg(feature = "extra-children")]
7529 _ => {
7530 let elem = RawXmlElement::from_empty(&e);
7532 extra_children.push(PositionedNode::new(
7533 child_idx,
7534 RawXmlNode::Element(elem),
7535 ));
7536 child_idx += 1;
7537 }
7538 #[cfg(not(feature = "extra-children"))]
7539 _ => {}
7540 }
7541 }
7542 Event::End(_) => break,
7543 Event::Eof => break,
7544 _ => {}
7545 }
7546 buf.clear();
7547 }
7548 }
7549
7550 Ok(Self {
7551 count: f_count,
7552 reference: f_reference,
7553 extension_list: f_extension_list,
7554 #[cfg(feature = "extra-attrs")]
7555 extra_attrs,
7556 #[cfg(feature = "extra-children")]
7557 extra_children,
7558 })
7559 }
7560}
7561
7562impl FromXml for CTRecord {
7563 fn from_xml<R: BufRead>(
7564 reader: &mut Reader<R>,
7565 start_tag: &BytesStart,
7566 is_empty: bool,
7567 ) -> Result<Self, ParseError> {
7568 let mut f_m = Vec::new();
7569 let mut f_n = Vec::new();
7570 let mut f_b = Vec::new();
7571 let mut f_e = Vec::new();
7572 let mut f_style_index = Vec::new();
7573 let mut f_d = Vec::new();
7574 let mut f_x = Vec::new();
7575 #[cfg(feature = "extra-children")]
7576 let mut extra_children = Vec::new();
7577 #[cfg(feature = "extra-children")]
7578 let mut child_idx: usize = 0;
7579
7580 if !is_empty {
7582 let mut buf = Vec::new();
7583 loop {
7584 match reader.read_event_into(&mut buf)? {
7585 Event::Start(e) => {
7586 match e.local_name().as_ref() {
7587 b"m" => {
7588 f_m.push(CTMissing::from_xml(reader, &e, false)?);
7589 #[cfg(feature = "extra-children")]
7590 {
7591 child_idx += 1;
7592 }
7593 }
7594 b"n" => {
7595 f_n.push(CTNumber::from_xml(reader, &e, false)?);
7596 #[cfg(feature = "extra-children")]
7597 {
7598 child_idx += 1;
7599 }
7600 }
7601 b"b" => {
7602 f_b.push(CTBoolean::from_xml(reader, &e, false)?);
7603 #[cfg(feature = "extra-children")]
7604 {
7605 child_idx += 1;
7606 }
7607 }
7608 b"e" => {
7609 f_e.push(CTError::from_xml(reader, &e, false)?);
7610 #[cfg(feature = "extra-children")]
7611 {
7612 child_idx += 1;
7613 }
7614 }
7615 b"s" => {
7616 f_style_index.push(CTString::from_xml(reader, &e, false)?);
7617 #[cfg(feature = "extra-children")]
7618 {
7619 child_idx += 1;
7620 }
7621 }
7622 b"d" => {
7623 f_d.push(CTDateTime::from_xml(reader, &e, false)?);
7624 #[cfg(feature = "extra-children")]
7625 {
7626 child_idx += 1;
7627 }
7628 }
7629 b"x" => {
7630 f_x.push(CTIndex::from_xml(reader, &e, false)?);
7631 #[cfg(feature = "extra-children")]
7632 {
7633 child_idx += 1;
7634 }
7635 }
7636 #[cfg(feature = "extra-children")]
7637 _ => {
7638 let elem = RawXmlElement::from_reader(reader, &e)?;
7640 extra_children.push(PositionedNode::new(
7641 child_idx,
7642 RawXmlNode::Element(elem),
7643 ));
7644 child_idx += 1;
7645 }
7646 #[cfg(not(feature = "extra-children"))]
7647 _ => {
7648 skip_element(reader)?;
7650 }
7651 }
7652 }
7653 Event::Empty(e) => {
7654 match e.local_name().as_ref() {
7655 b"m" => {
7656 f_m.push(CTMissing::from_xml(reader, &e, true)?);
7657 #[cfg(feature = "extra-children")]
7658 {
7659 child_idx += 1;
7660 }
7661 }
7662 b"n" => {
7663 f_n.push(CTNumber::from_xml(reader, &e, true)?);
7664 #[cfg(feature = "extra-children")]
7665 {
7666 child_idx += 1;
7667 }
7668 }
7669 b"b" => {
7670 f_b.push(CTBoolean::from_xml(reader, &e, true)?);
7671 #[cfg(feature = "extra-children")]
7672 {
7673 child_idx += 1;
7674 }
7675 }
7676 b"e" => {
7677 f_e.push(CTError::from_xml(reader, &e, true)?);
7678 #[cfg(feature = "extra-children")]
7679 {
7680 child_idx += 1;
7681 }
7682 }
7683 b"s" => {
7684 f_style_index.push(CTString::from_xml(reader, &e, true)?);
7685 #[cfg(feature = "extra-children")]
7686 {
7687 child_idx += 1;
7688 }
7689 }
7690 b"d" => {
7691 f_d.push(CTDateTime::from_xml(reader, &e, true)?);
7692 #[cfg(feature = "extra-children")]
7693 {
7694 child_idx += 1;
7695 }
7696 }
7697 b"x" => {
7698 f_x.push(CTIndex::from_xml(reader, &e, true)?);
7699 #[cfg(feature = "extra-children")]
7700 {
7701 child_idx += 1;
7702 }
7703 }
7704 #[cfg(feature = "extra-children")]
7705 _ => {
7706 let elem = RawXmlElement::from_empty(&e);
7708 extra_children.push(PositionedNode::new(
7709 child_idx,
7710 RawXmlNode::Element(elem),
7711 ));
7712 child_idx += 1;
7713 }
7714 #[cfg(not(feature = "extra-children"))]
7715 _ => {}
7716 }
7717 }
7718 Event::End(_) => break,
7719 Event::Eof => break,
7720 _ => {}
7721 }
7722 buf.clear();
7723 }
7724 }
7725
7726 Ok(Self {
7727 m: f_m,
7728 n: f_n,
7729 b: f_b,
7730 e: f_e,
7731 style_index: f_style_index,
7732 d: f_d,
7733 x: f_x,
7734 #[cfg(feature = "extra-children")]
7735 extra_children,
7736 })
7737 }
7738}
7739
7740impl FromXml for CTPCDKPIs {
7741 fn from_xml<R: BufRead>(
7742 reader: &mut Reader<R>,
7743 start_tag: &BytesStart,
7744 is_empty: bool,
7745 ) -> Result<Self, ParseError> {
7746 let mut f_count = None;
7747 let mut f_kpi = Vec::new();
7748 #[cfg(feature = "extra-attrs")]
7749 let mut extra_attrs = std::collections::HashMap::new();
7750 #[cfg(feature = "extra-children")]
7751 let mut extra_children = Vec::new();
7752 #[cfg(feature = "extra-children")]
7753 let mut child_idx: usize = 0;
7754
7755 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
7757 let val = String::from_utf8_lossy(&attr.value);
7758 match attr.key.local_name().as_ref() {
7759 b"count" => {
7760 f_count = val.parse().ok();
7761 }
7762 #[cfg(feature = "extra-attrs")]
7763 unknown => {
7764 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
7765 extra_attrs.insert(key, val.into_owned());
7766 }
7767 #[cfg(not(feature = "extra-attrs"))]
7768 _ => {}
7769 }
7770 }
7771
7772 if !is_empty {
7774 let mut buf = Vec::new();
7775 loop {
7776 match reader.read_event_into(&mut buf)? {
7777 Event::Start(e) => {
7778 match e.local_name().as_ref() {
7779 b"kpi" => {
7780 f_kpi.push(CTPCDKPI::from_xml(reader, &e, false)?);
7781 #[cfg(feature = "extra-children")]
7782 {
7783 child_idx += 1;
7784 }
7785 }
7786 #[cfg(feature = "extra-children")]
7787 _ => {
7788 let elem = RawXmlElement::from_reader(reader, &e)?;
7790 extra_children.push(PositionedNode::new(
7791 child_idx,
7792 RawXmlNode::Element(elem),
7793 ));
7794 child_idx += 1;
7795 }
7796 #[cfg(not(feature = "extra-children"))]
7797 _ => {
7798 skip_element(reader)?;
7800 }
7801 }
7802 }
7803 Event::Empty(e) => {
7804 match e.local_name().as_ref() {
7805 b"kpi" => {
7806 f_kpi.push(CTPCDKPI::from_xml(reader, &e, true)?);
7807 #[cfg(feature = "extra-children")]
7808 {
7809 child_idx += 1;
7810 }
7811 }
7812 #[cfg(feature = "extra-children")]
7813 _ => {
7814 let elem = RawXmlElement::from_empty(&e);
7816 extra_children.push(PositionedNode::new(
7817 child_idx,
7818 RawXmlNode::Element(elem),
7819 ));
7820 child_idx += 1;
7821 }
7822 #[cfg(not(feature = "extra-children"))]
7823 _ => {}
7824 }
7825 }
7826 Event::End(_) => break,
7827 Event::Eof => break,
7828 _ => {}
7829 }
7830 buf.clear();
7831 }
7832 }
7833
7834 Ok(Self {
7835 count: f_count,
7836 kpi: f_kpi,
7837 #[cfg(feature = "extra-attrs")]
7838 extra_attrs,
7839 #[cfg(feature = "extra-children")]
7840 extra_children,
7841 })
7842 }
7843}
7844
7845impl FromXml for CTPCDKPI {
7846 fn from_xml<R: BufRead>(
7847 reader: &mut Reader<R>,
7848 start_tag: &BytesStart,
7849 is_empty: bool,
7850 ) -> Result<Self, ParseError> {
7851 let mut f_unique_name: Option<XmlString> = None;
7852 let mut f_caption = None;
7853 let mut f_display_folder = None;
7854 let mut f_measure_group = None;
7855 let mut f_parent = None;
7856 let mut f_value: Option<XmlString> = None;
7857 let mut f_goal = None;
7858 let mut f_status = None;
7859 let mut f_trend = None;
7860 let mut f_weight = None;
7861 let mut f_time = None;
7862 #[cfg(feature = "extra-attrs")]
7863 let mut extra_attrs = std::collections::HashMap::new();
7864
7865 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
7867 let val = String::from_utf8_lossy(&attr.value);
7868 match attr.key.local_name().as_ref() {
7869 b"uniqueName" => {
7870 f_unique_name = Some(val.into_owned());
7871 }
7872 b"caption" => {
7873 f_caption = Some(val.into_owned());
7874 }
7875 b"displayFolder" => {
7876 f_display_folder = Some(val.into_owned());
7877 }
7878 b"measureGroup" => {
7879 f_measure_group = Some(val.into_owned());
7880 }
7881 b"parent" => {
7882 f_parent = Some(val.into_owned());
7883 }
7884 b"value" => {
7885 f_value = Some(val.into_owned());
7886 }
7887 b"goal" => {
7888 f_goal = Some(val.into_owned());
7889 }
7890 b"status" => {
7891 f_status = Some(val.into_owned());
7892 }
7893 b"trend" => {
7894 f_trend = Some(val.into_owned());
7895 }
7896 b"weight" => {
7897 f_weight = Some(val.into_owned());
7898 }
7899 b"time" => {
7900 f_time = Some(val.into_owned());
7901 }
7902 #[cfg(feature = "extra-attrs")]
7903 unknown => {
7904 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
7905 extra_attrs.insert(key, val.into_owned());
7906 }
7907 #[cfg(not(feature = "extra-attrs"))]
7908 _ => {}
7909 }
7910 }
7911
7912 if !is_empty {
7913 let mut buf = Vec::new();
7914 loop {
7915 match reader.read_event_into(&mut buf)? {
7916 Event::End(_) => break,
7917 Event::Eof => break,
7918 _ => {}
7919 }
7920 buf.clear();
7921 }
7922 }
7923
7924 Ok(Self {
7925 unique_name: f_unique_name
7926 .ok_or_else(|| ParseError::MissingAttribute("uniqueName".to_string()))?,
7927 caption: f_caption,
7928 display_folder: f_display_folder,
7929 measure_group: f_measure_group,
7930 parent: f_parent,
7931 value: f_value.ok_or_else(|| ParseError::MissingAttribute("value".to_string()))?,
7932 goal: f_goal,
7933 status: f_status,
7934 trend: f_trend,
7935 weight: f_weight,
7936 time: f_time,
7937 #[cfg(feature = "extra-attrs")]
7938 extra_attrs,
7939 })
7940 }
7941}
7942
7943impl FromXml for CTCacheHierarchies {
7944 fn from_xml<R: BufRead>(
7945 reader: &mut Reader<R>,
7946 start_tag: &BytesStart,
7947 is_empty: bool,
7948 ) -> Result<Self, ParseError> {
7949 let mut f_count = None;
7950 let mut f_cache_hierarchy = Vec::new();
7951 #[cfg(feature = "extra-attrs")]
7952 let mut extra_attrs = std::collections::HashMap::new();
7953 #[cfg(feature = "extra-children")]
7954 let mut extra_children = Vec::new();
7955 #[cfg(feature = "extra-children")]
7956 let mut child_idx: usize = 0;
7957
7958 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
7960 let val = String::from_utf8_lossy(&attr.value);
7961 match attr.key.local_name().as_ref() {
7962 b"count" => {
7963 f_count = val.parse().ok();
7964 }
7965 #[cfg(feature = "extra-attrs")]
7966 unknown => {
7967 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
7968 extra_attrs.insert(key, val.into_owned());
7969 }
7970 #[cfg(not(feature = "extra-attrs"))]
7971 _ => {}
7972 }
7973 }
7974
7975 if !is_empty {
7977 let mut buf = Vec::new();
7978 loop {
7979 match reader.read_event_into(&mut buf)? {
7980 Event::Start(e) => {
7981 match e.local_name().as_ref() {
7982 b"cacheHierarchy" => {
7983 f_cache_hierarchy
7984 .push(CTCacheHierarchy::from_xml(reader, &e, false)?);
7985 #[cfg(feature = "extra-children")]
7986 {
7987 child_idx += 1;
7988 }
7989 }
7990 #[cfg(feature = "extra-children")]
7991 _ => {
7992 let elem = RawXmlElement::from_reader(reader, &e)?;
7994 extra_children.push(PositionedNode::new(
7995 child_idx,
7996 RawXmlNode::Element(elem),
7997 ));
7998 child_idx += 1;
7999 }
8000 #[cfg(not(feature = "extra-children"))]
8001 _ => {
8002 skip_element(reader)?;
8004 }
8005 }
8006 }
8007 Event::Empty(e) => {
8008 match e.local_name().as_ref() {
8009 b"cacheHierarchy" => {
8010 f_cache_hierarchy
8011 .push(CTCacheHierarchy::from_xml(reader, &e, true)?);
8012 #[cfg(feature = "extra-children")]
8013 {
8014 child_idx += 1;
8015 }
8016 }
8017 #[cfg(feature = "extra-children")]
8018 _ => {
8019 let elem = RawXmlElement::from_empty(&e);
8021 extra_children.push(PositionedNode::new(
8022 child_idx,
8023 RawXmlNode::Element(elem),
8024 ));
8025 child_idx += 1;
8026 }
8027 #[cfg(not(feature = "extra-children"))]
8028 _ => {}
8029 }
8030 }
8031 Event::End(_) => break,
8032 Event::Eof => break,
8033 _ => {}
8034 }
8035 buf.clear();
8036 }
8037 }
8038
8039 Ok(Self {
8040 count: f_count,
8041 cache_hierarchy: f_cache_hierarchy,
8042 #[cfg(feature = "extra-attrs")]
8043 extra_attrs,
8044 #[cfg(feature = "extra-children")]
8045 extra_children,
8046 })
8047 }
8048}
8049
8050impl FromXml for CTCacheHierarchy {
8051 fn from_xml<R: BufRead>(
8052 reader: &mut Reader<R>,
8053 start_tag: &BytesStart,
8054 is_empty: bool,
8055 ) -> Result<Self, ParseError> {
8056 let mut f_unique_name: Option<XmlString> = None;
8057 let mut f_caption = None;
8058 let mut f_measure = None;
8059 let mut f_set = None;
8060 let mut f_parent_set = None;
8061 let mut f_icon_set = None;
8062 let mut f_attribute = None;
8063 let mut f_time = None;
8064 let mut f_key_attribute = None;
8065 let mut f_default_member_unique_name = None;
8066 let mut f_all_unique_name = None;
8067 let mut f_all_caption = None;
8068 let mut f_dimension_unique_name = None;
8069 let mut f_display_folder = None;
8070 let mut f_measure_group = None;
8071 let mut f_measures = None;
8072 let mut f_count: Option<u32> = None;
8073 let mut f_one_field = None;
8074 let mut f_member_value_datatype = None;
8075 let mut f_unbalanced = None;
8076 let mut f_unbalanced_group = None;
8077 let mut f_hidden = None;
8078 let mut f_fields_usage = None;
8079 let mut f_group_levels = None;
8080 let mut f_extension_list = None;
8081 #[cfg(feature = "extra-attrs")]
8082 let mut extra_attrs = std::collections::HashMap::new();
8083 #[cfg(feature = "extra-children")]
8084 let mut extra_children = Vec::new();
8085 #[cfg(feature = "extra-children")]
8086 let mut child_idx: usize = 0;
8087
8088 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
8090 let val = String::from_utf8_lossy(&attr.value);
8091 match attr.key.local_name().as_ref() {
8092 b"uniqueName" => {
8093 f_unique_name = Some(val.into_owned());
8094 }
8095 b"caption" => {
8096 f_caption = Some(val.into_owned());
8097 }
8098 b"measure" => {
8099 f_measure = Some(val == "true" || val == "1");
8100 }
8101 b"set" => {
8102 f_set = Some(val == "true" || val == "1");
8103 }
8104 b"parentSet" => {
8105 f_parent_set = val.parse().ok();
8106 }
8107 b"iconSet" => {
8108 f_icon_set = val.parse().ok();
8109 }
8110 b"attribute" => {
8111 f_attribute = Some(val == "true" || val == "1");
8112 }
8113 b"time" => {
8114 f_time = Some(val == "true" || val == "1");
8115 }
8116 b"keyAttribute" => {
8117 f_key_attribute = Some(val == "true" || val == "1");
8118 }
8119 b"defaultMemberUniqueName" => {
8120 f_default_member_unique_name = Some(val.into_owned());
8121 }
8122 b"allUniqueName" => {
8123 f_all_unique_name = Some(val.into_owned());
8124 }
8125 b"allCaption" => {
8126 f_all_caption = Some(val.into_owned());
8127 }
8128 b"dimensionUniqueName" => {
8129 f_dimension_unique_name = Some(val.into_owned());
8130 }
8131 b"displayFolder" => {
8132 f_display_folder = Some(val.into_owned());
8133 }
8134 b"measureGroup" => {
8135 f_measure_group = Some(val.into_owned());
8136 }
8137 b"measures" => {
8138 f_measures = Some(val == "true" || val == "1");
8139 }
8140 b"count" => {
8141 f_count = val.parse().ok();
8142 }
8143 b"oneField" => {
8144 f_one_field = Some(val == "true" || val == "1");
8145 }
8146 b"memberValueDatatype" => {
8147 f_member_value_datatype = val.parse().ok();
8148 }
8149 b"unbalanced" => {
8150 f_unbalanced = Some(val == "true" || val == "1");
8151 }
8152 b"unbalancedGroup" => {
8153 f_unbalanced_group = Some(val == "true" || val == "1");
8154 }
8155 b"hidden" => {
8156 f_hidden = Some(val == "true" || val == "1");
8157 }
8158 #[cfg(feature = "extra-attrs")]
8159 unknown => {
8160 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
8161 extra_attrs.insert(key, val.into_owned());
8162 }
8163 #[cfg(not(feature = "extra-attrs"))]
8164 _ => {}
8165 }
8166 }
8167
8168 if !is_empty {
8170 let mut buf = Vec::new();
8171 loop {
8172 match reader.read_event_into(&mut buf)? {
8173 Event::Start(e) => {
8174 match e.local_name().as_ref() {
8175 b"fieldsUsage" => {
8176 f_fields_usage =
8177 Some(Box::new(CTFieldsUsage::from_xml(reader, &e, false)?));
8178 #[cfg(feature = "extra-children")]
8179 {
8180 child_idx += 1;
8181 }
8182 }
8183 b"groupLevels" => {
8184 f_group_levels =
8185 Some(Box::new(CTGroupLevels::from_xml(reader, &e, false)?));
8186 #[cfg(feature = "extra-children")]
8187 {
8188 child_idx += 1;
8189 }
8190 }
8191 b"extLst" => {
8192 f_extension_list =
8193 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
8194 #[cfg(feature = "extra-children")]
8195 {
8196 child_idx += 1;
8197 }
8198 }
8199 #[cfg(feature = "extra-children")]
8200 _ => {
8201 let elem = RawXmlElement::from_reader(reader, &e)?;
8203 extra_children.push(PositionedNode::new(
8204 child_idx,
8205 RawXmlNode::Element(elem),
8206 ));
8207 child_idx += 1;
8208 }
8209 #[cfg(not(feature = "extra-children"))]
8210 _ => {
8211 skip_element(reader)?;
8213 }
8214 }
8215 }
8216 Event::Empty(e) => {
8217 match e.local_name().as_ref() {
8218 b"fieldsUsage" => {
8219 f_fields_usage =
8220 Some(Box::new(CTFieldsUsage::from_xml(reader, &e, true)?));
8221 #[cfg(feature = "extra-children")]
8222 {
8223 child_idx += 1;
8224 }
8225 }
8226 b"groupLevels" => {
8227 f_group_levels =
8228 Some(Box::new(CTGroupLevels::from_xml(reader, &e, true)?));
8229 #[cfg(feature = "extra-children")]
8230 {
8231 child_idx += 1;
8232 }
8233 }
8234 b"extLst" => {
8235 f_extension_list =
8236 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
8237 #[cfg(feature = "extra-children")]
8238 {
8239 child_idx += 1;
8240 }
8241 }
8242 #[cfg(feature = "extra-children")]
8243 _ => {
8244 let elem = RawXmlElement::from_empty(&e);
8246 extra_children.push(PositionedNode::new(
8247 child_idx,
8248 RawXmlNode::Element(elem),
8249 ));
8250 child_idx += 1;
8251 }
8252 #[cfg(not(feature = "extra-children"))]
8253 _ => {}
8254 }
8255 }
8256 Event::End(_) => break,
8257 Event::Eof => break,
8258 _ => {}
8259 }
8260 buf.clear();
8261 }
8262 }
8263
8264 Ok(Self {
8265 unique_name: f_unique_name
8266 .ok_or_else(|| ParseError::MissingAttribute("uniqueName".to_string()))?,
8267 caption: f_caption,
8268 measure: f_measure,
8269 set: f_set,
8270 parent_set: f_parent_set,
8271 icon_set: f_icon_set,
8272 attribute: f_attribute,
8273 time: f_time,
8274 key_attribute: f_key_attribute,
8275 default_member_unique_name: f_default_member_unique_name,
8276 all_unique_name: f_all_unique_name,
8277 all_caption: f_all_caption,
8278 dimension_unique_name: f_dimension_unique_name,
8279 display_folder: f_display_folder,
8280 measure_group: f_measure_group,
8281 measures: f_measures,
8282 count: f_count.ok_or_else(|| ParseError::MissingAttribute("count".to_string()))?,
8283 one_field: f_one_field,
8284 member_value_datatype: f_member_value_datatype,
8285 unbalanced: f_unbalanced,
8286 unbalanced_group: f_unbalanced_group,
8287 hidden: f_hidden,
8288 fields_usage: f_fields_usage,
8289 group_levels: f_group_levels,
8290 extension_list: f_extension_list,
8291 #[cfg(feature = "extra-attrs")]
8292 extra_attrs,
8293 #[cfg(feature = "extra-children")]
8294 extra_children,
8295 })
8296 }
8297}
8298
8299impl FromXml for CTFieldsUsage {
8300 fn from_xml<R: BufRead>(
8301 reader: &mut Reader<R>,
8302 start_tag: &BytesStart,
8303 is_empty: bool,
8304 ) -> Result<Self, ParseError> {
8305 let mut f_count = None;
8306 let mut f_field_usage = Vec::new();
8307 #[cfg(feature = "extra-attrs")]
8308 let mut extra_attrs = std::collections::HashMap::new();
8309 #[cfg(feature = "extra-children")]
8310 let mut extra_children = Vec::new();
8311 #[cfg(feature = "extra-children")]
8312 let mut child_idx: usize = 0;
8313
8314 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
8316 let val = String::from_utf8_lossy(&attr.value);
8317 match attr.key.local_name().as_ref() {
8318 b"count" => {
8319 f_count = val.parse().ok();
8320 }
8321 #[cfg(feature = "extra-attrs")]
8322 unknown => {
8323 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
8324 extra_attrs.insert(key, val.into_owned());
8325 }
8326 #[cfg(not(feature = "extra-attrs"))]
8327 _ => {}
8328 }
8329 }
8330
8331 if !is_empty {
8333 let mut buf = Vec::new();
8334 loop {
8335 match reader.read_event_into(&mut buf)? {
8336 Event::Start(e) => {
8337 match e.local_name().as_ref() {
8338 b"fieldUsage" => {
8339 f_field_usage.push(CTFieldUsage::from_xml(reader, &e, false)?);
8340 #[cfg(feature = "extra-children")]
8341 {
8342 child_idx += 1;
8343 }
8344 }
8345 #[cfg(feature = "extra-children")]
8346 _ => {
8347 let elem = RawXmlElement::from_reader(reader, &e)?;
8349 extra_children.push(PositionedNode::new(
8350 child_idx,
8351 RawXmlNode::Element(elem),
8352 ));
8353 child_idx += 1;
8354 }
8355 #[cfg(not(feature = "extra-children"))]
8356 _ => {
8357 skip_element(reader)?;
8359 }
8360 }
8361 }
8362 Event::Empty(e) => {
8363 match e.local_name().as_ref() {
8364 b"fieldUsage" => {
8365 f_field_usage.push(CTFieldUsage::from_xml(reader, &e, true)?);
8366 #[cfg(feature = "extra-children")]
8367 {
8368 child_idx += 1;
8369 }
8370 }
8371 #[cfg(feature = "extra-children")]
8372 _ => {
8373 let elem = RawXmlElement::from_empty(&e);
8375 extra_children.push(PositionedNode::new(
8376 child_idx,
8377 RawXmlNode::Element(elem),
8378 ));
8379 child_idx += 1;
8380 }
8381 #[cfg(not(feature = "extra-children"))]
8382 _ => {}
8383 }
8384 }
8385 Event::End(_) => break,
8386 Event::Eof => break,
8387 _ => {}
8388 }
8389 buf.clear();
8390 }
8391 }
8392
8393 Ok(Self {
8394 count: f_count,
8395 field_usage: f_field_usage,
8396 #[cfg(feature = "extra-attrs")]
8397 extra_attrs,
8398 #[cfg(feature = "extra-children")]
8399 extra_children,
8400 })
8401 }
8402}
8403
8404impl FromXml for CTFieldUsage {
8405 fn from_xml<R: BufRead>(
8406 reader: &mut Reader<R>,
8407 start_tag: &BytesStart,
8408 is_empty: bool,
8409 ) -> Result<Self, ParseError> {
8410 let mut f_x: Option<i32> = None;
8411 #[cfg(feature = "extra-attrs")]
8412 let mut extra_attrs = std::collections::HashMap::new();
8413
8414 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
8416 let val = String::from_utf8_lossy(&attr.value);
8417 match attr.key.local_name().as_ref() {
8418 b"x" => {
8419 f_x = val.parse().ok();
8420 }
8421 #[cfg(feature = "extra-attrs")]
8422 unknown => {
8423 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
8424 extra_attrs.insert(key, val.into_owned());
8425 }
8426 #[cfg(not(feature = "extra-attrs"))]
8427 _ => {}
8428 }
8429 }
8430
8431 if !is_empty {
8432 let mut buf = Vec::new();
8433 loop {
8434 match reader.read_event_into(&mut buf)? {
8435 Event::End(_) => break,
8436 Event::Eof => break,
8437 _ => {}
8438 }
8439 buf.clear();
8440 }
8441 }
8442
8443 Ok(Self {
8444 x: f_x.ok_or_else(|| ParseError::MissingAttribute("x".to_string()))?,
8445 #[cfg(feature = "extra-attrs")]
8446 extra_attrs,
8447 })
8448 }
8449}
8450
8451impl FromXml for CTGroupLevels {
8452 fn from_xml<R: BufRead>(
8453 reader: &mut Reader<R>,
8454 start_tag: &BytesStart,
8455 is_empty: bool,
8456 ) -> Result<Self, ParseError> {
8457 let mut f_count = None;
8458 let mut f_group_level = Vec::new();
8459 #[cfg(feature = "extra-attrs")]
8460 let mut extra_attrs = std::collections::HashMap::new();
8461 #[cfg(feature = "extra-children")]
8462 let mut extra_children = Vec::new();
8463 #[cfg(feature = "extra-children")]
8464 let mut child_idx: usize = 0;
8465
8466 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
8468 let val = String::from_utf8_lossy(&attr.value);
8469 match attr.key.local_name().as_ref() {
8470 b"count" => {
8471 f_count = val.parse().ok();
8472 }
8473 #[cfg(feature = "extra-attrs")]
8474 unknown => {
8475 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
8476 extra_attrs.insert(key, val.into_owned());
8477 }
8478 #[cfg(not(feature = "extra-attrs"))]
8479 _ => {}
8480 }
8481 }
8482
8483 if !is_empty {
8485 let mut buf = Vec::new();
8486 loop {
8487 match reader.read_event_into(&mut buf)? {
8488 Event::Start(e) => {
8489 match e.local_name().as_ref() {
8490 b"groupLevel" => {
8491 f_group_level.push(CTGroupLevel::from_xml(reader, &e, false)?);
8492 #[cfg(feature = "extra-children")]
8493 {
8494 child_idx += 1;
8495 }
8496 }
8497 #[cfg(feature = "extra-children")]
8498 _ => {
8499 let elem = RawXmlElement::from_reader(reader, &e)?;
8501 extra_children.push(PositionedNode::new(
8502 child_idx,
8503 RawXmlNode::Element(elem),
8504 ));
8505 child_idx += 1;
8506 }
8507 #[cfg(not(feature = "extra-children"))]
8508 _ => {
8509 skip_element(reader)?;
8511 }
8512 }
8513 }
8514 Event::Empty(e) => {
8515 match e.local_name().as_ref() {
8516 b"groupLevel" => {
8517 f_group_level.push(CTGroupLevel::from_xml(reader, &e, true)?);
8518 #[cfg(feature = "extra-children")]
8519 {
8520 child_idx += 1;
8521 }
8522 }
8523 #[cfg(feature = "extra-children")]
8524 _ => {
8525 let elem = RawXmlElement::from_empty(&e);
8527 extra_children.push(PositionedNode::new(
8528 child_idx,
8529 RawXmlNode::Element(elem),
8530 ));
8531 child_idx += 1;
8532 }
8533 #[cfg(not(feature = "extra-children"))]
8534 _ => {}
8535 }
8536 }
8537 Event::End(_) => break,
8538 Event::Eof => break,
8539 _ => {}
8540 }
8541 buf.clear();
8542 }
8543 }
8544
8545 Ok(Self {
8546 count: f_count,
8547 group_level: f_group_level,
8548 #[cfg(feature = "extra-attrs")]
8549 extra_attrs,
8550 #[cfg(feature = "extra-children")]
8551 extra_children,
8552 })
8553 }
8554}
8555
8556impl FromXml for CTGroupLevel {
8557 fn from_xml<R: BufRead>(
8558 reader: &mut Reader<R>,
8559 start_tag: &BytesStart,
8560 is_empty: bool,
8561 ) -> Result<Self, ParseError> {
8562 let mut f_unique_name: Option<XmlString> = None;
8563 let mut f_caption: Option<XmlString> = None;
8564 let mut f_user = None;
8565 let mut f_custom_roll_up = None;
8566 let mut f_groups = None;
8567 let mut f_extension_list = None;
8568 #[cfg(feature = "extra-attrs")]
8569 let mut extra_attrs = std::collections::HashMap::new();
8570 #[cfg(feature = "extra-children")]
8571 let mut extra_children = Vec::new();
8572 #[cfg(feature = "extra-children")]
8573 let mut child_idx: usize = 0;
8574
8575 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
8577 let val = String::from_utf8_lossy(&attr.value);
8578 match attr.key.local_name().as_ref() {
8579 b"uniqueName" => {
8580 f_unique_name = Some(val.into_owned());
8581 }
8582 b"caption" => {
8583 f_caption = Some(val.into_owned());
8584 }
8585 b"user" => {
8586 f_user = Some(val == "true" || val == "1");
8587 }
8588 b"customRollUp" => {
8589 f_custom_roll_up = Some(val == "true" || val == "1");
8590 }
8591 #[cfg(feature = "extra-attrs")]
8592 unknown => {
8593 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
8594 extra_attrs.insert(key, val.into_owned());
8595 }
8596 #[cfg(not(feature = "extra-attrs"))]
8597 _ => {}
8598 }
8599 }
8600
8601 if !is_empty {
8603 let mut buf = Vec::new();
8604 loop {
8605 match reader.read_event_into(&mut buf)? {
8606 Event::Start(e) => {
8607 match e.local_name().as_ref() {
8608 b"groups" => {
8609 f_groups = Some(Box::new(CTGroups::from_xml(reader, &e, false)?));
8610 #[cfg(feature = "extra-children")]
8611 {
8612 child_idx += 1;
8613 }
8614 }
8615 b"extLst" => {
8616 f_extension_list =
8617 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
8618 #[cfg(feature = "extra-children")]
8619 {
8620 child_idx += 1;
8621 }
8622 }
8623 #[cfg(feature = "extra-children")]
8624 _ => {
8625 let elem = RawXmlElement::from_reader(reader, &e)?;
8627 extra_children.push(PositionedNode::new(
8628 child_idx,
8629 RawXmlNode::Element(elem),
8630 ));
8631 child_idx += 1;
8632 }
8633 #[cfg(not(feature = "extra-children"))]
8634 _ => {
8635 skip_element(reader)?;
8637 }
8638 }
8639 }
8640 Event::Empty(e) => {
8641 match e.local_name().as_ref() {
8642 b"groups" => {
8643 f_groups = Some(Box::new(CTGroups::from_xml(reader, &e, true)?));
8644 #[cfg(feature = "extra-children")]
8645 {
8646 child_idx += 1;
8647 }
8648 }
8649 b"extLst" => {
8650 f_extension_list =
8651 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
8652 #[cfg(feature = "extra-children")]
8653 {
8654 child_idx += 1;
8655 }
8656 }
8657 #[cfg(feature = "extra-children")]
8658 _ => {
8659 let elem = RawXmlElement::from_empty(&e);
8661 extra_children.push(PositionedNode::new(
8662 child_idx,
8663 RawXmlNode::Element(elem),
8664 ));
8665 child_idx += 1;
8666 }
8667 #[cfg(not(feature = "extra-children"))]
8668 _ => {}
8669 }
8670 }
8671 Event::End(_) => break,
8672 Event::Eof => break,
8673 _ => {}
8674 }
8675 buf.clear();
8676 }
8677 }
8678
8679 Ok(Self {
8680 unique_name: f_unique_name
8681 .ok_or_else(|| ParseError::MissingAttribute("uniqueName".to_string()))?,
8682 caption: f_caption
8683 .ok_or_else(|| ParseError::MissingAttribute("caption".to_string()))?,
8684 user: f_user,
8685 custom_roll_up: f_custom_roll_up,
8686 groups: f_groups,
8687 extension_list: f_extension_list,
8688 #[cfg(feature = "extra-attrs")]
8689 extra_attrs,
8690 #[cfg(feature = "extra-children")]
8691 extra_children,
8692 })
8693 }
8694}
8695
8696impl FromXml for CTGroups {
8697 fn from_xml<R: BufRead>(
8698 reader: &mut Reader<R>,
8699 start_tag: &BytesStart,
8700 is_empty: bool,
8701 ) -> Result<Self, ParseError> {
8702 let mut f_count = None;
8703 let mut f_group = Vec::new();
8704 #[cfg(feature = "extra-attrs")]
8705 let mut extra_attrs = std::collections::HashMap::new();
8706 #[cfg(feature = "extra-children")]
8707 let mut extra_children = Vec::new();
8708 #[cfg(feature = "extra-children")]
8709 let mut child_idx: usize = 0;
8710
8711 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
8713 let val = String::from_utf8_lossy(&attr.value);
8714 match attr.key.local_name().as_ref() {
8715 b"count" => {
8716 f_count = val.parse().ok();
8717 }
8718 #[cfg(feature = "extra-attrs")]
8719 unknown => {
8720 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
8721 extra_attrs.insert(key, val.into_owned());
8722 }
8723 #[cfg(not(feature = "extra-attrs"))]
8724 _ => {}
8725 }
8726 }
8727
8728 if !is_empty {
8730 let mut buf = Vec::new();
8731 loop {
8732 match reader.read_event_into(&mut buf)? {
8733 Event::Start(e) => {
8734 match e.local_name().as_ref() {
8735 b"group" => {
8736 f_group.push(CTLevelGroup::from_xml(reader, &e, false)?);
8737 #[cfg(feature = "extra-children")]
8738 {
8739 child_idx += 1;
8740 }
8741 }
8742 #[cfg(feature = "extra-children")]
8743 _ => {
8744 let elem = RawXmlElement::from_reader(reader, &e)?;
8746 extra_children.push(PositionedNode::new(
8747 child_idx,
8748 RawXmlNode::Element(elem),
8749 ));
8750 child_idx += 1;
8751 }
8752 #[cfg(not(feature = "extra-children"))]
8753 _ => {
8754 skip_element(reader)?;
8756 }
8757 }
8758 }
8759 Event::Empty(e) => {
8760 match e.local_name().as_ref() {
8761 b"group" => {
8762 f_group.push(CTLevelGroup::from_xml(reader, &e, true)?);
8763 #[cfg(feature = "extra-children")]
8764 {
8765 child_idx += 1;
8766 }
8767 }
8768 #[cfg(feature = "extra-children")]
8769 _ => {
8770 let elem = RawXmlElement::from_empty(&e);
8772 extra_children.push(PositionedNode::new(
8773 child_idx,
8774 RawXmlNode::Element(elem),
8775 ));
8776 child_idx += 1;
8777 }
8778 #[cfg(not(feature = "extra-children"))]
8779 _ => {}
8780 }
8781 }
8782 Event::End(_) => break,
8783 Event::Eof => break,
8784 _ => {}
8785 }
8786 buf.clear();
8787 }
8788 }
8789
8790 Ok(Self {
8791 count: f_count,
8792 group: f_group,
8793 #[cfg(feature = "extra-attrs")]
8794 extra_attrs,
8795 #[cfg(feature = "extra-children")]
8796 extra_children,
8797 })
8798 }
8799}
8800
8801impl FromXml for CTLevelGroup {
8802 fn from_xml<R: BufRead>(
8803 reader: &mut Reader<R>,
8804 start_tag: &BytesStart,
8805 is_empty: bool,
8806 ) -> Result<Self, ParseError> {
8807 let mut f_name: Option<XmlString> = None;
8808 let mut f_unique_name: Option<XmlString> = None;
8809 let mut f_caption: Option<XmlString> = None;
8810 let mut f_unique_parent = None;
8811 let mut f_id = None;
8812 let mut f_group_members: Option<Box<CTGroupMembers>> = None;
8813 #[cfg(feature = "extra-attrs")]
8814 let mut extra_attrs = std::collections::HashMap::new();
8815 #[cfg(feature = "extra-children")]
8816 let mut extra_children = Vec::new();
8817 #[cfg(feature = "extra-children")]
8818 let mut child_idx: usize = 0;
8819
8820 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
8822 let val = String::from_utf8_lossy(&attr.value);
8823 match attr.key.local_name().as_ref() {
8824 b"name" => {
8825 f_name = Some(val.into_owned());
8826 }
8827 b"uniqueName" => {
8828 f_unique_name = Some(val.into_owned());
8829 }
8830 b"caption" => {
8831 f_caption = Some(val.into_owned());
8832 }
8833 b"uniqueParent" => {
8834 f_unique_parent = Some(val.into_owned());
8835 }
8836 b"id" => {
8837 f_id = val.parse().ok();
8838 }
8839 #[cfg(feature = "extra-attrs")]
8840 unknown => {
8841 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
8842 extra_attrs.insert(key, val.into_owned());
8843 }
8844 #[cfg(not(feature = "extra-attrs"))]
8845 _ => {}
8846 }
8847 }
8848
8849 if !is_empty {
8851 let mut buf = Vec::new();
8852 loop {
8853 match reader.read_event_into(&mut buf)? {
8854 Event::Start(e) => {
8855 match e.local_name().as_ref() {
8856 b"groupMembers" => {
8857 f_group_members =
8858 Some(Box::new(CTGroupMembers::from_xml(reader, &e, false)?));
8859 #[cfg(feature = "extra-children")]
8860 {
8861 child_idx += 1;
8862 }
8863 }
8864 #[cfg(feature = "extra-children")]
8865 _ => {
8866 let elem = RawXmlElement::from_reader(reader, &e)?;
8868 extra_children.push(PositionedNode::new(
8869 child_idx,
8870 RawXmlNode::Element(elem),
8871 ));
8872 child_idx += 1;
8873 }
8874 #[cfg(not(feature = "extra-children"))]
8875 _ => {
8876 skip_element(reader)?;
8878 }
8879 }
8880 }
8881 Event::Empty(e) => {
8882 match e.local_name().as_ref() {
8883 b"groupMembers" => {
8884 f_group_members =
8885 Some(Box::new(CTGroupMembers::from_xml(reader, &e, true)?));
8886 #[cfg(feature = "extra-children")]
8887 {
8888 child_idx += 1;
8889 }
8890 }
8891 #[cfg(feature = "extra-children")]
8892 _ => {
8893 let elem = RawXmlElement::from_empty(&e);
8895 extra_children.push(PositionedNode::new(
8896 child_idx,
8897 RawXmlNode::Element(elem),
8898 ));
8899 child_idx += 1;
8900 }
8901 #[cfg(not(feature = "extra-children"))]
8902 _ => {}
8903 }
8904 }
8905 Event::End(_) => break,
8906 Event::Eof => break,
8907 _ => {}
8908 }
8909 buf.clear();
8910 }
8911 }
8912
8913 Ok(Self {
8914 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
8915 unique_name: f_unique_name
8916 .ok_or_else(|| ParseError::MissingAttribute("uniqueName".to_string()))?,
8917 caption: f_caption
8918 .ok_or_else(|| ParseError::MissingAttribute("caption".to_string()))?,
8919 unique_parent: f_unique_parent,
8920 id: f_id,
8921 group_members: f_group_members
8922 .ok_or_else(|| ParseError::MissingAttribute("groupMembers".to_string()))?,
8923 #[cfg(feature = "extra-attrs")]
8924 extra_attrs,
8925 #[cfg(feature = "extra-children")]
8926 extra_children,
8927 })
8928 }
8929}
8930
8931impl FromXml for CTGroupMembers {
8932 fn from_xml<R: BufRead>(
8933 reader: &mut Reader<R>,
8934 start_tag: &BytesStart,
8935 is_empty: bool,
8936 ) -> Result<Self, ParseError> {
8937 let mut f_count = None;
8938 let mut f_group_member = Vec::new();
8939 #[cfg(feature = "extra-attrs")]
8940 let mut extra_attrs = std::collections::HashMap::new();
8941 #[cfg(feature = "extra-children")]
8942 let mut extra_children = Vec::new();
8943 #[cfg(feature = "extra-children")]
8944 let mut child_idx: usize = 0;
8945
8946 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
8948 let val = String::from_utf8_lossy(&attr.value);
8949 match attr.key.local_name().as_ref() {
8950 b"count" => {
8951 f_count = val.parse().ok();
8952 }
8953 #[cfg(feature = "extra-attrs")]
8954 unknown => {
8955 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
8956 extra_attrs.insert(key, val.into_owned());
8957 }
8958 #[cfg(not(feature = "extra-attrs"))]
8959 _ => {}
8960 }
8961 }
8962
8963 if !is_empty {
8965 let mut buf = Vec::new();
8966 loop {
8967 match reader.read_event_into(&mut buf)? {
8968 Event::Start(e) => {
8969 match e.local_name().as_ref() {
8970 b"groupMember" => {
8971 f_group_member.push(CTGroupMember::from_xml(reader, &e, false)?);
8972 #[cfg(feature = "extra-children")]
8973 {
8974 child_idx += 1;
8975 }
8976 }
8977 #[cfg(feature = "extra-children")]
8978 _ => {
8979 let elem = RawXmlElement::from_reader(reader, &e)?;
8981 extra_children.push(PositionedNode::new(
8982 child_idx,
8983 RawXmlNode::Element(elem),
8984 ));
8985 child_idx += 1;
8986 }
8987 #[cfg(not(feature = "extra-children"))]
8988 _ => {
8989 skip_element(reader)?;
8991 }
8992 }
8993 }
8994 Event::Empty(e) => {
8995 match e.local_name().as_ref() {
8996 b"groupMember" => {
8997 f_group_member.push(CTGroupMember::from_xml(reader, &e, true)?);
8998 #[cfg(feature = "extra-children")]
8999 {
9000 child_idx += 1;
9001 }
9002 }
9003 #[cfg(feature = "extra-children")]
9004 _ => {
9005 let elem = RawXmlElement::from_empty(&e);
9007 extra_children.push(PositionedNode::new(
9008 child_idx,
9009 RawXmlNode::Element(elem),
9010 ));
9011 child_idx += 1;
9012 }
9013 #[cfg(not(feature = "extra-children"))]
9014 _ => {}
9015 }
9016 }
9017 Event::End(_) => break,
9018 Event::Eof => break,
9019 _ => {}
9020 }
9021 buf.clear();
9022 }
9023 }
9024
9025 Ok(Self {
9026 count: f_count,
9027 group_member: f_group_member,
9028 #[cfg(feature = "extra-attrs")]
9029 extra_attrs,
9030 #[cfg(feature = "extra-children")]
9031 extra_children,
9032 })
9033 }
9034}
9035
9036impl FromXml for CTGroupMember {
9037 fn from_xml<R: BufRead>(
9038 reader: &mut Reader<R>,
9039 start_tag: &BytesStart,
9040 is_empty: bool,
9041 ) -> Result<Self, ParseError> {
9042 let mut f_unique_name: Option<XmlString> = None;
9043 let mut f_group = None;
9044 #[cfg(feature = "extra-attrs")]
9045 let mut extra_attrs = std::collections::HashMap::new();
9046
9047 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
9049 let val = String::from_utf8_lossy(&attr.value);
9050 match attr.key.local_name().as_ref() {
9051 b"uniqueName" => {
9052 f_unique_name = Some(val.into_owned());
9053 }
9054 b"group" => {
9055 f_group = Some(val == "true" || val == "1");
9056 }
9057 #[cfg(feature = "extra-attrs")]
9058 unknown => {
9059 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
9060 extra_attrs.insert(key, val.into_owned());
9061 }
9062 #[cfg(not(feature = "extra-attrs"))]
9063 _ => {}
9064 }
9065 }
9066
9067 if !is_empty {
9068 let mut buf = Vec::new();
9069 loop {
9070 match reader.read_event_into(&mut buf)? {
9071 Event::End(_) => break,
9072 Event::Eof => break,
9073 _ => {}
9074 }
9075 buf.clear();
9076 }
9077 }
9078
9079 Ok(Self {
9080 unique_name: f_unique_name
9081 .ok_or_else(|| ParseError::MissingAttribute("uniqueName".to_string()))?,
9082 group: f_group,
9083 #[cfg(feature = "extra-attrs")]
9084 extra_attrs,
9085 })
9086 }
9087}
9088
9089impl FromXml for CTTupleCache {
9090 fn from_xml<R: BufRead>(
9091 reader: &mut Reader<R>,
9092 start_tag: &BytesStart,
9093 is_empty: bool,
9094 ) -> Result<Self, ParseError> {
9095 let mut f_entries = None;
9096 let mut f_sets = None;
9097 let mut f_query_cache = None;
9098 let mut f_server_formats = None;
9099 let mut f_extension_list = None;
9100 #[cfg(feature = "extra-children")]
9101 let mut extra_children = Vec::new();
9102 #[cfg(feature = "extra-children")]
9103 let mut child_idx: usize = 0;
9104
9105 if !is_empty {
9107 let mut buf = Vec::new();
9108 loop {
9109 match reader.read_event_into(&mut buf)? {
9110 Event::Start(e) => {
9111 match e.local_name().as_ref() {
9112 b"entries" => {
9113 f_entries =
9114 Some(Box::new(CTPCDSDTCEntries::from_xml(reader, &e, false)?));
9115 #[cfg(feature = "extra-children")]
9116 {
9117 child_idx += 1;
9118 }
9119 }
9120 b"sets" => {
9121 f_sets = Some(Box::new(CTSets::from_xml(reader, &e, false)?));
9122 #[cfg(feature = "extra-children")]
9123 {
9124 child_idx += 1;
9125 }
9126 }
9127 b"queryCache" => {
9128 f_query_cache =
9129 Some(Box::new(CTQueryCache::from_xml(reader, &e, false)?));
9130 #[cfg(feature = "extra-children")]
9131 {
9132 child_idx += 1;
9133 }
9134 }
9135 b"serverFormats" => {
9136 f_server_formats =
9137 Some(Box::new(CTServerFormats::from_xml(reader, &e, false)?));
9138 #[cfg(feature = "extra-children")]
9139 {
9140 child_idx += 1;
9141 }
9142 }
9143 b"extLst" => {
9144 f_extension_list =
9145 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
9146 #[cfg(feature = "extra-children")]
9147 {
9148 child_idx += 1;
9149 }
9150 }
9151 #[cfg(feature = "extra-children")]
9152 _ => {
9153 let elem = RawXmlElement::from_reader(reader, &e)?;
9155 extra_children.push(PositionedNode::new(
9156 child_idx,
9157 RawXmlNode::Element(elem),
9158 ));
9159 child_idx += 1;
9160 }
9161 #[cfg(not(feature = "extra-children"))]
9162 _ => {
9163 skip_element(reader)?;
9165 }
9166 }
9167 }
9168 Event::Empty(e) => {
9169 match e.local_name().as_ref() {
9170 b"entries" => {
9171 f_entries =
9172 Some(Box::new(CTPCDSDTCEntries::from_xml(reader, &e, true)?));
9173 #[cfg(feature = "extra-children")]
9174 {
9175 child_idx += 1;
9176 }
9177 }
9178 b"sets" => {
9179 f_sets = Some(Box::new(CTSets::from_xml(reader, &e, true)?));
9180 #[cfg(feature = "extra-children")]
9181 {
9182 child_idx += 1;
9183 }
9184 }
9185 b"queryCache" => {
9186 f_query_cache =
9187 Some(Box::new(CTQueryCache::from_xml(reader, &e, true)?));
9188 #[cfg(feature = "extra-children")]
9189 {
9190 child_idx += 1;
9191 }
9192 }
9193 b"serverFormats" => {
9194 f_server_formats =
9195 Some(Box::new(CTServerFormats::from_xml(reader, &e, true)?));
9196 #[cfg(feature = "extra-children")]
9197 {
9198 child_idx += 1;
9199 }
9200 }
9201 b"extLst" => {
9202 f_extension_list =
9203 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
9204 #[cfg(feature = "extra-children")]
9205 {
9206 child_idx += 1;
9207 }
9208 }
9209 #[cfg(feature = "extra-children")]
9210 _ => {
9211 let elem = RawXmlElement::from_empty(&e);
9213 extra_children.push(PositionedNode::new(
9214 child_idx,
9215 RawXmlNode::Element(elem),
9216 ));
9217 child_idx += 1;
9218 }
9219 #[cfg(not(feature = "extra-children"))]
9220 _ => {}
9221 }
9222 }
9223 Event::End(_) => break,
9224 Event::Eof => break,
9225 _ => {}
9226 }
9227 buf.clear();
9228 }
9229 }
9230
9231 Ok(Self {
9232 entries: f_entries,
9233 sets: f_sets,
9234 query_cache: f_query_cache,
9235 server_formats: f_server_formats,
9236 extension_list: f_extension_list,
9237 #[cfg(feature = "extra-children")]
9238 extra_children,
9239 })
9240 }
9241}
9242
9243impl FromXml for CTServerFormat {
9244 fn from_xml<R: BufRead>(
9245 reader: &mut Reader<R>,
9246 start_tag: &BytesStart,
9247 is_empty: bool,
9248 ) -> Result<Self, ParseError> {
9249 let mut f_culture = None;
9250 let mut f_format = None;
9251 #[cfg(feature = "extra-attrs")]
9252 let mut extra_attrs = std::collections::HashMap::new();
9253
9254 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
9256 let val = String::from_utf8_lossy(&attr.value);
9257 match attr.key.local_name().as_ref() {
9258 b"culture" => {
9259 f_culture = Some(val.into_owned());
9260 }
9261 b"format" => {
9262 f_format = Some(val.into_owned());
9263 }
9264 #[cfg(feature = "extra-attrs")]
9265 unknown => {
9266 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
9267 extra_attrs.insert(key, val.into_owned());
9268 }
9269 #[cfg(not(feature = "extra-attrs"))]
9270 _ => {}
9271 }
9272 }
9273
9274 if !is_empty {
9275 let mut buf = Vec::new();
9276 loop {
9277 match reader.read_event_into(&mut buf)? {
9278 Event::End(_) => break,
9279 Event::Eof => break,
9280 _ => {}
9281 }
9282 buf.clear();
9283 }
9284 }
9285
9286 Ok(Self {
9287 culture: f_culture,
9288 format: f_format,
9289 #[cfg(feature = "extra-attrs")]
9290 extra_attrs,
9291 })
9292 }
9293}
9294
9295impl FromXml for CTServerFormats {
9296 fn from_xml<R: BufRead>(
9297 reader: &mut Reader<R>,
9298 start_tag: &BytesStart,
9299 is_empty: bool,
9300 ) -> Result<Self, ParseError> {
9301 let mut f_count = None;
9302 let mut f_server_format = Vec::new();
9303 #[cfg(feature = "extra-attrs")]
9304 let mut extra_attrs = std::collections::HashMap::new();
9305 #[cfg(feature = "extra-children")]
9306 let mut extra_children = Vec::new();
9307 #[cfg(feature = "extra-children")]
9308 let mut child_idx: usize = 0;
9309
9310 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
9312 let val = String::from_utf8_lossy(&attr.value);
9313 match attr.key.local_name().as_ref() {
9314 b"count" => {
9315 f_count = val.parse().ok();
9316 }
9317 #[cfg(feature = "extra-attrs")]
9318 unknown => {
9319 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
9320 extra_attrs.insert(key, val.into_owned());
9321 }
9322 #[cfg(not(feature = "extra-attrs"))]
9323 _ => {}
9324 }
9325 }
9326
9327 if !is_empty {
9329 let mut buf = Vec::new();
9330 loop {
9331 match reader.read_event_into(&mut buf)? {
9332 Event::Start(e) => {
9333 match e.local_name().as_ref() {
9334 b"serverFormat" => {
9335 f_server_format.push(CTServerFormat::from_xml(reader, &e, false)?);
9336 #[cfg(feature = "extra-children")]
9337 {
9338 child_idx += 1;
9339 }
9340 }
9341 #[cfg(feature = "extra-children")]
9342 _ => {
9343 let elem = RawXmlElement::from_reader(reader, &e)?;
9345 extra_children.push(PositionedNode::new(
9346 child_idx,
9347 RawXmlNode::Element(elem),
9348 ));
9349 child_idx += 1;
9350 }
9351 #[cfg(not(feature = "extra-children"))]
9352 _ => {
9353 skip_element(reader)?;
9355 }
9356 }
9357 }
9358 Event::Empty(e) => {
9359 match e.local_name().as_ref() {
9360 b"serverFormat" => {
9361 f_server_format.push(CTServerFormat::from_xml(reader, &e, true)?);
9362 #[cfg(feature = "extra-children")]
9363 {
9364 child_idx += 1;
9365 }
9366 }
9367 #[cfg(feature = "extra-children")]
9368 _ => {
9369 let elem = RawXmlElement::from_empty(&e);
9371 extra_children.push(PositionedNode::new(
9372 child_idx,
9373 RawXmlNode::Element(elem),
9374 ));
9375 child_idx += 1;
9376 }
9377 #[cfg(not(feature = "extra-children"))]
9378 _ => {}
9379 }
9380 }
9381 Event::End(_) => break,
9382 Event::Eof => break,
9383 _ => {}
9384 }
9385 buf.clear();
9386 }
9387 }
9388
9389 Ok(Self {
9390 count: f_count,
9391 server_format: f_server_format,
9392 #[cfg(feature = "extra-attrs")]
9393 extra_attrs,
9394 #[cfg(feature = "extra-children")]
9395 extra_children,
9396 })
9397 }
9398}
9399
9400impl FromXml for CTPCDSDTCEntries {
9401 fn from_xml<R: BufRead>(
9402 reader: &mut Reader<R>,
9403 start_tag: &BytesStart,
9404 is_empty: bool,
9405 ) -> Result<Self, ParseError> {
9406 let mut f_count = None;
9407 let mut f_m = Vec::new();
9408 let mut f_n = Vec::new();
9409 let mut f_e = Vec::new();
9410 let mut f_style_index = Vec::new();
9411 #[cfg(feature = "extra-attrs")]
9412 let mut extra_attrs = std::collections::HashMap::new();
9413 #[cfg(feature = "extra-children")]
9414 let mut extra_children = Vec::new();
9415 #[cfg(feature = "extra-children")]
9416 let mut child_idx: usize = 0;
9417
9418 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
9420 let val = String::from_utf8_lossy(&attr.value);
9421 match attr.key.local_name().as_ref() {
9422 b"count" => {
9423 f_count = val.parse().ok();
9424 }
9425 #[cfg(feature = "extra-attrs")]
9426 unknown => {
9427 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
9428 extra_attrs.insert(key, val.into_owned());
9429 }
9430 #[cfg(not(feature = "extra-attrs"))]
9431 _ => {}
9432 }
9433 }
9434
9435 if !is_empty {
9437 let mut buf = Vec::new();
9438 loop {
9439 match reader.read_event_into(&mut buf)? {
9440 Event::Start(e) => {
9441 match e.local_name().as_ref() {
9442 b"m" => {
9443 f_m.push(CTMissing::from_xml(reader, &e, false)?);
9444 #[cfg(feature = "extra-children")]
9445 {
9446 child_idx += 1;
9447 }
9448 }
9449 b"n" => {
9450 f_n.push(CTNumber::from_xml(reader, &e, false)?);
9451 #[cfg(feature = "extra-children")]
9452 {
9453 child_idx += 1;
9454 }
9455 }
9456 b"e" => {
9457 f_e.push(CTError::from_xml(reader, &e, false)?);
9458 #[cfg(feature = "extra-children")]
9459 {
9460 child_idx += 1;
9461 }
9462 }
9463 b"s" => {
9464 f_style_index.push(CTString::from_xml(reader, &e, false)?);
9465 #[cfg(feature = "extra-children")]
9466 {
9467 child_idx += 1;
9468 }
9469 }
9470 #[cfg(feature = "extra-children")]
9471 _ => {
9472 let elem = RawXmlElement::from_reader(reader, &e)?;
9474 extra_children.push(PositionedNode::new(
9475 child_idx,
9476 RawXmlNode::Element(elem),
9477 ));
9478 child_idx += 1;
9479 }
9480 #[cfg(not(feature = "extra-children"))]
9481 _ => {
9482 skip_element(reader)?;
9484 }
9485 }
9486 }
9487 Event::Empty(e) => {
9488 match e.local_name().as_ref() {
9489 b"m" => {
9490 f_m.push(CTMissing::from_xml(reader, &e, true)?);
9491 #[cfg(feature = "extra-children")]
9492 {
9493 child_idx += 1;
9494 }
9495 }
9496 b"n" => {
9497 f_n.push(CTNumber::from_xml(reader, &e, true)?);
9498 #[cfg(feature = "extra-children")]
9499 {
9500 child_idx += 1;
9501 }
9502 }
9503 b"e" => {
9504 f_e.push(CTError::from_xml(reader, &e, true)?);
9505 #[cfg(feature = "extra-children")]
9506 {
9507 child_idx += 1;
9508 }
9509 }
9510 b"s" => {
9511 f_style_index.push(CTString::from_xml(reader, &e, true)?);
9512 #[cfg(feature = "extra-children")]
9513 {
9514 child_idx += 1;
9515 }
9516 }
9517 #[cfg(feature = "extra-children")]
9518 _ => {
9519 let elem = RawXmlElement::from_empty(&e);
9521 extra_children.push(PositionedNode::new(
9522 child_idx,
9523 RawXmlNode::Element(elem),
9524 ));
9525 child_idx += 1;
9526 }
9527 #[cfg(not(feature = "extra-children"))]
9528 _ => {}
9529 }
9530 }
9531 Event::End(_) => break,
9532 Event::Eof => break,
9533 _ => {}
9534 }
9535 buf.clear();
9536 }
9537 }
9538
9539 Ok(Self {
9540 count: f_count,
9541 m: f_m,
9542 n: f_n,
9543 e: f_e,
9544 style_index: f_style_index,
9545 #[cfg(feature = "extra-attrs")]
9546 extra_attrs,
9547 #[cfg(feature = "extra-children")]
9548 extra_children,
9549 })
9550 }
9551}
9552
9553impl FromXml for CTTuples {
9554 fn from_xml<R: BufRead>(
9555 reader: &mut Reader<R>,
9556 start_tag: &BytesStart,
9557 is_empty: bool,
9558 ) -> Result<Self, ParseError> {
9559 let mut f_cells = None;
9560 let mut f_tpl = Vec::new();
9561 #[cfg(feature = "extra-attrs")]
9562 let mut extra_attrs = std::collections::HashMap::new();
9563 #[cfg(feature = "extra-children")]
9564 let mut extra_children = Vec::new();
9565 #[cfg(feature = "extra-children")]
9566 let mut child_idx: usize = 0;
9567
9568 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
9570 let val = String::from_utf8_lossy(&attr.value);
9571 match attr.key.local_name().as_ref() {
9572 b"c" => {
9573 f_cells = val.parse().ok();
9574 }
9575 #[cfg(feature = "extra-attrs")]
9576 unknown => {
9577 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
9578 extra_attrs.insert(key, val.into_owned());
9579 }
9580 #[cfg(not(feature = "extra-attrs"))]
9581 _ => {}
9582 }
9583 }
9584
9585 if !is_empty {
9587 let mut buf = Vec::new();
9588 loop {
9589 match reader.read_event_into(&mut buf)? {
9590 Event::Start(e) => {
9591 match e.local_name().as_ref() {
9592 b"tpl" => {
9593 f_tpl.push(CTTuple::from_xml(reader, &e, false)?);
9594 #[cfg(feature = "extra-children")]
9595 {
9596 child_idx += 1;
9597 }
9598 }
9599 #[cfg(feature = "extra-children")]
9600 _ => {
9601 let elem = RawXmlElement::from_reader(reader, &e)?;
9603 extra_children.push(PositionedNode::new(
9604 child_idx,
9605 RawXmlNode::Element(elem),
9606 ));
9607 child_idx += 1;
9608 }
9609 #[cfg(not(feature = "extra-children"))]
9610 _ => {
9611 skip_element(reader)?;
9613 }
9614 }
9615 }
9616 Event::Empty(e) => {
9617 match e.local_name().as_ref() {
9618 b"tpl" => {
9619 f_tpl.push(CTTuple::from_xml(reader, &e, true)?);
9620 #[cfg(feature = "extra-children")]
9621 {
9622 child_idx += 1;
9623 }
9624 }
9625 #[cfg(feature = "extra-children")]
9626 _ => {
9627 let elem = RawXmlElement::from_empty(&e);
9629 extra_children.push(PositionedNode::new(
9630 child_idx,
9631 RawXmlNode::Element(elem),
9632 ));
9633 child_idx += 1;
9634 }
9635 #[cfg(not(feature = "extra-children"))]
9636 _ => {}
9637 }
9638 }
9639 Event::End(_) => break,
9640 Event::Eof => break,
9641 _ => {}
9642 }
9643 buf.clear();
9644 }
9645 }
9646
9647 Ok(Self {
9648 cells: f_cells,
9649 tpl: f_tpl,
9650 #[cfg(feature = "extra-attrs")]
9651 extra_attrs,
9652 #[cfg(feature = "extra-children")]
9653 extra_children,
9654 })
9655 }
9656}
9657
9658impl FromXml for CTTuple {
9659 fn from_xml<R: BufRead>(
9660 reader: &mut Reader<R>,
9661 start_tag: &BytesStart,
9662 is_empty: bool,
9663 ) -> Result<Self, ParseError> {
9664 let mut f_fld = None;
9665 let mut f_hier = None;
9666 let mut f_item: Option<u32> = None;
9667 #[cfg(feature = "extra-attrs")]
9668 let mut extra_attrs = std::collections::HashMap::new();
9669
9670 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
9672 let val = String::from_utf8_lossy(&attr.value);
9673 match attr.key.local_name().as_ref() {
9674 b"fld" => {
9675 f_fld = val.parse().ok();
9676 }
9677 b"hier" => {
9678 f_hier = val.parse().ok();
9679 }
9680 b"item" => {
9681 f_item = val.parse().ok();
9682 }
9683 #[cfg(feature = "extra-attrs")]
9684 unknown => {
9685 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
9686 extra_attrs.insert(key, val.into_owned());
9687 }
9688 #[cfg(not(feature = "extra-attrs"))]
9689 _ => {}
9690 }
9691 }
9692
9693 if !is_empty {
9694 let mut buf = Vec::new();
9695 loop {
9696 match reader.read_event_into(&mut buf)? {
9697 Event::End(_) => break,
9698 Event::Eof => break,
9699 _ => {}
9700 }
9701 buf.clear();
9702 }
9703 }
9704
9705 Ok(Self {
9706 fld: f_fld,
9707 hier: f_hier,
9708 item: f_item.ok_or_else(|| ParseError::MissingAttribute("item".to_string()))?,
9709 #[cfg(feature = "extra-attrs")]
9710 extra_attrs,
9711 })
9712 }
9713}
9714
9715impl FromXml for CTSets {
9716 fn from_xml<R: BufRead>(
9717 reader: &mut Reader<R>,
9718 start_tag: &BytesStart,
9719 is_empty: bool,
9720 ) -> Result<Self, ParseError> {
9721 let mut f_count = None;
9722 let mut f_set = Vec::new();
9723 #[cfg(feature = "extra-attrs")]
9724 let mut extra_attrs = std::collections::HashMap::new();
9725 #[cfg(feature = "extra-children")]
9726 let mut extra_children = Vec::new();
9727 #[cfg(feature = "extra-children")]
9728 let mut child_idx: usize = 0;
9729
9730 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
9732 let val = String::from_utf8_lossy(&attr.value);
9733 match attr.key.local_name().as_ref() {
9734 b"count" => {
9735 f_count = val.parse().ok();
9736 }
9737 #[cfg(feature = "extra-attrs")]
9738 unknown => {
9739 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
9740 extra_attrs.insert(key, val.into_owned());
9741 }
9742 #[cfg(not(feature = "extra-attrs"))]
9743 _ => {}
9744 }
9745 }
9746
9747 if !is_empty {
9749 let mut buf = Vec::new();
9750 loop {
9751 match reader.read_event_into(&mut buf)? {
9752 Event::Start(e) => {
9753 match e.local_name().as_ref() {
9754 b"set" => {
9755 f_set.push(CTSet::from_xml(reader, &e, false)?);
9756 #[cfg(feature = "extra-children")]
9757 {
9758 child_idx += 1;
9759 }
9760 }
9761 #[cfg(feature = "extra-children")]
9762 _ => {
9763 let elem = RawXmlElement::from_reader(reader, &e)?;
9765 extra_children.push(PositionedNode::new(
9766 child_idx,
9767 RawXmlNode::Element(elem),
9768 ));
9769 child_idx += 1;
9770 }
9771 #[cfg(not(feature = "extra-children"))]
9772 _ => {
9773 skip_element(reader)?;
9775 }
9776 }
9777 }
9778 Event::Empty(e) => {
9779 match e.local_name().as_ref() {
9780 b"set" => {
9781 f_set.push(CTSet::from_xml(reader, &e, true)?);
9782 #[cfg(feature = "extra-children")]
9783 {
9784 child_idx += 1;
9785 }
9786 }
9787 #[cfg(feature = "extra-children")]
9788 _ => {
9789 let elem = RawXmlElement::from_empty(&e);
9791 extra_children.push(PositionedNode::new(
9792 child_idx,
9793 RawXmlNode::Element(elem),
9794 ));
9795 child_idx += 1;
9796 }
9797 #[cfg(not(feature = "extra-children"))]
9798 _ => {}
9799 }
9800 }
9801 Event::End(_) => break,
9802 Event::Eof => break,
9803 _ => {}
9804 }
9805 buf.clear();
9806 }
9807 }
9808
9809 Ok(Self {
9810 count: f_count,
9811 set: f_set,
9812 #[cfg(feature = "extra-attrs")]
9813 extra_attrs,
9814 #[cfg(feature = "extra-children")]
9815 extra_children,
9816 })
9817 }
9818}
9819
9820impl FromXml for CTSet {
9821 fn from_xml<R: BufRead>(
9822 reader: &mut Reader<R>,
9823 start_tag: &BytesStart,
9824 is_empty: bool,
9825 ) -> Result<Self, ParseError> {
9826 let mut f_count = None;
9827 let mut f_max_rank: Option<i32> = None;
9828 let mut f_set_definition: Option<XmlString> = None;
9829 let mut f_sort_type = None;
9830 let mut f_query_failed = None;
9831 let mut f_tpls = Vec::new();
9832 let mut f_sort_by_tuple = None;
9833 #[cfg(feature = "extra-attrs")]
9834 let mut extra_attrs = std::collections::HashMap::new();
9835 #[cfg(feature = "extra-children")]
9836 let mut extra_children = Vec::new();
9837 #[cfg(feature = "extra-children")]
9838 let mut child_idx: usize = 0;
9839
9840 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
9842 let val = String::from_utf8_lossy(&attr.value);
9843 match attr.key.local_name().as_ref() {
9844 b"count" => {
9845 f_count = val.parse().ok();
9846 }
9847 b"maxRank" => {
9848 f_max_rank = val.parse().ok();
9849 }
9850 b"setDefinition" => {
9851 f_set_definition = Some(val.into_owned());
9852 }
9853 b"sortType" => {
9854 f_sort_type = val.parse().ok();
9855 }
9856 b"queryFailed" => {
9857 f_query_failed = Some(val == "true" || val == "1");
9858 }
9859 #[cfg(feature = "extra-attrs")]
9860 unknown => {
9861 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
9862 extra_attrs.insert(key, val.into_owned());
9863 }
9864 #[cfg(not(feature = "extra-attrs"))]
9865 _ => {}
9866 }
9867 }
9868
9869 if !is_empty {
9871 let mut buf = Vec::new();
9872 loop {
9873 match reader.read_event_into(&mut buf)? {
9874 Event::Start(e) => {
9875 match e.local_name().as_ref() {
9876 b"tpls" => {
9877 f_tpls.push(CTTuples::from_xml(reader, &e, false)?);
9878 #[cfg(feature = "extra-children")]
9879 {
9880 child_idx += 1;
9881 }
9882 }
9883 b"sortByTuple" => {
9884 f_sort_by_tuple =
9885 Some(Box::new(CTTuples::from_xml(reader, &e, false)?));
9886 #[cfg(feature = "extra-children")]
9887 {
9888 child_idx += 1;
9889 }
9890 }
9891 #[cfg(feature = "extra-children")]
9892 _ => {
9893 let elem = RawXmlElement::from_reader(reader, &e)?;
9895 extra_children.push(PositionedNode::new(
9896 child_idx,
9897 RawXmlNode::Element(elem),
9898 ));
9899 child_idx += 1;
9900 }
9901 #[cfg(not(feature = "extra-children"))]
9902 _ => {
9903 skip_element(reader)?;
9905 }
9906 }
9907 }
9908 Event::Empty(e) => {
9909 match e.local_name().as_ref() {
9910 b"tpls" => {
9911 f_tpls.push(CTTuples::from_xml(reader, &e, true)?);
9912 #[cfg(feature = "extra-children")]
9913 {
9914 child_idx += 1;
9915 }
9916 }
9917 b"sortByTuple" => {
9918 f_sort_by_tuple =
9919 Some(Box::new(CTTuples::from_xml(reader, &e, true)?));
9920 #[cfg(feature = "extra-children")]
9921 {
9922 child_idx += 1;
9923 }
9924 }
9925 #[cfg(feature = "extra-children")]
9926 _ => {
9927 let elem = RawXmlElement::from_empty(&e);
9929 extra_children.push(PositionedNode::new(
9930 child_idx,
9931 RawXmlNode::Element(elem),
9932 ));
9933 child_idx += 1;
9934 }
9935 #[cfg(not(feature = "extra-children"))]
9936 _ => {}
9937 }
9938 }
9939 Event::End(_) => break,
9940 Event::Eof => break,
9941 _ => {}
9942 }
9943 buf.clear();
9944 }
9945 }
9946
9947 Ok(Self {
9948 count: f_count,
9949 max_rank: f_max_rank
9950 .ok_or_else(|| ParseError::MissingAttribute("maxRank".to_string()))?,
9951 set_definition: f_set_definition
9952 .ok_or_else(|| ParseError::MissingAttribute("setDefinition".to_string()))?,
9953 sort_type: f_sort_type,
9954 query_failed: f_query_failed,
9955 tpls: f_tpls,
9956 sort_by_tuple: f_sort_by_tuple,
9957 #[cfg(feature = "extra-attrs")]
9958 extra_attrs,
9959 #[cfg(feature = "extra-children")]
9960 extra_children,
9961 })
9962 }
9963}
9964
9965impl FromXml for CTQueryCache {
9966 fn from_xml<R: BufRead>(
9967 reader: &mut Reader<R>,
9968 start_tag: &BytesStart,
9969 is_empty: bool,
9970 ) -> Result<Self, ParseError> {
9971 let mut f_count = None;
9972 let mut f_query = Vec::new();
9973 #[cfg(feature = "extra-attrs")]
9974 let mut extra_attrs = std::collections::HashMap::new();
9975 #[cfg(feature = "extra-children")]
9976 let mut extra_children = Vec::new();
9977 #[cfg(feature = "extra-children")]
9978 let mut child_idx: usize = 0;
9979
9980 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
9982 let val = String::from_utf8_lossy(&attr.value);
9983 match attr.key.local_name().as_ref() {
9984 b"count" => {
9985 f_count = val.parse().ok();
9986 }
9987 #[cfg(feature = "extra-attrs")]
9988 unknown => {
9989 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
9990 extra_attrs.insert(key, val.into_owned());
9991 }
9992 #[cfg(not(feature = "extra-attrs"))]
9993 _ => {}
9994 }
9995 }
9996
9997 if !is_empty {
9999 let mut buf = Vec::new();
10000 loop {
10001 match reader.read_event_into(&mut buf)? {
10002 Event::Start(e) => {
10003 match e.local_name().as_ref() {
10004 b"query" => {
10005 f_query.push(CTQuery::from_xml(reader, &e, false)?);
10006 #[cfg(feature = "extra-children")]
10007 {
10008 child_idx += 1;
10009 }
10010 }
10011 #[cfg(feature = "extra-children")]
10012 _ => {
10013 let elem = RawXmlElement::from_reader(reader, &e)?;
10015 extra_children.push(PositionedNode::new(
10016 child_idx,
10017 RawXmlNode::Element(elem),
10018 ));
10019 child_idx += 1;
10020 }
10021 #[cfg(not(feature = "extra-children"))]
10022 _ => {
10023 skip_element(reader)?;
10025 }
10026 }
10027 }
10028 Event::Empty(e) => {
10029 match e.local_name().as_ref() {
10030 b"query" => {
10031 f_query.push(CTQuery::from_xml(reader, &e, true)?);
10032 #[cfg(feature = "extra-children")]
10033 {
10034 child_idx += 1;
10035 }
10036 }
10037 #[cfg(feature = "extra-children")]
10038 _ => {
10039 let elem = RawXmlElement::from_empty(&e);
10041 extra_children.push(PositionedNode::new(
10042 child_idx,
10043 RawXmlNode::Element(elem),
10044 ));
10045 child_idx += 1;
10046 }
10047 #[cfg(not(feature = "extra-children"))]
10048 _ => {}
10049 }
10050 }
10051 Event::End(_) => break,
10052 Event::Eof => break,
10053 _ => {}
10054 }
10055 buf.clear();
10056 }
10057 }
10058
10059 Ok(Self {
10060 count: f_count,
10061 query: f_query,
10062 #[cfg(feature = "extra-attrs")]
10063 extra_attrs,
10064 #[cfg(feature = "extra-children")]
10065 extra_children,
10066 })
10067 }
10068}
10069
10070impl FromXml for CTQuery {
10071 fn from_xml<R: BufRead>(
10072 reader: &mut Reader<R>,
10073 start_tag: &BytesStart,
10074 is_empty: bool,
10075 ) -> Result<Self, ParseError> {
10076 let mut f_mdx: Option<XmlString> = None;
10077 let mut f_tpls = None;
10078 #[cfg(feature = "extra-attrs")]
10079 let mut extra_attrs = std::collections::HashMap::new();
10080 #[cfg(feature = "extra-children")]
10081 let mut extra_children = Vec::new();
10082 #[cfg(feature = "extra-children")]
10083 let mut child_idx: usize = 0;
10084
10085 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
10087 let val = String::from_utf8_lossy(&attr.value);
10088 match attr.key.local_name().as_ref() {
10089 b"mdx" => {
10090 f_mdx = Some(val.into_owned());
10091 }
10092 #[cfg(feature = "extra-attrs")]
10093 unknown => {
10094 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
10095 extra_attrs.insert(key, val.into_owned());
10096 }
10097 #[cfg(not(feature = "extra-attrs"))]
10098 _ => {}
10099 }
10100 }
10101
10102 if !is_empty {
10104 let mut buf = Vec::new();
10105 loop {
10106 match reader.read_event_into(&mut buf)? {
10107 Event::Start(e) => {
10108 match e.local_name().as_ref() {
10109 b"tpls" => {
10110 f_tpls = Some(Box::new(CTTuples::from_xml(reader, &e, false)?));
10111 #[cfg(feature = "extra-children")]
10112 {
10113 child_idx += 1;
10114 }
10115 }
10116 #[cfg(feature = "extra-children")]
10117 _ => {
10118 let elem = RawXmlElement::from_reader(reader, &e)?;
10120 extra_children.push(PositionedNode::new(
10121 child_idx,
10122 RawXmlNode::Element(elem),
10123 ));
10124 child_idx += 1;
10125 }
10126 #[cfg(not(feature = "extra-children"))]
10127 _ => {
10128 skip_element(reader)?;
10130 }
10131 }
10132 }
10133 Event::Empty(e) => {
10134 match e.local_name().as_ref() {
10135 b"tpls" => {
10136 f_tpls = Some(Box::new(CTTuples::from_xml(reader, &e, true)?));
10137 #[cfg(feature = "extra-children")]
10138 {
10139 child_idx += 1;
10140 }
10141 }
10142 #[cfg(feature = "extra-children")]
10143 _ => {
10144 let elem = RawXmlElement::from_empty(&e);
10146 extra_children.push(PositionedNode::new(
10147 child_idx,
10148 RawXmlNode::Element(elem),
10149 ));
10150 child_idx += 1;
10151 }
10152 #[cfg(not(feature = "extra-children"))]
10153 _ => {}
10154 }
10155 }
10156 Event::End(_) => break,
10157 Event::Eof => break,
10158 _ => {}
10159 }
10160 buf.clear();
10161 }
10162 }
10163
10164 Ok(Self {
10165 mdx: f_mdx.ok_or_else(|| ParseError::MissingAttribute("mdx".to_string()))?,
10166 tpls: f_tpls,
10167 #[cfg(feature = "extra-attrs")]
10168 extra_attrs,
10169 #[cfg(feature = "extra-children")]
10170 extra_children,
10171 })
10172 }
10173}
10174
10175impl FromXml for CTCalculatedItems {
10176 fn from_xml<R: BufRead>(
10177 reader: &mut Reader<R>,
10178 start_tag: &BytesStart,
10179 is_empty: bool,
10180 ) -> Result<Self, ParseError> {
10181 let mut f_count = None;
10182 let mut f_calculated_item = Vec::new();
10183 #[cfg(feature = "extra-attrs")]
10184 let mut extra_attrs = std::collections::HashMap::new();
10185 #[cfg(feature = "extra-children")]
10186 let mut extra_children = Vec::new();
10187 #[cfg(feature = "extra-children")]
10188 let mut child_idx: usize = 0;
10189
10190 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
10192 let val = String::from_utf8_lossy(&attr.value);
10193 match attr.key.local_name().as_ref() {
10194 b"count" => {
10195 f_count = val.parse().ok();
10196 }
10197 #[cfg(feature = "extra-attrs")]
10198 unknown => {
10199 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
10200 extra_attrs.insert(key, val.into_owned());
10201 }
10202 #[cfg(not(feature = "extra-attrs"))]
10203 _ => {}
10204 }
10205 }
10206
10207 if !is_empty {
10209 let mut buf = Vec::new();
10210 loop {
10211 match reader.read_event_into(&mut buf)? {
10212 Event::Start(e) => {
10213 match e.local_name().as_ref() {
10214 b"calculatedItem" => {
10215 f_calculated_item
10216 .push(CTCalculatedItem::from_xml(reader, &e, false)?);
10217 #[cfg(feature = "extra-children")]
10218 {
10219 child_idx += 1;
10220 }
10221 }
10222 #[cfg(feature = "extra-children")]
10223 _ => {
10224 let elem = RawXmlElement::from_reader(reader, &e)?;
10226 extra_children.push(PositionedNode::new(
10227 child_idx,
10228 RawXmlNode::Element(elem),
10229 ));
10230 child_idx += 1;
10231 }
10232 #[cfg(not(feature = "extra-children"))]
10233 _ => {
10234 skip_element(reader)?;
10236 }
10237 }
10238 }
10239 Event::Empty(e) => {
10240 match e.local_name().as_ref() {
10241 b"calculatedItem" => {
10242 f_calculated_item
10243 .push(CTCalculatedItem::from_xml(reader, &e, true)?);
10244 #[cfg(feature = "extra-children")]
10245 {
10246 child_idx += 1;
10247 }
10248 }
10249 #[cfg(feature = "extra-children")]
10250 _ => {
10251 let elem = RawXmlElement::from_empty(&e);
10253 extra_children.push(PositionedNode::new(
10254 child_idx,
10255 RawXmlNode::Element(elem),
10256 ));
10257 child_idx += 1;
10258 }
10259 #[cfg(not(feature = "extra-children"))]
10260 _ => {}
10261 }
10262 }
10263 Event::End(_) => break,
10264 Event::Eof => break,
10265 _ => {}
10266 }
10267 buf.clear();
10268 }
10269 }
10270
10271 Ok(Self {
10272 count: f_count,
10273 calculated_item: f_calculated_item,
10274 #[cfg(feature = "extra-attrs")]
10275 extra_attrs,
10276 #[cfg(feature = "extra-children")]
10277 extra_children,
10278 })
10279 }
10280}
10281
10282impl FromXml for CTCalculatedItem {
10283 fn from_xml<R: BufRead>(
10284 reader: &mut Reader<R>,
10285 start_tag: &BytesStart,
10286 is_empty: bool,
10287 ) -> Result<Self, ParseError> {
10288 let mut f_field = None;
10289 let mut f_formula = None;
10290 let mut f_pivot_area: Option<Box<PivotArea>> = None;
10291 let mut f_extension_list = None;
10292 #[cfg(feature = "extra-attrs")]
10293 let mut extra_attrs = std::collections::HashMap::new();
10294 #[cfg(feature = "extra-children")]
10295 let mut extra_children = Vec::new();
10296 #[cfg(feature = "extra-children")]
10297 let mut child_idx: usize = 0;
10298
10299 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
10301 let val = String::from_utf8_lossy(&attr.value);
10302 match attr.key.local_name().as_ref() {
10303 b"field" => {
10304 f_field = val.parse().ok();
10305 }
10306 b"formula" => {
10307 f_formula = Some(val.into_owned());
10308 }
10309 #[cfg(feature = "extra-attrs")]
10310 unknown => {
10311 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
10312 extra_attrs.insert(key, val.into_owned());
10313 }
10314 #[cfg(not(feature = "extra-attrs"))]
10315 _ => {}
10316 }
10317 }
10318
10319 if !is_empty {
10321 let mut buf = Vec::new();
10322 loop {
10323 match reader.read_event_into(&mut buf)? {
10324 Event::Start(e) => {
10325 match e.local_name().as_ref() {
10326 b"pivotArea" => {
10327 f_pivot_area =
10328 Some(Box::new(PivotArea::from_xml(reader, &e, false)?));
10329 #[cfg(feature = "extra-children")]
10330 {
10331 child_idx += 1;
10332 }
10333 }
10334 b"extLst" => {
10335 f_extension_list =
10336 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
10337 #[cfg(feature = "extra-children")]
10338 {
10339 child_idx += 1;
10340 }
10341 }
10342 #[cfg(feature = "extra-children")]
10343 _ => {
10344 let elem = RawXmlElement::from_reader(reader, &e)?;
10346 extra_children.push(PositionedNode::new(
10347 child_idx,
10348 RawXmlNode::Element(elem),
10349 ));
10350 child_idx += 1;
10351 }
10352 #[cfg(not(feature = "extra-children"))]
10353 _ => {
10354 skip_element(reader)?;
10356 }
10357 }
10358 }
10359 Event::Empty(e) => {
10360 match e.local_name().as_ref() {
10361 b"pivotArea" => {
10362 f_pivot_area =
10363 Some(Box::new(PivotArea::from_xml(reader, &e, true)?));
10364 #[cfg(feature = "extra-children")]
10365 {
10366 child_idx += 1;
10367 }
10368 }
10369 b"extLst" => {
10370 f_extension_list =
10371 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
10372 #[cfg(feature = "extra-children")]
10373 {
10374 child_idx += 1;
10375 }
10376 }
10377 #[cfg(feature = "extra-children")]
10378 _ => {
10379 let elem = RawXmlElement::from_empty(&e);
10381 extra_children.push(PositionedNode::new(
10382 child_idx,
10383 RawXmlNode::Element(elem),
10384 ));
10385 child_idx += 1;
10386 }
10387 #[cfg(not(feature = "extra-children"))]
10388 _ => {}
10389 }
10390 }
10391 Event::End(_) => break,
10392 Event::Eof => break,
10393 _ => {}
10394 }
10395 buf.clear();
10396 }
10397 }
10398
10399 Ok(Self {
10400 field: f_field,
10401 formula: f_formula,
10402 pivot_area: f_pivot_area
10403 .ok_or_else(|| ParseError::MissingAttribute("pivotArea".to_string()))?,
10404 extension_list: f_extension_list,
10405 #[cfg(feature = "extra-attrs")]
10406 extra_attrs,
10407 #[cfg(feature = "extra-children")]
10408 extra_children,
10409 })
10410 }
10411}
10412
10413impl FromXml for CTCalculatedMembers {
10414 fn from_xml<R: BufRead>(
10415 reader: &mut Reader<R>,
10416 start_tag: &BytesStart,
10417 is_empty: bool,
10418 ) -> Result<Self, ParseError> {
10419 let mut f_count = None;
10420 let mut f_calculated_member = Vec::new();
10421 #[cfg(feature = "extra-attrs")]
10422 let mut extra_attrs = std::collections::HashMap::new();
10423 #[cfg(feature = "extra-children")]
10424 let mut extra_children = Vec::new();
10425 #[cfg(feature = "extra-children")]
10426 let mut child_idx: usize = 0;
10427
10428 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
10430 let val = String::from_utf8_lossy(&attr.value);
10431 match attr.key.local_name().as_ref() {
10432 b"count" => {
10433 f_count = val.parse().ok();
10434 }
10435 #[cfg(feature = "extra-attrs")]
10436 unknown => {
10437 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
10438 extra_attrs.insert(key, val.into_owned());
10439 }
10440 #[cfg(not(feature = "extra-attrs"))]
10441 _ => {}
10442 }
10443 }
10444
10445 if !is_empty {
10447 let mut buf = Vec::new();
10448 loop {
10449 match reader.read_event_into(&mut buf)? {
10450 Event::Start(e) => {
10451 match e.local_name().as_ref() {
10452 b"calculatedMember" => {
10453 f_calculated_member
10454 .push(CTCalculatedMember::from_xml(reader, &e, false)?);
10455 #[cfg(feature = "extra-children")]
10456 {
10457 child_idx += 1;
10458 }
10459 }
10460 #[cfg(feature = "extra-children")]
10461 _ => {
10462 let elem = RawXmlElement::from_reader(reader, &e)?;
10464 extra_children.push(PositionedNode::new(
10465 child_idx,
10466 RawXmlNode::Element(elem),
10467 ));
10468 child_idx += 1;
10469 }
10470 #[cfg(not(feature = "extra-children"))]
10471 _ => {
10472 skip_element(reader)?;
10474 }
10475 }
10476 }
10477 Event::Empty(e) => {
10478 match e.local_name().as_ref() {
10479 b"calculatedMember" => {
10480 f_calculated_member
10481 .push(CTCalculatedMember::from_xml(reader, &e, true)?);
10482 #[cfg(feature = "extra-children")]
10483 {
10484 child_idx += 1;
10485 }
10486 }
10487 #[cfg(feature = "extra-children")]
10488 _ => {
10489 let elem = RawXmlElement::from_empty(&e);
10491 extra_children.push(PositionedNode::new(
10492 child_idx,
10493 RawXmlNode::Element(elem),
10494 ));
10495 child_idx += 1;
10496 }
10497 #[cfg(not(feature = "extra-children"))]
10498 _ => {}
10499 }
10500 }
10501 Event::End(_) => break,
10502 Event::Eof => break,
10503 _ => {}
10504 }
10505 buf.clear();
10506 }
10507 }
10508
10509 Ok(Self {
10510 count: f_count,
10511 calculated_member: f_calculated_member,
10512 #[cfg(feature = "extra-attrs")]
10513 extra_attrs,
10514 #[cfg(feature = "extra-children")]
10515 extra_children,
10516 })
10517 }
10518}
10519
10520impl FromXml for CTCalculatedMember {
10521 fn from_xml<R: BufRead>(
10522 reader: &mut Reader<R>,
10523 start_tag: &BytesStart,
10524 is_empty: bool,
10525 ) -> Result<Self, ParseError> {
10526 let mut f_name: Option<XmlString> = None;
10527 let mut f_mdx: Option<XmlString> = None;
10528 let mut f_member_name = None;
10529 let mut f_hierarchy = None;
10530 let mut f_parent = None;
10531 let mut f_solve_order = None;
10532 let mut f_set = None;
10533 let mut f_extension_list = None;
10534 #[cfg(feature = "extra-attrs")]
10535 let mut extra_attrs = std::collections::HashMap::new();
10536 #[cfg(feature = "extra-children")]
10537 let mut extra_children = Vec::new();
10538 #[cfg(feature = "extra-children")]
10539 let mut child_idx: usize = 0;
10540
10541 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
10543 let val = String::from_utf8_lossy(&attr.value);
10544 match attr.key.local_name().as_ref() {
10545 b"name" => {
10546 f_name = Some(val.into_owned());
10547 }
10548 b"mdx" => {
10549 f_mdx = Some(val.into_owned());
10550 }
10551 b"memberName" => {
10552 f_member_name = Some(val.into_owned());
10553 }
10554 b"hierarchy" => {
10555 f_hierarchy = Some(val.into_owned());
10556 }
10557 b"parent" => {
10558 f_parent = Some(val.into_owned());
10559 }
10560 b"solveOrder" => {
10561 f_solve_order = val.parse().ok();
10562 }
10563 b"set" => {
10564 f_set = Some(val == "true" || val == "1");
10565 }
10566 #[cfg(feature = "extra-attrs")]
10567 unknown => {
10568 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
10569 extra_attrs.insert(key, val.into_owned());
10570 }
10571 #[cfg(not(feature = "extra-attrs"))]
10572 _ => {}
10573 }
10574 }
10575
10576 if !is_empty {
10578 let mut buf = Vec::new();
10579 loop {
10580 match reader.read_event_into(&mut buf)? {
10581 Event::Start(e) => {
10582 match e.local_name().as_ref() {
10583 b"extLst" => {
10584 f_extension_list =
10585 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
10586 #[cfg(feature = "extra-children")]
10587 {
10588 child_idx += 1;
10589 }
10590 }
10591 #[cfg(feature = "extra-children")]
10592 _ => {
10593 let elem = RawXmlElement::from_reader(reader, &e)?;
10595 extra_children.push(PositionedNode::new(
10596 child_idx,
10597 RawXmlNode::Element(elem),
10598 ));
10599 child_idx += 1;
10600 }
10601 #[cfg(not(feature = "extra-children"))]
10602 _ => {
10603 skip_element(reader)?;
10605 }
10606 }
10607 }
10608 Event::Empty(e) => {
10609 match e.local_name().as_ref() {
10610 b"extLst" => {
10611 f_extension_list =
10612 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
10613 #[cfg(feature = "extra-children")]
10614 {
10615 child_idx += 1;
10616 }
10617 }
10618 #[cfg(feature = "extra-children")]
10619 _ => {
10620 let elem = RawXmlElement::from_empty(&e);
10622 extra_children.push(PositionedNode::new(
10623 child_idx,
10624 RawXmlNode::Element(elem),
10625 ));
10626 child_idx += 1;
10627 }
10628 #[cfg(not(feature = "extra-children"))]
10629 _ => {}
10630 }
10631 }
10632 Event::End(_) => break,
10633 Event::Eof => break,
10634 _ => {}
10635 }
10636 buf.clear();
10637 }
10638 }
10639
10640 Ok(Self {
10641 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
10642 mdx: f_mdx.ok_or_else(|| ParseError::MissingAttribute("mdx".to_string()))?,
10643 member_name: f_member_name,
10644 hierarchy: f_hierarchy,
10645 parent: f_parent,
10646 solve_order: f_solve_order,
10647 set: f_set,
10648 extension_list: f_extension_list,
10649 #[cfg(feature = "extra-attrs")]
10650 extra_attrs,
10651 #[cfg(feature = "extra-children")]
10652 extra_children,
10653 })
10654 }
10655}
10656
10657impl FromXml for CTPivotTableDefinition {
10658 fn from_xml<R: BufRead>(
10659 reader: &mut Reader<R>,
10660 start_tag: &BytesStart,
10661 is_empty: bool,
10662 ) -> Result<Self, ParseError> {
10663 let mut f_name: Option<XmlString> = None;
10664 let mut f_cache_id: Option<u32> = None;
10665 let mut f_data_on_rows = None;
10666 let mut f_data_position = None;
10667 let mut f_auto_format_id = None;
10668 let mut f_apply_number_formats = None;
10669 let mut f_apply_border_formats = None;
10670 let mut f_apply_font_formats = None;
10671 let mut f_apply_pattern_formats = None;
10672 let mut f_apply_alignment_formats = None;
10673 let mut f_apply_width_height_formats = None;
10674 let mut f_data_caption: Option<XmlString> = None;
10675 let mut f_grand_total_caption = None;
10676 let mut f_error_caption = None;
10677 let mut f_show_error = None;
10678 let mut f_missing_caption = None;
10679 let mut f_show_missing = None;
10680 let mut f_page_style = None;
10681 let mut f_pivot_table_style = None;
10682 let mut f_vacated_style = None;
10683 let mut f_tag = None;
10684 let mut f_updated_version = None;
10685 let mut f_min_refreshable_version = None;
10686 let mut f_asterisk_totals = None;
10687 let mut f_show_items = None;
10688 let mut f_edit_data = None;
10689 let mut f_disable_field_list = None;
10690 let mut f_show_calc_mbrs = None;
10691 let mut f_visual_totals = None;
10692 let mut f_show_multiple_label = None;
10693 let mut f_show_data_drop_down = None;
10694 let mut f_show_drill = None;
10695 let mut f_print_drill = None;
10696 let mut f_show_member_property_tips = None;
10697 let mut f_show_data_tips = None;
10698 let mut f_enable_wizard = None;
10699 let mut f_enable_drill = None;
10700 let mut f_enable_field_properties = None;
10701 let mut f_preserve_formatting = None;
10702 let mut f_use_auto_formatting = None;
10703 let mut f_page_wrap = None;
10704 let mut f_page_over_then_down = None;
10705 let mut f_subtotal_hidden_items = None;
10706 let mut f_row_grand_totals = None;
10707 let mut f_col_grand_totals = None;
10708 let mut f_field_print_titles = None;
10709 let mut f_item_print_titles = None;
10710 let mut f_merge_item = None;
10711 let mut f_show_drop_zones = None;
10712 let mut f_created_version = None;
10713 let mut f_indent = None;
10714 let mut f_show_empty_row = None;
10715 let mut f_show_empty_col = None;
10716 let mut f_show_headers = None;
10717 let mut f_compact = None;
10718 let mut f_outline = None;
10719 let mut f_outline_data = None;
10720 let mut f_compact_data = None;
10721 let mut f_published = None;
10722 let mut f_grid_drop_zones = None;
10723 let mut f_immersive = None;
10724 let mut f_multiple_field_filters = None;
10725 let mut f_chart_format = None;
10726 let mut f_row_header_caption = None;
10727 let mut f_col_header_caption = None;
10728 let mut f_field_list_sort_ascending = None;
10729 let mut f_mdx_subqueries = None;
10730 let mut f_custom_list_sort = None;
10731 let mut f_location: Option<Box<PivotLocation>> = None;
10732 let mut f_pivot_fields = None;
10733 let mut f_row_fields = None;
10734 let mut f_row_items = None;
10735 let mut f_col_fields = None;
10736 let mut f_col_items = None;
10737 let mut f_page_fields = None;
10738 let mut f_data_fields = None;
10739 let mut f_formats = None;
10740 let mut f_conditional_formats = None;
10741 let mut f_chart_formats = None;
10742 let mut f_pivot_hierarchies = None;
10743 let mut f_pivot_table_style_info = None;
10744 let mut f_filters = None;
10745 let mut f_row_hierarchies_usage = None;
10746 let mut f_col_hierarchies_usage = None;
10747 let mut f_extension_list = None;
10748 #[cfg(feature = "extra-attrs")]
10749 let mut extra_attrs = std::collections::HashMap::new();
10750 #[cfg(feature = "extra-children")]
10751 let mut extra_children = Vec::new();
10752 #[cfg(feature = "extra-children")]
10753 let mut child_idx: usize = 0;
10754
10755 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
10757 let val = String::from_utf8_lossy(&attr.value);
10758 match attr.key.local_name().as_ref() {
10759 b"name" => {
10760 f_name = Some(val.into_owned());
10761 }
10762 b"cacheId" => {
10763 f_cache_id = val.parse().ok();
10764 }
10765 b"dataOnRows" => {
10766 f_data_on_rows = Some(val == "true" || val == "1");
10767 }
10768 b"dataPosition" => {
10769 f_data_position = val.parse().ok();
10770 }
10771 b"autoFormatId" => {
10772 f_auto_format_id = val.parse().ok();
10773 }
10774 b"applyNumberFormats" => {
10775 f_apply_number_formats = Some(val == "true" || val == "1");
10776 }
10777 b"applyBorderFormats" => {
10778 f_apply_border_formats = Some(val == "true" || val == "1");
10779 }
10780 b"applyFontFormats" => {
10781 f_apply_font_formats = Some(val == "true" || val == "1");
10782 }
10783 b"applyPatternFormats" => {
10784 f_apply_pattern_formats = Some(val == "true" || val == "1");
10785 }
10786 b"applyAlignmentFormats" => {
10787 f_apply_alignment_formats = Some(val == "true" || val == "1");
10788 }
10789 b"applyWidthHeightFormats" => {
10790 f_apply_width_height_formats = Some(val == "true" || val == "1");
10791 }
10792 b"dataCaption" => {
10793 f_data_caption = Some(val.into_owned());
10794 }
10795 b"grandTotalCaption" => {
10796 f_grand_total_caption = Some(val.into_owned());
10797 }
10798 b"errorCaption" => {
10799 f_error_caption = Some(val.into_owned());
10800 }
10801 b"showError" => {
10802 f_show_error = Some(val == "true" || val == "1");
10803 }
10804 b"missingCaption" => {
10805 f_missing_caption = Some(val.into_owned());
10806 }
10807 b"showMissing" => {
10808 f_show_missing = Some(val == "true" || val == "1");
10809 }
10810 b"pageStyle" => {
10811 f_page_style = Some(val.into_owned());
10812 }
10813 b"pivotTableStyle" => {
10814 f_pivot_table_style = Some(val.into_owned());
10815 }
10816 b"vacatedStyle" => {
10817 f_vacated_style = Some(val.into_owned());
10818 }
10819 b"tag" => {
10820 f_tag = Some(val.into_owned());
10821 }
10822 b"updatedVersion" => {
10823 f_updated_version = val.parse().ok();
10824 }
10825 b"minRefreshableVersion" => {
10826 f_min_refreshable_version = val.parse().ok();
10827 }
10828 b"asteriskTotals" => {
10829 f_asterisk_totals = Some(val == "true" || val == "1");
10830 }
10831 b"showItems" => {
10832 f_show_items = Some(val == "true" || val == "1");
10833 }
10834 b"editData" => {
10835 f_edit_data = Some(val == "true" || val == "1");
10836 }
10837 b"disableFieldList" => {
10838 f_disable_field_list = Some(val == "true" || val == "1");
10839 }
10840 b"showCalcMbrs" => {
10841 f_show_calc_mbrs = Some(val == "true" || val == "1");
10842 }
10843 b"visualTotals" => {
10844 f_visual_totals = Some(val == "true" || val == "1");
10845 }
10846 b"showMultipleLabel" => {
10847 f_show_multiple_label = Some(val == "true" || val == "1");
10848 }
10849 b"showDataDropDown" => {
10850 f_show_data_drop_down = Some(val == "true" || val == "1");
10851 }
10852 b"showDrill" => {
10853 f_show_drill = Some(val == "true" || val == "1");
10854 }
10855 b"printDrill" => {
10856 f_print_drill = Some(val == "true" || val == "1");
10857 }
10858 b"showMemberPropertyTips" => {
10859 f_show_member_property_tips = Some(val == "true" || val == "1");
10860 }
10861 b"showDataTips" => {
10862 f_show_data_tips = Some(val == "true" || val == "1");
10863 }
10864 b"enableWizard" => {
10865 f_enable_wizard = Some(val == "true" || val == "1");
10866 }
10867 b"enableDrill" => {
10868 f_enable_drill = Some(val == "true" || val == "1");
10869 }
10870 b"enableFieldProperties" => {
10871 f_enable_field_properties = Some(val == "true" || val == "1");
10872 }
10873 b"preserveFormatting" => {
10874 f_preserve_formatting = Some(val == "true" || val == "1");
10875 }
10876 b"useAutoFormatting" => {
10877 f_use_auto_formatting = Some(val == "true" || val == "1");
10878 }
10879 b"pageWrap" => {
10880 f_page_wrap = val.parse().ok();
10881 }
10882 b"pageOverThenDown" => {
10883 f_page_over_then_down = Some(val == "true" || val == "1");
10884 }
10885 b"subtotalHiddenItems" => {
10886 f_subtotal_hidden_items = Some(val == "true" || val == "1");
10887 }
10888 b"rowGrandTotals" => {
10889 f_row_grand_totals = Some(val == "true" || val == "1");
10890 }
10891 b"colGrandTotals" => {
10892 f_col_grand_totals = Some(val == "true" || val == "1");
10893 }
10894 b"fieldPrintTitles" => {
10895 f_field_print_titles = Some(val == "true" || val == "1");
10896 }
10897 b"itemPrintTitles" => {
10898 f_item_print_titles = Some(val == "true" || val == "1");
10899 }
10900 b"mergeItem" => {
10901 f_merge_item = Some(val == "true" || val == "1");
10902 }
10903 b"showDropZones" => {
10904 f_show_drop_zones = Some(val == "true" || val == "1");
10905 }
10906 b"createdVersion" => {
10907 f_created_version = val.parse().ok();
10908 }
10909 b"indent" => {
10910 f_indent = val.parse().ok();
10911 }
10912 b"showEmptyRow" => {
10913 f_show_empty_row = Some(val == "true" || val == "1");
10914 }
10915 b"showEmptyCol" => {
10916 f_show_empty_col = Some(val == "true" || val == "1");
10917 }
10918 b"showHeaders" => {
10919 f_show_headers = Some(val == "true" || val == "1");
10920 }
10921 b"compact" => {
10922 f_compact = Some(val == "true" || val == "1");
10923 }
10924 b"outline" => {
10925 f_outline = Some(val == "true" || val == "1");
10926 }
10927 b"outlineData" => {
10928 f_outline_data = Some(val == "true" || val == "1");
10929 }
10930 b"compactData" => {
10931 f_compact_data = Some(val == "true" || val == "1");
10932 }
10933 b"published" => {
10934 f_published = Some(val == "true" || val == "1");
10935 }
10936 b"gridDropZones" => {
10937 f_grid_drop_zones = Some(val == "true" || val == "1");
10938 }
10939 b"immersive" => {
10940 f_immersive = Some(val == "true" || val == "1");
10941 }
10942 b"multipleFieldFilters" => {
10943 f_multiple_field_filters = Some(val == "true" || val == "1");
10944 }
10945 b"chartFormat" => {
10946 f_chart_format = val.parse().ok();
10947 }
10948 b"rowHeaderCaption" => {
10949 f_row_header_caption = Some(val.into_owned());
10950 }
10951 b"colHeaderCaption" => {
10952 f_col_header_caption = Some(val.into_owned());
10953 }
10954 b"fieldListSortAscending" => {
10955 f_field_list_sort_ascending = Some(val == "true" || val == "1");
10956 }
10957 b"mdxSubqueries" => {
10958 f_mdx_subqueries = Some(val == "true" || val == "1");
10959 }
10960 b"customListSort" => {
10961 f_custom_list_sort = Some(val == "true" || val == "1");
10962 }
10963 #[cfg(feature = "extra-attrs")]
10964 unknown => {
10965 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
10966 extra_attrs.insert(key, val.into_owned());
10967 }
10968 #[cfg(not(feature = "extra-attrs"))]
10969 _ => {}
10970 }
10971 }
10972
10973 if !is_empty {
10975 let mut buf = Vec::new();
10976 loop {
10977 match reader.read_event_into(&mut buf)? {
10978 Event::Start(e) => {
10979 match e.local_name().as_ref() {
10980 b"location" => {
10981 f_location =
10982 Some(Box::new(PivotLocation::from_xml(reader, &e, false)?));
10983 #[cfg(feature = "extra-children")]
10984 {
10985 child_idx += 1;
10986 }
10987 }
10988 b"pivotFields" => {
10989 f_pivot_fields =
10990 Some(Box::new(PivotFields::from_xml(reader, &e, false)?));
10991 #[cfg(feature = "extra-children")]
10992 {
10993 child_idx += 1;
10994 }
10995 }
10996 b"rowFields" => {
10997 f_row_fields =
10998 Some(Box::new(RowFields::from_xml(reader, &e, false)?));
10999 #[cfg(feature = "extra-children")]
11000 {
11001 child_idx += 1;
11002 }
11003 }
11004 b"rowItems" => {
11005 f_row_items =
11006 Some(Box::new(CTRowItems::from_xml(reader, &e, false)?));
11007 #[cfg(feature = "extra-children")]
11008 {
11009 child_idx += 1;
11010 }
11011 }
11012 b"colFields" => {
11013 f_col_fields =
11014 Some(Box::new(ColFields::from_xml(reader, &e, false)?));
11015 #[cfg(feature = "extra-children")]
11016 {
11017 child_idx += 1;
11018 }
11019 }
11020 b"colItems" => {
11021 f_col_items =
11022 Some(Box::new(CTColItems::from_xml(reader, &e, false)?));
11023 #[cfg(feature = "extra-children")]
11024 {
11025 child_idx += 1;
11026 }
11027 }
11028 b"pageFields" => {
11029 f_page_fields =
11030 Some(Box::new(PageFields::from_xml(reader, &e, false)?));
11031 #[cfg(feature = "extra-children")]
11032 {
11033 child_idx += 1;
11034 }
11035 }
11036 b"dataFields" => {
11037 f_data_fields =
11038 Some(Box::new(DataFields::from_xml(reader, &e, false)?));
11039 #[cfg(feature = "extra-children")]
11040 {
11041 child_idx += 1;
11042 }
11043 }
11044 b"formats" => {
11045 f_formats = Some(Box::new(CTFormats::from_xml(reader, &e, false)?));
11046 #[cfg(feature = "extra-children")]
11047 {
11048 child_idx += 1;
11049 }
11050 }
11051 b"conditionalFormats" => {
11052 f_conditional_formats = Some(Box::new(
11053 CTConditionalFormats::from_xml(reader, &e, false)?,
11054 ));
11055 #[cfg(feature = "extra-children")]
11056 {
11057 child_idx += 1;
11058 }
11059 }
11060 b"chartFormats" => {
11061 f_chart_formats =
11062 Some(Box::new(CTChartFormats::from_xml(reader, &e, false)?));
11063 #[cfg(feature = "extra-children")]
11064 {
11065 child_idx += 1;
11066 }
11067 }
11068 b"pivotHierarchies" => {
11069 f_pivot_hierarchies = Some(Box::new(CTPivotHierarchies::from_xml(
11070 reader, &e, false,
11071 )?));
11072 #[cfg(feature = "extra-children")]
11073 {
11074 child_idx += 1;
11075 }
11076 }
11077 b"pivotTableStyleInfo" => {
11078 f_pivot_table_style_info =
11079 Some(Box::new(CTPivotTableStyle::from_xml(reader, &e, false)?));
11080 #[cfg(feature = "extra-children")]
11081 {
11082 child_idx += 1;
11083 }
11084 }
11085 b"filters" => {
11086 f_filters =
11087 Some(Box::new(PivotFilters::from_xml(reader, &e, false)?));
11088 #[cfg(feature = "extra-children")]
11089 {
11090 child_idx += 1;
11091 }
11092 }
11093 b"rowHierarchiesUsage" => {
11094 f_row_hierarchies_usage = Some(Box::new(
11095 CTRowHierarchiesUsage::from_xml(reader, &e, false)?,
11096 ));
11097 #[cfg(feature = "extra-children")]
11098 {
11099 child_idx += 1;
11100 }
11101 }
11102 b"colHierarchiesUsage" => {
11103 f_col_hierarchies_usage = Some(Box::new(
11104 CTColHierarchiesUsage::from_xml(reader, &e, false)?,
11105 ));
11106 #[cfg(feature = "extra-children")]
11107 {
11108 child_idx += 1;
11109 }
11110 }
11111 b"extLst" => {
11112 f_extension_list =
11113 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
11114 #[cfg(feature = "extra-children")]
11115 {
11116 child_idx += 1;
11117 }
11118 }
11119 #[cfg(feature = "extra-children")]
11120 _ => {
11121 let elem = RawXmlElement::from_reader(reader, &e)?;
11123 extra_children.push(PositionedNode::new(
11124 child_idx,
11125 RawXmlNode::Element(elem),
11126 ));
11127 child_idx += 1;
11128 }
11129 #[cfg(not(feature = "extra-children"))]
11130 _ => {
11131 skip_element(reader)?;
11133 }
11134 }
11135 }
11136 Event::Empty(e) => {
11137 match e.local_name().as_ref() {
11138 b"location" => {
11139 f_location =
11140 Some(Box::new(PivotLocation::from_xml(reader, &e, true)?));
11141 #[cfg(feature = "extra-children")]
11142 {
11143 child_idx += 1;
11144 }
11145 }
11146 b"pivotFields" => {
11147 f_pivot_fields =
11148 Some(Box::new(PivotFields::from_xml(reader, &e, true)?));
11149 #[cfg(feature = "extra-children")]
11150 {
11151 child_idx += 1;
11152 }
11153 }
11154 b"rowFields" => {
11155 f_row_fields =
11156 Some(Box::new(RowFields::from_xml(reader, &e, true)?));
11157 #[cfg(feature = "extra-children")]
11158 {
11159 child_idx += 1;
11160 }
11161 }
11162 b"rowItems" => {
11163 f_row_items =
11164 Some(Box::new(CTRowItems::from_xml(reader, &e, true)?));
11165 #[cfg(feature = "extra-children")]
11166 {
11167 child_idx += 1;
11168 }
11169 }
11170 b"colFields" => {
11171 f_col_fields =
11172 Some(Box::new(ColFields::from_xml(reader, &e, true)?));
11173 #[cfg(feature = "extra-children")]
11174 {
11175 child_idx += 1;
11176 }
11177 }
11178 b"colItems" => {
11179 f_col_items =
11180 Some(Box::new(CTColItems::from_xml(reader, &e, true)?));
11181 #[cfg(feature = "extra-children")]
11182 {
11183 child_idx += 1;
11184 }
11185 }
11186 b"pageFields" => {
11187 f_page_fields =
11188 Some(Box::new(PageFields::from_xml(reader, &e, true)?));
11189 #[cfg(feature = "extra-children")]
11190 {
11191 child_idx += 1;
11192 }
11193 }
11194 b"dataFields" => {
11195 f_data_fields =
11196 Some(Box::new(DataFields::from_xml(reader, &e, true)?));
11197 #[cfg(feature = "extra-children")]
11198 {
11199 child_idx += 1;
11200 }
11201 }
11202 b"formats" => {
11203 f_formats = Some(Box::new(CTFormats::from_xml(reader, &e, true)?));
11204 #[cfg(feature = "extra-children")]
11205 {
11206 child_idx += 1;
11207 }
11208 }
11209 b"conditionalFormats" => {
11210 f_conditional_formats = Some(Box::new(
11211 CTConditionalFormats::from_xml(reader, &e, true)?,
11212 ));
11213 #[cfg(feature = "extra-children")]
11214 {
11215 child_idx += 1;
11216 }
11217 }
11218 b"chartFormats" => {
11219 f_chart_formats =
11220 Some(Box::new(CTChartFormats::from_xml(reader, &e, true)?));
11221 #[cfg(feature = "extra-children")]
11222 {
11223 child_idx += 1;
11224 }
11225 }
11226 b"pivotHierarchies" => {
11227 f_pivot_hierarchies =
11228 Some(Box::new(CTPivotHierarchies::from_xml(reader, &e, true)?));
11229 #[cfg(feature = "extra-children")]
11230 {
11231 child_idx += 1;
11232 }
11233 }
11234 b"pivotTableStyleInfo" => {
11235 f_pivot_table_style_info =
11236 Some(Box::new(CTPivotTableStyle::from_xml(reader, &e, true)?));
11237 #[cfg(feature = "extra-children")]
11238 {
11239 child_idx += 1;
11240 }
11241 }
11242 b"filters" => {
11243 f_filters =
11244 Some(Box::new(PivotFilters::from_xml(reader, &e, true)?));
11245 #[cfg(feature = "extra-children")]
11246 {
11247 child_idx += 1;
11248 }
11249 }
11250 b"rowHierarchiesUsage" => {
11251 f_row_hierarchies_usage = Some(Box::new(
11252 CTRowHierarchiesUsage::from_xml(reader, &e, true)?,
11253 ));
11254 #[cfg(feature = "extra-children")]
11255 {
11256 child_idx += 1;
11257 }
11258 }
11259 b"colHierarchiesUsage" => {
11260 f_col_hierarchies_usage = Some(Box::new(
11261 CTColHierarchiesUsage::from_xml(reader, &e, true)?,
11262 ));
11263 #[cfg(feature = "extra-children")]
11264 {
11265 child_idx += 1;
11266 }
11267 }
11268 b"extLst" => {
11269 f_extension_list =
11270 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
11271 #[cfg(feature = "extra-children")]
11272 {
11273 child_idx += 1;
11274 }
11275 }
11276 #[cfg(feature = "extra-children")]
11277 _ => {
11278 let elem = RawXmlElement::from_empty(&e);
11280 extra_children.push(PositionedNode::new(
11281 child_idx,
11282 RawXmlNode::Element(elem),
11283 ));
11284 child_idx += 1;
11285 }
11286 #[cfg(not(feature = "extra-children"))]
11287 _ => {}
11288 }
11289 }
11290 Event::End(_) => break,
11291 Event::Eof => break,
11292 _ => {}
11293 }
11294 buf.clear();
11295 }
11296 }
11297
11298 Ok(Self {
11299 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
11300 cache_id: f_cache_id
11301 .ok_or_else(|| ParseError::MissingAttribute("cacheId".to_string()))?,
11302 data_on_rows: f_data_on_rows,
11303 data_position: f_data_position,
11304 auto_format_id: f_auto_format_id,
11305 apply_number_formats: f_apply_number_formats,
11306 apply_border_formats: f_apply_border_formats,
11307 apply_font_formats: f_apply_font_formats,
11308 apply_pattern_formats: f_apply_pattern_formats,
11309 apply_alignment_formats: f_apply_alignment_formats,
11310 apply_width_height_formats: f_apply_width_height_formats,
11311 data_caption: f_data_caption
11312 .ok_or_else(|| ParseError::MissingAttribute("dataCaption".to_string()))?,
11313 grand_total_caption: f_grand_total_caption,
11314 error_caption: f_error_caption,
11315 show_error: f_show_error,
11316 missing_caption: f_missing_caption,
11317 show_missing: f_show_missing,
11318 page_style: f_page_style,
11319 pivot_table_style: f_pivot_table_style,
11320 vacated_style: f_vacated_style,
11321 tag: f_tag,
11322 updated_version: f_updated_version,
11323 min_refreshable_version: f_min_refreshable_version,
11324 asterisk_totals: f_asterisk_totals,
11325 show_items: f_show_items,
11326 edit_data: f_edit_data,
11327 disable_field_list: f_disable_field_list,
11328 show_calc_mbrs: f_show_calc_mbrs,
11329 visual_totals: f_visual_totals,
11330 show_multiple_label: f_show_multiple_label,
11331 show_data_drop_down: f_show_data_drop_down,
11332 show_drill: f_show_drill,
11333 print_drill: f_print_drill,
11334 show_member_property_tips: f_show_member_property_tips,
11335 show_data_tips: f_show_data_tips,
11336 enable_wizard: f_enable_wizard,
11337 enable_drill: f_enable_drill,
11338 enable_field_properties: f_enable_field_properties,
11339 preserve_formatting: f_preserve_formatting,
11340 use_auto_formatting: f_use_auto_formatting,
11341 page_wrap: f_page_wrap,
11342 page_over_then_down: f_page_over_then_down,
11343 subtotal_hidden_items: f_subtotal_hidden_items,
11344 row_grand_totals: f_row_grand_totals,
11345 col_grand_totals: f_col_grand_totals,
11346 field_print_titles: f_field_print_titles,
11347 item_print_titles: f_item_print_titles,
11348 merge_item: f_merge_item,
11349 show_drop_zones: f_show_drop_zones,
11350 created_version: f_created_version,
11351 indent: f_indent,
11352 show_empty_row: f_show_empty_row,
11353 show_empty_col: f_show_empty_col,
11354 show_headers: f_show_headers,
11355 compact: f_compact,
11356 outline: f_outline,
11357 outline_data: f_outline_data,
11358 compact_data: f_compact_data,
11359 published: f_published,
11360 grid_drop_zones: f_grid_drop_zones,
11361 immersive: f_immersive,
11362 multiple_field_filters: f_multiple_field_filters,
11363 chart_format: f_chart_format,
11364 row_header_caption: f_row_header_caption,
11365 col_header_caption: f_col_header_caption,
11366 field_list_sort_ascending: f_field_list_sort_ascending,
11367 mdx_subqueries: f_mdx_subqueries,
11368 custom_list_sort: f_custom_list_sort,
11369 location: f_location
11370 .ok_or_else(|| ParseError::MissingAttribute("location".to_string()))?,
11371 pivot_fields: f_pivot_fields,
11372 row_fields: f_row_fields,
11373 row_items: f_row_items,
11374 col_fields: f_col_fields,
11375 col_items: f_col_items,
11376 page_fields: f_page_fields,
11377 data_fields: f_data_fields,
11378 formats: f_formats,
11379 conditional_formats: f_conditional_formats,
11380 chart_formats: f_chart_formats,
11381 pivot_hierarchies: f_pivot_hierarchies,
11382 pivot_table_style_info: f_pivot_table_style_info,
11383 filters: f_filters,
11384 row_hierarchies_usage: f_row_hierarchies_usage,
11385 col_hierarchies_usage: f_col_hierarchies_usage,
11386 extension_list: f_extension_list,
11387 #[cfg(feature = "extra-attrs")]
11388 extra_attrs,
11389 #[cfg(feature = "extra-children")]
11390 extra_children,
11391 })
11392 }
11393}
11394
11395impl FromXml for PivotLocation {
11396 fn from_xml<R: BufRead>(
11397 reader: &mut Reader<R>,
11398 start_tag: &BytesStart,
11399 is_empty: bool,
11400 ) -> Result<Self, ParseError> {
11401 let mut f_reference: Option<Reference> = None;
11402 let mut f_first_header_row: Option<u32> = None;
11403 let mut f_first_data_row: Option<u32> = None;
11404 let mut f_first_data_col: Option<u32> = None;
11405 let mut f_row_page_count = None;
11406 let mut f_col_page_count = None;
11407 #[cfg(feature = "extra-attrs")]
11408 let mut extra_attrs = std::collections::HashMap::new();
11409
11410 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
11412 let val = String::from_utf8_lossy(&attr.value);
11413 match attr.key.local_name().as_ref() {
11414 b"ref" => {
11415 f_reference = Some(val.into_owned());
11416 }
11417 b"firstHeaderRow" => {
11418 f_first_header_row = val.parse().ok();
11419 }
11420 b"firstDataRow" => {
11421 f_first_data_row = val.parse().ok();
11422 }
11423 b"firstDataCol" => {
11424 f_first_data_col = val.parse().ok();
11425 }
11426 b"rowPageCount" => {
11427 f_row_page_count = val.parse().ok();
11428 }
11429 b"colPageCount" => {
11430 f_col_page_count = val.parse().ok();
11431 }
11432 #[cfg(feature = "extra-attrs")]
11433 unknown => {
11434 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
11435 extra_attrs.insert(key, val.into_owned());
11436 }
11437 #[cfg(not(feature = "extra-attrs"))]
11438 _ => {}
11439 }
11440 }
11441
11442 if !is_empty {
11443 let mut buf = Vec::new();
11444 loop {
11445 match reader.read_event_into(&mut buf)? {
11446 Event::End(_) => break,
11447 Event::Eof => break,
11448 _ => {}
11449 }
11450 buf.clear();
11451 }
11452 }
11453
11454 Ok(Self {
11455 reference: f_reference
11456 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
11457 first_header_row: f_first_header_row
11458 .ok_or_else(|| ParseError::MissingAttribute("firstHeaderRow".to_string()))?,
11459 first_data_row: f_first_data_row
11460 .ok_or_else(|| ParseError::MissingAttribute("firstDataRow".to_string()))?,
11461 first_data_col: f_first_data_col
11462 .ok_or_else(|| ParseError::MissingAttribute("firstDataCol".to_string()))?,
11463 row_page_count: f_row_page_count,
11464 col_page_count: f_col_page_count,
11465 #[cfg(feature = "extra-attrs")]
11466 extra_attrs,
11467 })
11468 }
11469}
11470
11471impl FromXml for PivotFields {
11472 fn from_xml<R: BufRead>(
11473 reader: &mut Reader<R>,
11474 start_tag: &BytesStart,
11475 is_empty: bool,
11476 ) -> Result<Self, ParseError> {
11477 let mut f_count = None;
11478 let mut f_pivot_field = Vec::new();
11479 #[cfg(feature = "extra-attrs")]
11480 let mut extra_attrs = std::collections::HashMap::new();
11481 #[cfg(feature = "extra-children")]
11482 let mut extra_children = Vec::new();
11483 #[cfg(feature = "extra-children")]
11484 let mut child_idx: usize = 0;
11485
11486 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
11488 let val = String::from_utf8_lossy(&attr.value);
11489 match attr.key.local_name().as_ref() {
11490 b"count" => {
11491 f_count = val.parse().ok();
11492 }
11493 #[cfg(feature = "extra-attrs")]
11494 unknown => {
11495 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
11496 extra_attrs.insert(key, val.into_owned());
11497 }
11498 #[cfg(not(feature = "extra-attrs"))]
11499 _ => {}
11500 }
11501 }
11502
11503 if !is_empty {
11505 let mut buf = Vec::new();
11506 loop {
11507 match reader.read_event_into(&mut buf)? {
11508 Event::Start(e) => {
11509 match e.local_name().as_ref() {
11510 b"pivotField" => {
11511 f_pivot_field.push(PivotField::from_xml(reader, &e, false)?);
11512 #[cfg(feature = "extra-children")]
11513 {
11514 child_idx += 1;
11515 }
11516 }
11517 #[cfg(feature = "extra-children")]
11518 _ => {
11519 let elem = RawXmlElement::from_reader(reader, &e)?;
11521 extra_children.push(PositionedNode::new(
11522 child_idx,
11523 RawXmlNode::Element(elem),
11524 ));
11525 child_idx += 1;
11526 }
11527 #[cfg(not(feature = "extra-children"))]
11528 _ => {
11529 skip_element(reader)?;
11531 }
11532 }
11533 }
11534 Event::Empty(e) => {
11535 match e.local_name().as_ref() {
11536 b"pivotField" => {
11537 f_pivot_field.push(PivotField::from_xml(reader, &e, true)?);
11538 #[cfg(feature = "extra-children")]
11539 {
11540 child_idx += 1;
11541 }
11542 }
11543 #[cfg(feature = "extra-children")]
11544 _ => {
11545 let elem = RawXmlElement::from_empty(&e);
11547 extra_children.push(PositionedNode::new(
11548 child_idx,
11549 RawXmlNode::Element(elem),
11550 ));
11551 child_idx += 1;
11552 }
11553 #[cfg(not(feature = "extra-children"))]
11554 _ => {}
11555 }
11556 }
11557 Event::End(_) => break,
11558 Event::Eof => break,
11559 _ => {}
11560 }
11561 buf.clear();
11562 }
11563 }
11564
11565 Ok(Self {
11566 count: f_count,
11567 pivot_field: f_pivot_field,
11568 #[cfg(feature = "extra-attrs")]
11569 extra_attrs,
11570 #[cfg(feature = "extra-children")]
11571 extra_children,
11572 })
11573 }
11574}
11575
11576impl FromXml for PivotField {
11577 fn from_xml<R: BufRead>(
11578 reader: &mut Reader<R>,
11579 start_tag: &BytesStart,
11580 is_empty: bool,
11581 ) -> Result<Self, ParseError> {
11582 let mut f_name = None;
11583 let mut f_axis = None;
11584 let mut f_data_field = None;
11585 let mut f_subtotal_caption = None;
11586 let mut f_show_drop_downs = None;
11587 let mut f_hidden_level = None;
11588 let mut f_unique_member_property = None;
11589 let mut f_compact = None;
11590 let mut f_all_drilled = None;
11591 let mut f_number_format_id = None;
11592 let mut f_outline = None;
11593 let mut f_subtotal_top = None;
11594 let mut f_drag_to_row = None;
11595 let mut f_drag_to_col = None;
11596 let mut f_multiple_item_selection_allowed = None;
11597 let mut f_drag_to_page = None;
11598 let mut f_drag_to_data = None;
11599 let mut f_drag_off = None;
11600 let mut f_show_all = None;
11601 let mut f_insert_blank_row = None;
11602 let mut f_server_field = None;
11603 let mut f_insert_page_break = None;
11604 let mut f_auto_show = None;
11605 let mut f_top_auto_show = None;
11606 let mut f_hide_new_items = None;
11607 let mut f_measure_filter = None;
11608 let mut f_include_new_items_in_filter = None;
11609 let mut f_item_page_count = None;
11610 let mut f_sort_type = None;
11611 let mut f_data_source_sort = None;
11612 let mut f_non_auto_sort_default = None;
11613 let mut f_rank_by = None;
11614 let mut f_default_subtotal = None;
11615 let mut f_sum_subtotal = None;
11616 let mut f_count_a_subtotal = None;
11617 let mut f_avg_subtotal = None;
11618 let mut f_max_subtotal = None;
11619 let mut f_min_subtotal = None;
11620 let mut f_product_subtotal = None;
11621 let mut f_count_subtotal = None;
11622 let mut f_std_dev_subtotal = None;
11623 let mut f_std_dev_p_subtotal = None;
11624 let mut f_var_subtotal = None;
11625 let mut f_var_p_subtotal = None;
11626 let mut f_show_prop_cell = None;
11627 let mut f_show_prop_tip = None;
11628 let mut f_show_prop_as_caption = None;
11629 let mut f_default_attribute_drill_state = None;
11630 let mut f_items = None;
11631 let mut f_auto_sort_scope = None;
11632 let mut f_extension_list = None;
11633 #[cfg(feature = "extra-attrs")]
11634 let mut extra_attrs = std::collections::HashMap::new();
11635 #[cfg(feature = "extra-children")]
11636 let mut extra_children = Vec::new();
11637 #[cfg(feature = "extra-children")]
11638 let mut child_idx: usize = 0;
11639
11640 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
11642 let val = String::from_utf8_lossy(&attr.value);
11643 match attr.key.local_name().as_ref() {
11644 b"name" => {
11645 f_name = Some(val.into_owned());
11646 }
11647 b"axis" => {
11648 f_axis = val.parse().ok();
11649 }
11650 b"dataField" => {
11651 f_data_field = Some(val == "true" || val == "1");
11652 }
11653 b"subtotalCaption" => {
11654 f_subtotal_caption = Some(val.into_owned());
11655 }
11656 b"showDropDowns" => {
11657 f_show_drop_downs = Some(val == "true" || val == "1");
11658 }
11659 b"hiddenLevel" => {
11660 f_hidden_level = Some(val == "true" || val == "1");
11661 }
11662 b"uniqueMemberProperty" => {
11663 f_unique_member_property = Some(val.into_owned());
11664 }
11665 b"compact" => {
11666 f_compact = Some(val == "true" || val == "1");
11667 }
11668 b"allDrilled" => {
11669 f_all_drilled = Some(val == "true" || val == "1");
11670 }
11671 b"numFmtId" => {
11672 f_number_format_id = val.parse().ok();
11673 }
11674 b"outline" => {
11675 f_outline = Some(val == "true" || val == "1");
11676 }
11677 b"subtotalTop" => {
11678 f_subtotal_top = Some(val == "true" || val == "1");
11679 }
11680 b"dragToRow" => {
11681 f_drag_to_row = Some(val == "true" || val == "1");
11682 }
11683 b"dragToCol" => {
11684 f_drag_to_col = Some(val == "true" || val == "1");
11685 }
11686 b"multipleItemSelectionAllowed" => {
11687 f_multiple_item_selection_allowed = Some(val == "true" || val == "1");
11688 }
11689 b"dragToPage" => {
11690 f_drag_to_page = Some(val == "true" || val == "1");
11691 }
11692 b"dragToData" => {
11693 f_drag_to_data = Some(val == "true" || val == "1");
11694 }
11695 b"dragOff" => {
11696 f_drag_off = Some(val == "true" || val == "1");
11697 }
11698 b"showAll" => {
11699 f_show_all = Some(val == "true" || val == "1");
11700 }
11701 b"insertBlankRow" => {
11702 f_insert_blank_row = Some(val == "true" || val == "1");
11703 }
11704 b"serverField" => {
11705 f_server_field = Some(val == "true" || val == "1");
11706 }
11707 b"insertPageBreak" => {
11708 f_insert_page_break = Some(val == "true" || val == "1");
11709 }
11710 b"autoShow" => {
11711 f_auto_show = Some(val == "true" || val == "1");
11712 }
11713 b"topAutoShow" => {
11714 f_top_auto_show = Some(val == "true" || val == "1");
11715 }
11716 b"hideNewItems" => {
11717 f_hide_new_items = Some(val == "true" || val == "1");
11718 }
11719 b"measureFilter" => {
11720 f_measure_filter = Some(val == "true" || val == "1");
11721 }
11722 b"includeNewItemsInFilter" => {
11723 f_include_new_items_in_filter = Some(val == "true" || val == "1");
11724 }
11725 b"itemPageCount" => {
11726 f_item_page_count = val.parse().ok();
11727 }
11728 b"sortType" => {
11729 f_sort_type = val.parse().ok();
11730 }
11731 b"dataSourceSort" => {
11732 f_data_source_sort = Some(val == "true" || val == "1");
11733 }
11734 b"nonAutoSortDefault" => {
11735 f_non_auto_sort_default = Some(val == "true" || val == "1");
11736 }
11737 b"rankBy" => {
11738 f_rank_by = val.parse().ok();
11739 }
11740 b"defaultSubtotal" => {
11741 f_default_subtotal = Some(val == "true" || val == "1");
11742 }
11743 b"sumSubtotal" => {
11744 f_sum_subtotal = Some(val == "true" || val == "1");
11745 }
11746 b"countASubtotal" => {
11747 f_count_a_subtotal = Some(val == "true" || val == "1");
11748 }
11749 b"avgSubtotal" => {
11750 f_avg_subtotal = Some(val == "true" || val == "1");
11751 }
11752 b"maxSubtotal" => {
11753 f_max_subtotal = Some(val == "true" || val == "1");
11754 }
11755 b"minSubtotal" => {
11756 f_min_subtotal = Some(val == "true" || val == "1");
11757 }
11758 b"productSubtotal" => {
11759 f_product_subtotal = Some(val == "true" || val == "1");
11760 }
11761 b"countSubtotal" => {
11762 f_count_subtotal = Some(val == "true" || val == "1");
11763 }
11764 b"stdDevSubtotal" => {
11765 f_std_dev_subtotal = Some(val == "true" || val == "1");
11766 }
11767 b"stdDevPSubtotal" => {
11768 f_std_dev_p_subtotal = Some(val == "true" || val == "1");
11769 }
11770 b"varSubtotal" => {
11771 f_var_subtotal = Some(val == "true" || val == "1");
11772 }
11773 b"varPSubtotal" => {
11774 f_var_p_subtotal = Some(val == "true" || val == "1");
11775 }
11776 b"showPropCell" => {
11777 f_show_prop_cell = Some(val == "true" || val == "1");
11778 }
11779 b"showPropTip" => {
11780 f_show_prop_tip = Some(val == "true" || val == "1");
11781 }
11782 b"showPropAsCaption" => {
11783 f_show_prop_as_caption = Some(val == "true" || val == "1");
11784 }
11785 b"defaultAttributeDrillState" => {
11786 f_default_attribute_drill_state = Some(val == "true" || val == "1");
11787 }
11788 #[cfg(feature = "extra-attrs")]
11789 unknown => {
11790 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
11791 extra_attrs.insert(key, val.into_owned());
11792 }
11793 #[cfg(not(feature = "extra-attrs"))]
11794 _ => {}
11795 }
11796 }
11797
11798 if !is_empty {
11800 let mut buf = Vec::new();
11801 loop {
11802 match reader.read_event_into(&mut buf)? {
11803 Event::Start(e) => {
11804 match e.local_name().as_ref() {
11805 b"items" => {
11806 f_items = Some(Box::new(PivotItems::from_xml(reader, &e, false)?));
11807 #[cfg(feature = "extra-children")]
11808 {
11809 child_idx += 1;
11810 }
11811 }
11812 b"autoSortScope" => {
11813 f_auto_sort_scope =
11814 Some(Box::new(PivotArea::from_xml(reader, &e, false)?));
11815 #[cfg(feature = "extra-children")]
11816 {
11817 child_idx += 1;
11818 }
11819 }
11820 b"extLst" => {
11821 f_extension_list =
11822 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
11823 #[cfg(feature = "extra-children")]
11824 {
11825 child_idx += 1;
11826 }
11827 }
11828 #[cfg(feature = "extra-children")]
11829 _ => {
11830 let elem = RawXmlElement::from_reader(reader, &e)?;
11832 extra_children.push(PositionedNode::new(
11833 child_idx,
11834 RawXmlNode::Element(elem),
11835 ));
11836 child_idx += 1;
11837 }
11838 #[cfg(not(feature = "extra-children"))]
11839 _ => {
11840 skip_element(reader)?;
11842 }
11843 }
11844 }
11845 Event::Empty(e) => {
11846 match e.local_name().as_ref() {
11847 b"items" => {
11848 f_items = Some(Box::new(PivotItems::from_xml(reader, &e, true)?));
11849 #[cfg(feature = "extra-children")]
11850 {
11851 child_idx += 1;
11852 }
11853 }
11854 b"autoSortScope" => {
11855 f_auto_sort_scope =
11856 Some(Box::new(PivotArea::from_xml(reader, &e, true)?));
11857 #[cfg(feature = "extra-children")]
11858 {
11859 child_idx += 1;
11860 }
11861 }
11862 b"extLst" => {
11863 f_extension_list =
11864 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
11865 #[cfg(feature = "extra-children")]
11866 {
11867 child_idx += 1;
11868 }
11869 }
11870 #[cfg(feature = "extra-children")]
11871 _ => {
11872 let elem = RawXmlElement::from_empty(&e);
11874 extra_children.push(PositionedNode::new(
11875 child_idx,
11876 RawXmlNode::Element(elem),
11877 ));
11878 child_idx += 1;
11879 }
11880 #[cfg(not(feature = "extra-children"))]
11881 _ => {}
11882 }
11883 }
11884 Event::End(_) => break,
11885 Event::Eof => break,
11886 _ => {}
11887 }
11888 buf.clear();
11889 }
11890 }
11891
11892 Ok(Self {
11893 name: f_name,
11894 axis: f_axis,
11895 data_field: f_data_field,
11896 subtotal_caption: f_subtotal_caption,
11897 show_drop_downs: f_show_drop_downs,
11898 hidden_level: f_hidden_level,
11899 unique_member_property: f_unique_member_property,
11900 compact: f_compact,
11901 all_drilled: f_all_drilled,
11902 number_format_id: f_number_format_id,
11903 outline: f_outline,
11904 subtotal_top: f_subtotal_top,
11905 drag_to_row: f_drag_to_row,
11906 drag_to_col: f_drag_to_col,
11907 multiple_item_selection_allowed: f_multiple_item_selection_allowed,
11908 drag_to_page: f_drag_to_page,
11909 drag_to_data: f_drag_to_data,
11910 drag_off: f_drag_off,
11911 show_all: f_show_all,
11912 insert_blank_row: f_insert_blank_row,
11913 server_field: f_server_field,
11914 insert_page_break: f_insert_page_break,
11915 auto_show: f_auto_show,
11916 top_auto_show: f_top_auto_show,
11917 hide_new_items: f_hide_new_items,
11918 measure_filter: f_measure_filter,
11919 include_new_items_in_filter: f_include_new_items_in_filter,
11920 item_page_count: f_item_page_count,
11921 sort_type: f_sort_type,
11922 data_source_sort: f_data_source_sort,
11923 non_auto_sort_default: f_non_auto_sort_default,
11924 rank_by: f_rank_by,
11925 default_subtotal: f_default_subtotal,
11926 sum_subtotal: f_sum_subtotal,
11927 count_a_subtotal: f_count_a_subtotal,
11928 avg_subtotal: f_avg_subtotal,
11929 max_subtotal: f_max_subtotal,
11930 min_subtotal: f_min_subtotal,
11931 product_subtotal: f_product_subtotal,
11932 count_subtotal: f_count_subtotal,
11933 std_dev_subtotal: f_std_dev_subtotal,
11934 std_dev_p_subtotal: f_std_dev_p_subtotal,
11935 var_subtotal: f_var_subtotal,
11936 var_p_subtotal: f_var_p_subtotal,
11937 show_prop_cell: f_show_prop_cell,
11938 show_prop_tip: f_show_prop_tip,
11939 show_prop_as_caption: f_show_prop_as_caption,
11940 default_attribute_drill_state: f_default_attribute_drill_state,
11941 items: f_items,
11942 auto_sort_scope: f_auto_sort_scope,
11943 extension_list: f_extension_list,
11944 #[cfg(feature = "extra-attrs")]
11945 extra_attrs,
11946 #[cfg(feature = "extra-children")]
11947 extra_children,
11948 })
11949 }
11950}
11951
11952impl FromXml for PivotItems {
11953 fn from_xml<R: BufRead>(
11954 reader: &mut Reader<R>,
11955 start_tag: &BytesStart,
11956 is_empty: bool,
11957 ) -> Result<Self, ParseError> {
11958 let mut f_count = None;
11959 let mut f_item = Vec::new();
11960 #[cfg(feature = "extra-attrs")]
11961 let mut extra_attrs = std::collections::HashMap::new();
11962 #[cfg(feature = "extra-children")]
11963 let mut extra_children = Vec::new();
11964 #[cfg(feature = "extra-children")]
11965 let mut child_idx: usize = 0;
11966
11967 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
11969 let val = String::from_utf8_lossy(&attr.value);
11970 match attr.key.local_name().as_ref() {
11971 b"count" => {
11972 f_count = val.parse().ok();
11973 }
11974 #[cfg(feature = "extra-attrs")]
11975 unknown => {
11976 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
11977 extra_attrs.insert(key, val.into_owned());
11978 }
11979 #[cfg(not(feature = "extra-attrs"))]
11980 _ => {}
11981 }
11982 }
11983
11984 if !is_empty {
11986 let mut buf = Vec::new();
11987 loop {
11988 match reader.read_event_into(&mut buf)? {
11989 Event::Start(e) => {
11990 match e.local_name().as_ref() {
11991 b"item" => {
11992 f_item.push(PivotItem::from_xml(reader, &e, false)?);
11993 #[cfg(feature = "extra-children")]
11994 {
11995 child_idx += 1;
11996 }
11997 }
11998 #[cfg(feature = "extra-children")]
11999 _ => {
12000 let elem = RawXmlElement::from_reader(reader, &e)?;
12002 extra_children.push(PositionedNode::new(
12003 child_idx,
12004 RawXmlNode::Element(elem),
12005 ));
12006 child_idx += 1;
12007 }
12008 #[cfg(not(feature = "extra-children"))]
12009 _ => {
12010 skip_element(reader)?;
12012 }
12013 }
12014 }
12015 Event::Empty(e) => {
12016 match e.local_name().as_ref() {
12017 b"item" => {
12018 f_item.push(PivotItem::from_xml(reader, &e, true)?);
12019 #[cfg(feature = "extra-children")]
12020 {
12021 child_idx += 1;
12022 }
12023 }
12024 #[cfg(feature = "extra-children")]
12025 _ => {
12026 let elem = RawXmlElement::from_empty(&e);
12028 extra_children.push(PositionedNode::new(
12029 child_idx,
12030 RawXmlNode::Element(elem),
12031 ));
12032 child_idx += 1;
12033 }
12034 #[cfg(not(feature = "extra-children"))]
12035 _ => {}
12036 }
12037 }
12038 Event::End(_) => break,
12039 Event::Eof => break,
12040 _ => {}
12041 }
12042 buf.clear();
12043 }
12044 }
12045
12046 Ok(Self {
12047 count: f_count,
12048 item: f_item,
12049 #[cfg(feature = "extra-attrs")]
12050 extra_attrs,
12051 #[cfg(feature = "extra-children")]
12052 extra_children,
12053 })
12054 }
12055}
12056
12057impl FromXml for PivotItem {
12058 fn from_xml<R: BufRead>(
12059 reader: &mut Reader<R>,
12060 start_tag: &BytesStart,
12061 is_empty: bool,
12062 ) -> Result<Self, ParseError> {
12063 let mut f_n = None;
12064 let mut f_cell_type = None;
12065 let mut f_height = None;
12066 let mut f_style_index = None;
12067 let mut f_sd = None;
12068 let mut f_formula = None;
12069 let mut f_m = None;
12070 let mut f_cells = None;
12071 let mut f_x = None;
12072 let mut f_d = None;
12073 let mut f_e = None;
12074 #[cfg(feature = "extra-attrs")]
12075 let mut extra_attrs = std::collections::HashMap::new();
12076
12077 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
12079 let val = String::from_utf8_lossy(&attr.value);
12080 match attr.key.local_name().as_ref() {
12081 b"n" => {
12082 f_n = Some(val.into_owned());
12083 }
12084 b"t" => {
12085 f_cell_type = val.parse().ok();
12086 }
12087 b"h" => {
12088 f_height = Some(val == "true" || val == "1");
12089 }
12090 b"s" => {
12091 f_style_index = Some(val == "true" || val == "1");
12092 }
12093 b"sd" => {
12094 f_sd = Some(val == "true" || val == "1");
12095 }
12096 b"f" => {
12097 f_formula = Some(val == "true" || val == "1");
12098 }
12099 b"m" => {
12100 f_m = Some(val == "true" || val == "1");
12101 }
12102 b"c" => {
12103 f_cells = Some(val == "true" || val == "1");
12104 }
12105 b"x" => {
12106 f_x = val.parse().ok();
12107 }
12108 b"d" => {
12109 f_d = Some(val == "true" || val == "1");
12110 }
12111 b"e" => {
12112 f_e = Some(val == "true" || val == "1");
12113 }
12114 #[cfg(feature = "extra-attrs")]
12115 unknown => {
12116 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
12117 extra_attrs.insert(key, val.into_owned());
12118 }
12119 #[cfg(not(feature = "extra-attrs"))]
12120 _ => {}
12121 }
12122 }
12123
12124 if !is_empty {
12125 let mut buf = Vec::new();
12126 loop {
12127 match reader.read_event_into(&mut buf)? {
12128 Event::End(_) => break,
12129 Event::Eof => break,
12130 _ => {}
12131 }
12132 buf.clear();
12133 }
12134 }
12135
12136 Ok(Self {
12137 n: f_n,
12138 cell_type: f_cell_type,
12139 height: f_height,
12140 style_index: f_style_index,
12141 sd: f_sd,
12142 formula: f_formula,
12143 m: f_m,
12144 cells: f_cells,
12145 x: f_x,
12146 d: f_d,
12147 e: f_e,
12148 #[cfg(feature = "extra-attrs")]
12149 extra_attrs,
12150 })
12151 }
12152}
12153
12154impl FromXml for PageFields {
12155 fn from_xml<R: BufRead>(
12156 reader: &mut Reader<R>,
12157 start_tag: &BytesStart,
12158 is_empty: bool,
12159 ) -> Result<Self, ParseError> {
12160 let mut f_count = None;
12161 let mut f_page_field = Vec::new();
12162 #[cfg(feature = "extra-attrs")]
12163 let mut extra_attrs = std::collections::HashMap::new();
12164 #[cfg(feature = "extra-children")]
12165 let mut extra_children = Vec::new();
12166 #[cfg(feature = "extra-children")]
12167 let mut child_idx: usize = 0;
12168
12169 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
12171 let val = String::from_utf8_lossy(&attr.value);
12172 match attr.key.local_name().as_ref() {
12173 b"count" => {
12174 f_count = val.parse().ok();
12175 }
12176 #[cfg(feature = "extra-attrs")]
12177 unknown => {
12178 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
12179 extra_attrs.insert(key, val.into_owned());
12180 }
12181 #[cfg(not(feature = "extra-attrs"))]
12182 _ => {}
12183 }
12184 }
12185
12186 if !is_empty {
12188 let mut buf = Vec::new();
12189 loop {
12190 match reader.read_event_into(&mut buf)? {
12191 Event::Start(e) => {
12192 match e.local_name().as_ref() {
12193 b"pageField" => {
12194 f_page_field.push(PageField::from_xml(reader, &e, false)?);
12195 #[cfg(feature = "extra-children")]
12196 {
12197 child_idx += 1;
12198 }
12199 }
12200 #[cfg(feature = "extra-children")]
12201 _ => {
12202 let elem = RawXmlElement::from_reader(reader, &e)?;
12204 extra_children.push(PositionedNode::new(
12205 child_idx,
12206 RawXmlNode::Element(elem),
12207 ));
12208 child_idx += 1;
12209 }
12210 #[cfg(not(feature = "extra-children"))]
12211 _ => {
12212 skip_element(reader)?;
12214 }
12215 }
12216 }
12217 Event::Empty(e) => {
12218 match e.local_name().as_ref() {
12219 b"pageField" => {
12220 f_page_field.push(PageField::from_xml(reader, &e, true)?);
12221 #[cfg(feature = "extra-children")]
12222 {
12223 child_idx += 1;
12224 }
12225 }
12226 #[cfg(feature = "extra-children")]
12227 _ => {
12228 let elem = RawXmlElement::from_empty(&e);
12230 extra_children.push(PositionedNode::new(
12231 child_idx,
12232 RawXmlNode::Element(elem),
12233 ));
12234 child_idx += 1;
12235 }
12236 #[cfg(not(feature = "extra-children"))]
12237 _ => {}
12238 }
12239 }
12240 Event::End(_) => break,
12241 Event::Eof => break,
12242 _ => {}
12243 }
12244 buf.clear();
12245 }
12246 }
12247
12248 Ok(Self {
12249 count: f_count,
12250 page_field: f_page_field,
12251 #[cfg(feature = "extra-attrs")]
12252 extra_attrs,
12253 #[cfg(feature = "extra-children")]
12254 extra_children,
12255 })
12256 }
12257}
12258
12259impl FromXml for PageField {
12260 fn from_xml<R: BufRead>(
12261 reader: &mut Reader<R>,
12262 start_tag: &BytesStart,
12263 is_empty: bool,
12264 ) -> Result<Self, ParseError> {
12265 let mut f_fld: Option<i32> = None;
12266 let mut f_item = None;
12267 let mut f_hier = None;
12268 let mut f_name = None;
12269 let mut f_cap = None;
12270 let mut f_extension_list = None;
12271 #[cfg(feature = "extra-attrs")]
12272 let mut extra_attrs = std::collections::HashMap::new();
12273 #[cfg(feature = "extra-children")]
12274 let mut extra_children = Vec::new();
12275 #[cfg(feature = "extra-children")]
12276 let mut child_idx: usize = 0;
12277
12278 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
12280 let val = String::from_utf8_lossy(&attr.value);
12281 match attr.key.local_name().as_ref() {
12282 b"fld" => {
12283 f_fld = val.parse().ok();
12284 }
12285 b"item" => {
12286 f_item = val.parse().ok();
12287 }
12288 b"hier" => {
12289 f_hier = val.parse().ok();
12290 }
12291 b"name" => {
12292 f_name = Some(val.into_owned());
12293 }
12294 b"cap" => {
12295 f_cap = Some(val.into_owned());
12296 }
12297 #[cfg(feature = "extra-attrs")]
12298 unknown => {
12299 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
12300 extra_attrs.insert(key, val.into_owned());
12301 }
12302 #[cfg(not(feature = "extra-attrs"))]
12303 _ => {}
12304 }
12305 }
12306
12307 if !is_empty {
12309 let mut buf = Vec::new();
12310 loop {
12311 match reader.read_event_into(&mut buf)? {
12312 Event::Start(e) => {
12313 match e.local_name().as_ref() {
12314 b"extLst" => {
12315 f_extension_list =
12316 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
12317 #[cfg(feature = "extra-children")]
12318 {
12319 child_idx += 1;
12320 }
12321 }
12322 #[cfg(feature = "extra-children")]
12323 _ => {
12324 let elem = RawXmlElement::from_reader(reader, &e)?;
12326 extra_children.push(PositionedNode::new(
12327 child_idx,
12328 RawXmlNode::Element(elem),
12329 ));
12330 child_idx += 1;
12331 }
12332 #[cfg(not(feature = "extra-children"))]
12333 _ => {
12334 skip_element(reader)?;
12336 }
12337 }
12338 }
12339 Event::Empty(e) => {
12340 match e.local_name().as_ref() {
12341 b"extLst" => {
12342 f_extension_list =
12343 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
12344 #[cfg(feature = "extra-children")]
12345 {
12346 child_idx += 1;
12347 }
12348 }
12349 #[cfg(feature = "extra-children")]
12350 _ => {
12351 let elem = RawXmlElement::from_empty(&e);
12353 extra_children.push(PositionedNode::new(
12354 child_idx,
12355 RawXmlNode::Element(elem),
12356 ));
12357 child_idx += 1;
12358 }
12359 #[cfg(not(feature = "extra-children"))]
12360 _ => {}
12361 }
12362 }
12363 Event::End(_) => break,
12364 Event::Eof => break,
12365 _ => {}
12366 }
12367 buf.clear();
12368 }
12369 }
12370
12371 Ok(Self {
12372 fld: f_fld.ok_or_else(|| ParseError::MissingAttribute("fld".to_string()))?,
12373 item: f_item,
12374 hier: f_hier,
12375 name: f_name,
12376 cap: f_cap,
12377 extension_list: f_extension_list,
12378 #[cfg(feature = "extra-attrs")]
12379 extra_attrs,
12380 #[cfg(feature = "extra-children")]
12381 extra_children,
12382 })
12383 }
12384}
12385
12386impl FromXml for DataFields {
12387 fn from_xml<R: BufRead>(
12388 reader: &mut Reader<R>,
12389 start_tag: &BytesStart,
12390 is_empty: bool,
12391 ) -> Result<Self, ParseError> {
12392 let mut f_count = None;
12393 let mut f_data_field = Vec::new();
12394 #[cfg(feature = "extra-attrs")]
12395 let mut extra_attrs = std::collections::HashMap::new();
12396 #[cfg(feature = "extra-children")]
12397 let mut extra_children = Vec::new();
12398 #[cfg(feature = "extra-children")]
12399 let mut child_idx: usize = 0;
12400
12401 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
12403 let val = String::from_utf8_lossy(&attr.value);
12404 match attr.key.local_name().as_ref() {
12405 b"count" => {
12406 f_count = val.parse().ok();
12407 }
12408 #[cfg(feature = "extra-attrs")]
12409 unknown => {
12410 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
12411 extra_attrs.insert(key, val.into_owned());
12412 }
12413 #[cfg(not(feature = "extra-attrs"))]
12414 _ => {}
12415 }
12416 }
12417
12418 if !is_empty {
12420 let mut buf = Vec::new();
12421 loop {
12422 match reader.read_event_into(&mut buf)? {
12423 Event::Start(e) => {
12424 match e.local_name().as_ref() {
12425 b"dataField" => {
12426 f_data_field.push(DataField::from_xml(reader, &e, false)?);
12427 #[cfg(feature = "extra-children")]
12428 {
12429 child_idx += 1;
12430 }
12431 }
12432 #[cfg(feature = "extra-children")]
12433 _ => {
12434 let elem = RawXmlElement::from_reader(reader, &e)?;
12436 extra_children.push(PositionedNode::new(
12437 child_idx,
12438 RawXmlNode::Element(elem),
12439 ));
12440 child_idx += 1;
12441 }
12442 #[cfg(not(feature = "extra-children"))]
12443 _ => {
12444 skip_element(reader)?;
12446 }
12447 }
12448 }
12449 Event::Empty(e) => {
12450 match e.local_name().as_ref() {
12451 b"dataField" => {
12452 f_data_field.push(DataField::from_xml(reader, &e, true)?);
12453 #[cfg(feature = "extra-children")]
12454 {
12455 child_idx += 1;
12456 }
12457 }
12458 #[cfg(feature = "extra-children")]
12459 _ => {
12460 let elem = RawXmlElement::from_empty(&e);
12462 extra_children.push(PositionedNode::new(
12463 child_idx,
12464 RawXmlNode::Element(elem),
12465 ));
12466 child_idx += 1;
12467 }
12468 #[cfg(not(feature = "extra-children"))]
12469 _ => {}
12470 }
12471 }
12472 Event::End(_) => break,
12473 Event::Eof => break,
12474 _ => {}
12475 }
12476 buf.clear();
12477 }
12478 }
12479
12480 Ok(Self {
12481 count: f_count,
12482 data_field: f_data_field,
12483 #[cfg(feature = "extra-attrs")]
12484 extra_attrs,
12485 #[cfg(feature = "extra-children")]
12486 extra_children,
12487 })
12488 }
12489}
12490
12491impl FromXml for DataField {
12492 fn from_xml<R: BufRead>(
12493 reader: &mut Reader<R>,
12494 start_tag: &BytesStart,
12495 is_empty: bool,
12496 ) -> Result<Self, ParseError> {
12497 let mut f_name = None;
12498 let mut f_fld: Option<u32> = None;
12499 let mut f_subtotal = None;
12500 let mut f_show_data_as = None;
12501 let mut f_base_field = None;
12502 let mut f_base_item = None;
12503 let mut f_number_format_id = None;
12504 let mut f_extension_list = None;
12505 #[cfg(feature = "extra-attrs")]
12506 let mut extra_attrs = std::collections::HashMap::new();
12507 #[cfg(feature = "extra-children")]
12508 let mut extra_children = Vec::new();
12509 #[cfg(feature = "extra-children")]
12510 let mut child_idx: usize = 0;
12511
12512 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
12514 let val = String::from_utf8_lossy(&attr.value);
12515 match attr.key.local_name().as_ref() {
12516 b"name" => {
12517 f_name = Some(val.into_owned());
12518 }
12519 b"fld" => {
12520 f_fld = val.parse().ok();
12521 }
12522 b"subtotal" => {
12523 f_subtotal = val.parse().ok();
12524 }
12525 b"showDataAs" => {
12526 f_show_data_as = val.parse().ok();
12527 }
12528 b"baseField" => {
12529 f_base_field = val.parse().ok();
12530 }
12531 b"baseItem" => {
12532 f_base_item = val.parse().ok();
12533 }
12534 b"numFmtId" => {
12535 f_number_format_id = val.parse().ok();
12536 }
12537 #[cfg(feature = "extra-attrs")]
12538 unknown => {
12539 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
12540 extra_attrs.insert(key, val.into_owned());
12541 }
12542 #[cfg(not(feature = "extra-attrs"))]
12543 _ => {}
12544 }
12545 }
12546
12547 if !is_empty {
12549 let mut buf = Vec::new();
12550 loop {
12551 match reader.read_event_into(&mut buf)? {
12552 Event::Start(e) => {
12553 match e.local_name().as_ref() {
12554 b"extLst" => {
12555 f_extension_list =
12556 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
12557 #[cfg(feature = "extra-children")]
12558 {
12559 child_idx += 1;
12560 }
12561 }
12562 #[cfg(feature = "extra-children")]
12563 _ => {
12564 let elem = RawXmlElement::from_reader(reader, &e)?;
12566 extra_children.push(PositionedNode::new(
12567 child_idx,
12568 RawXmlNode::Element(elem),
12569 ));
12570 child_idx += 1;
12571 }
12572 #[cfg(not(feature = "extra-children"))]
12573 _ => {
12574 skip_element(reader)?;
12576 }
12577 }
12578 }
12579 Event::Empty(e) => {
12580 match e.local_name().as_ref() {
12581 b"extLst" => {
12582 f_extension_list =
12583 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
12584 #[cfg(feature = "extra-children")]
12585 {
12586 child_idx += 1;
12587 }
12588 }
12589 #[cfg(feature = "extra-children")]
12590 _ => {
12591 let elem = RawXmlElement::from_empty(&e);
12593 extra_children.push(PositionedNode::new(
12594 child_idx,
12595 RawXmlNode::Element(elem),
12596 ));
12597 child_idx += 1;
12598 }
12599 #[cfg(not(feature = "extra-children"))]
12600 _ => {}
12601 }
12602 }
12603 Event::End(_) => break,
12604 Event::Eof => break,
12605 _ => {}
12606 }
12607 buf.clear();
12608 }
12609 }
12610
12611 Ok(Self {
12612 name: f_name,
12613 fld: f_fld.ok_or_else(|| ParseError::MissingAttribute("fld".to_string()))?,
12614 subtotal: f_subtotal,
12615 show_data_as: f_show_data_as,
12616 base_field: f_base_field,
12617 base_item: f_base_item,
12618 number_format_id: f_number_format_id,
12619 extension_list: f_extension_list,
12620 #[cfg(feature = "extra-attrs")]
12621 extra_attrs,
12622 #[cfg(feature = "extra-children")]
12623 extra_children,
12624 })
12625 }
12626}
12627
12628impl FromXml for CTRowItems {
12629 fn from_xml<R: BufRead>(
12630 reader: &mut Reader<R>,
12631 start_tag: &BytesStart,
12632 is_empty: bool,
12633 ) -> Result<Self, ParseError> {
12634 let mut f_count = None;
12635 let mut f_i = Vec::new();
12636 #[cfg(feature = "extra-attrs")]
12637 let mut extra_attrs = std::collections::HashMap::new();
12638 #[cfg(feature = "extra-children")]
12639 let mut extra_children = Vec::new();
12640 #[cfg(feature = "extra-children")]
12641 let mut child_idx: usize = 0;
12642
12643 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
12645 let val = String::from_utf8_lossy(&attr.value);
12646 match attr.key.local_name().as_ref() {
12647 b"count" => {
12648 f_count = val.parse().ok();
12649 }
12650 #[cfg(feature = "extra-attrs")]
12651 unknown => {
12652 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
12653 extra_attrs.insert(key, val.into_owned());
12654 }
12655 #[cfg(not(feature = "extra-attrs"))]
12656 _ => {}
12657 }
12658 }
12659
12660 if !is_empty {
12662 let mut buf = Vec::new();
12663 loop {
12664 match reader.read_event_into(&mut buf)? {
12665 Event::Start(e) => {
12666 match e.local_name().as_ref() {
12667 b"i" => {
12668 f_i.push(CTI::from_xml(reader, &e, false)?);
12669 #[cfg(feature = "extra-children")]
12670 {
12671 child_idx += 1;
12672 }
12673 }
12674 #[cfg(feature = "extra-children")]
12675 _ => {
12676 let elem = RawXmlElement::from_reader(reader, &e)?;
12678 extra_children.push(PositionedNode::new(
12679 child_idx,
12680 RawXmlNode::Element(elem),
12681 ));
12682 child_idx += 1;
12683 }
12684 #[cfg(not(feature = "extra-children"))]
12685 _ => {
12686 skip_element(reader)?;
12688 }
12689 }
12690 }
12691 Event::Empty(e) => {
12692 match e.local_name().as_ref() {
12693 b"i" => {
12694 f_i.push(CTI::from_xml(reader, &e, true)?);
12695 #[cfg(feature = "extra-children")]
12696 {
12697 child_idx += 1;
12698 }
12699 }
12700 #[cfg(feature = "extra-children")]
12701 _ => {
12702 let elem = RawXmlElement::from_empty(&e);
12704 extra_children.push(PositionedNode::new(
12705 child_idx,
12706 RawXmlNode::Element(elem),
12707 ));
12708 child_idx += 1;
12709 }
12710 #[cfg(not(feature = "extra-children"))]
12711 _ => {}
12712 }
12713 }
12714 Event::End(_) => break,
12715 Event::Eof => break,
12716 _ => {}
12717 }
12718 buf.clear();
12719 }
12720 }
12721
12722 Ok(Self {
12723 count: f_count,
12724 i: f_i,
12725 #[cfg(feature = "extra-attrs")]
12726 extra_attrs,
12727 #[cfg(feature = "extra-children")]
12728 extra_children,
12729 })
12730 }
12731}
12732
12733impl FromXml for CTColItems {
12734 fn from_xml<R: BufRead>(
12735 reader: &mut Reader<R>,
12736 start_tag: &BytesStart,
12737 is_empty: bool,
12738 ) -> Result<Self, ParseError> {
12739 let mut f_count = None;
12740 let mut f_i = Vec::new();
12741 #[cfg(feature = "extra-attrs")]
12742 let mut extra_attrs = std::collections::HashMap::new();
12743 #[cfg(feature = "extra-children")]
12744 let mut extra_children = Vec::new();
12745 #[cfg(feature = "extra-children")]
12746 let mut child_idx: usize = 0;
12747
12748 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
12750 let val = String::from_utf8_lossy(&attr.value);
12751 match attr.key.local_name().as_ref() {
12752 b"count" => {
12753 f_count = val.parse().ok();
12754 }
12755 #[cfg(feature = "extra-attrs")]
12756 unknown => {
12757 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
12758 extra_attrs.insert(key, val.into_owned());
12759 }
12760 #[cfg(not(feature = "extra-attrs"))]
12761 _ => {}
12762 }
12763 }
12764
12765 if !is_empty {
12767 let mut buf = Vec::new();
12768 loop {
12769 match reader.read_event_into(&mut buf)? {
12770 Event::Start(e) => {
12771 match e.local_name().as_ref() {
12772 b"i" => {
12773 f_i.push(CTI::from_xml(reader, &e, false)?);
12774 #[cfg(feature = "extra-children")]
12775 {
12776 child_idx += 1;
12777 }
12778 }
12779 #[cfg(feature = "extra-children")]
12780 _ => {
12781 let elem = RawXmlElement::from_reader(reader, &e)?;
12783 extra_children.push(PositionedNode::new(
12784 child_idx,
12785 RawXmlNode::Element(elem),
12786 ));
12787 child_idx += 1;
12788 }
12789 #[cfg(not(feature = "extra-children"))]
12790 _ => {
12791 skip_element(reader)?;
12793 }
12794 }
12795 }
12796 Event::Empty(e) => {
12797 match e.local_name().as_ref() {
12798 b"i" => {
12799 f_i.push(CTI::from_xml(reader, &e, true)?);
12800 #[cfg(feature = "extra-children")]
12801 {
12802 child_idx += 1;
12803 }
12804 }
12805 #[cfg(feature = "extra-children")]
12806 _ => {
12807 let elem = RawXmlElement::from_empty(&e);
12809 extra_children.push(PositionedNode::new(
12810 child_idx,
12811 RawXmlNode::Element(elem),
12812 ));
12813 child_idx += 1;
12814 }
12815 #[cfg(not(feature = "extra-children"))]
12816 _ => {}
12817 }
12818 }
12819 Event::End(_) => break,
12820 Event::Eof => break,
12821 _ => {}
12822 }
12823 buf.clear();
12824 }
12825 }
12826
12827 Ok(Self {
12828 count: f_count,
12829 i: f_i,
12830 #[cfg(feature = "extra-attrs")]
12831 extra_attrs,
12832 #[cfg(feature = "extra-children")]
12833 extra_children,
12834 })
12835 }
12836}
12837
12838impl FromXml for CTI {
12839 fn from_xml<R: BufRead>(
12840 reader: &mut Reader<R>,
12841 start_tag: &BytesStart,
12842 is_empty: bool,
12843 ) -> Result<Self, ParseError> {
12844 let mut f_cell_type = None;
12845 let mut f_reference = None;
12846 let mut f_i = None;
12847 let mut f_x = Vec::new();
12848 #[cfg(feature = "extra-attrs")]
12849 let mut extra_attrs = std::collections::HashMap::new();
12850 #[cfg(feature = "extra-children")]
12851 let mut extra_children = Vec::new();
12852 #[cfg(feature = "extra-children")]
12853 let mut child_idx: usize = 0;
12854
12855 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
12857 let val = String::from_utf8_lossy(&attr.value);
12858 match attr.key.local_name().as_ref() {
12859 b"t" => {
12860 f_cell_type = val.parse().ok();
12861 }
12862 b"r" => {
12863 f_reference = val.parse().ok();
12864 }
12865 b"i" => {
12866 f_i = val.parse().ok();
12867 }
12868 #[cfg(feature = "extra-attrs")]
12869 unknown => {
12870 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
12871 extra_attrs.insert(key, val.into_owned());
12872 }
12873 #[cfg(not(feature = "extra-attrs"))]
12874 _ => {}
12875 }
12876 }
12877
12878 if !is_empty {
12880 let mut buf = Vec::new();
12881 loop {
12882 match reader.read_event_into(&mut buf)? {
12883 Event::Start(e) => {
12884 match e.local_name().as_ref() {
12885 b"x" => {
12886 f_x.push(CTX::from_xml(reader, &e, false)?);
12887 #[cfg(feature = "extra-children")]
12888 {
12889 child_idx += 1;
12890 }
12891 }
12892 #[cfg(feature = "extra-children")]
12893 _ => {
12894 let elem = RawXmlElement::from_reader(reader, &e)?;
12896 extra_children.push(PositionedNode::new(
12897 child_idx,
12898 RawXmlNode::Element(elem),
12899 ));
12900 child_idx += 1;
12901 }
12902 #[cfg(not(feature = "extra-children"))]
12903 _ => {
12904 skip_element(reader)?;
12906 }
12907 }
12908 }
12909 Event::Empty(e) => {
12910 match e.local_name().as_ref() {
12911 b"x" => {
12912 f_x.push(CTX::from_xml(reader, &e, true)?);
12913 #[cfg(feature = "extra-children")]
12914 {
12915 child_idx += 1;
12916 }
12917 }
12918 #[cfg(feature = "extra-children")]
12919 _ => {
12920 let elem = RawXmlElement::from_empty(&e);
12922 extra_children.push(PositionedNode::new(
12923 child_idx,
12924 RawXmlNode::Element(elem),
12925 ));
12926 child_idx += 1;
12927 }
12928 #[cfg(not(feature = "extra-children"))]
12929 _ => {}
12930 }
12931 }
12932 Event::End(_) => break,
12933 Event::Eof => break,
12934 _ => {}
12935 }
12936 buf.clear();
12937 }
12938 }
12939
12940 Ok(Self {
12941 cell_type: f_cell_type,
12942 reference: f_reference,
12943 i: f_i,
12944 x: f_x,
12945 #[cfg(feature = "extra-attrs")]
12946 extra_attrs,
12947 #[cfg(feature = "extra-children")]
12948 extra_children,
12949 })
12950 }
12951}
12952
12953impl FromXml for CTX {
12954 fn from_xml<R: BufRead>(
12955 reader: &mut Reader<R>,
12956 start_tag: &BytesStart,
12957 is_empty: bool,
12958 ) -> Result<Self, ParseError> {
12959 let mut f_value = None;
12960 #[cfg(feature = "extra-attrs")]
12961 let mut extra_attrs = std::collections::HashMap::new();
12962
12963 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
12965 let val = String::from_utf8_lossy(&attr.value);
12966 match attr.key.local_name().as_ref() {
12967 b"v" => {
12968 f_value = val.parse().ok();
12969 }
12970 #[cfg(feature = "extra-attrs")]
12971 unknown => {
12972 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
12973 extra_attrs.insert(key, val.into_owned());
12974 }
12975 #[cfg(not(feature = "extra-attrs"))]
12976 _ => {}
12977 }
12978 }
12979
12980 if !is_empty {
12981 let mut buf = Vec::new();
12982 loop {
12983 match reader.read_event_into(&mut buf)? {
12984 Event::End(_) => break,
12985 Event::Eof => break,
12986 _ => {}
12987 }
12988 buf.clear();
12989 }
12990 }
12991
12992 Ok(Self {
12993 value: f_value,
12994 #[cfg(feature = "extra-attrs")]
12995 extra_attrs,
12996 })
12997 }
12998}
12999
13000impl FromXml for RowFields {
13001 fn from_xml<R: BufRead>(
13002 reader: &mut Reader<R>,
13003 start_tag: &BytesStart,
13004 is_empty: bool,
13005 ) -> Result<Self, ParseError> {
13006 let mut f_count = None;
13007 let mut f_field = Vec::new();
13008 #[cfg(feature = "extra-attrs")]
13009 let mut extra_attrs = std::collections::HashMap::new();
13010 #[cfg(feature = "extra-children")]
13011 let mut extra_children = Vec::new();
13012 #[cfg(feature = "extra-children")]
13013 let mut child_idx: usize = 0;
13014
13015 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
13017 let val = String::from_utf8_lossy(&attr.value);
13018 match attr.key.local_name().as_ref() {
13019 b"count" => {
13020 f_count = val.parse().ok();
13021 }
13022 #[cfg(feature = "extra-attrs")]
13023 unknown => {
13024 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
13025 extra_attrs.insert(key, val.into_owned());
13026 }
13027 #[cfg(not(feature = "extra-attrs"))]
13028 _ => {}
13029 }
13030 }
13031
13032 if !is_empty {
13034 let mut buf = Vec::new();
13035 loop {
13036 match reader.read_event_into(&mut buf)? {
13037 Event::Start(e) => {
13038 match e.local_name().as_ref() {
13039 b"field" => {
13040 f_field.push(CTField::from_xml(reader, &e, false)?);
13041 #[cfg(feature = "extra-children")]
13042 {
13043 child_idx += 1;
13044 }
13045 }
13046 #[cfg(feature = "extra-children")]
13047 _ => {
13048 let elem = RawXmlElement::from_reader(reader, &e)?;
13050 extra_children.push(PositionedNode::new(
13051 child_idx,
13052 RawXmlNode::Element(elem),
13053 ));
13054 child_idx += 1;
13055 }
13056 #[cfg(not(feature = "extra-children"))]
13057 _ => {
13058 skip_element(reader)?;
13060 }
13061 }
13062 }
13063 Event::Empty(e) => {
13064 match e.local_name().as_ref() {
13065 b"field" => {
13066 f_field.push(CTField::from_xml(reader, &e, true)?);
13067 #[cfg(feature = "extra-children")]
13068 {
13069 child_idx += 1;
13070 }
13071 }
13072 #[cfg(feature = "extra-children")]
13073 _ => {
13074 let elem = RawXmlElement::from_empty(&e);
13076 extra_children.push(PositionedNode::new(
13077 child_idx,
13078 RawXmlNode::Element(elem),
13079 ));
13080 child_idx += 1;
13081 }
13082 #[cfg(not(feature = "extra-children"))]
13083 _ => {}
13084 }
13085 }
13086 Event::End(_) => break,
13087 Event::Eof => break,
13088 _ => {}
13089 }
13090 buf.clear();
13091 }
13092 }
13093
13094 Ok(Self {
13095 count: f_count,
13096 field: f_field,
13097 #[cfg(feature = "extra-attrs")]
13098 extra_attrs,
13099 #[cfg(feature = "extra-children")]
13100 extra_children,
13101 })
13102 }
13103}
13104
13105impl FromXml for ColFields {
13106 fn from_xml<R: BufRead>(
13107 reader: &mut Reader<R>,
13108 start_tag: &BytesStart,
13109 is_empty: bool,
13110 ) -> Result<Self, ParseError> {
13111 let mut f_count = None;
13112 let mut f_field = Vec::new();
13113 #[cfg(feature = "extra-attrs")]
13114 let mut extra_attrs = std::collections::HashMap::new();
13115 #[cfg(feature = "extra-children")]
13116 let mut extra_children = Vec::new();
13117 #[cfg(feature = "extra-children")]
13118 let mut child_idx: usize = 0;
13119
13120 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
13122 let val = String::from_utf8_lossy(&attr.value);
13123 match attr.key.local_name().as_ref() {
13124 b"count" => {
13125 f_count = val.parse().ok();
13126 }
13127 #[cfg(feature = "extra-attrs")]
13128 unknown => {
13129 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
13130 extra_attrs.insert(key, val.into_owned());
13131 }
13132 #[cfg(not(feature = "extra-attrs"))]
13133 _ => {}
13134 }
13135 }
13136
13137 if !is_empty {
13139 let mut buf = Vec::new();
13140 loop {
13141 match reader.read_event_into(&mut buf)? {
13142 Event::Start(e) => {
13143 match e.local_name().as_ref() {
13144 b"field" => {
13145 f_field.push(CTField::from_xml(reader, &e, false)?);
13146 #[cfg(feature = "extra-children")]
13147 {
13148 child_idx += 1;
13149 }
13150 }
13151 #[cfg(feature = "extra-children")]
13152 _ => {
13153 let elem = RawXmlElement::from_reader(reader, &e)?;
13155 extra_children.push(PositionedNode::new(
13156 child_idx,
13157 RawXmlNode::Element(elem),
13158 ));
13159 child_idx += 1;
13160 }
13161 #[cfg(not(feature = "extra-children"))]
13162 _ => {
13163 skip_element(reader)?;
13165 }
13166 }
13167 }
13168 Event::Empty(e) => {
13169 match e.local_name().as_ref() {
13170 b"field" => {
13171 f_field.push(CTField::from_xml(reader, &e, true)?);
13172 #[cfg(feature = "extra-children")]
13173 {
13174 child_idx += 1;
13175 }
13176 }
13177 #[cfg(feature = "extra-children")]
13178 _ => {
13179 let elem = RawXmlElement::from_empty(&e);
13181 extra_children.push(PositionedNode::new(
13182 child_idx,
13183 RawXmlNode::Element(elem),
13184 ));
13185 child_idx += 1;
13186 }
13187 #[cfg(not(feature = "extra-children"))]
13188 _ => {}
13189 }
13190 }
13191 Event::End(_) => break,
13192 Event::Eof => break,
13193 _ => {}
13194 }
13195 buf.clear();
13196 }
13197 }
13198
13199 Ok(Self {
13200 count: f_count,
13201 field: f_field,
13202 #[cfg(feature = "extra-attrs")]
13203 extra_attrs,
13204 #[cfg(feature = "extra-children")]
13205 extra_children,
13206 })
13207 }
13208}
13209
13210impl FromXml for CTField {
13211 fn from_xml<R: BufRead>(
13212 reader: &mut Reader<R>,
13213 start_tag: &BytesStart,
13214 is_empty: bool,
13215 ) -> Result<Self, ParseError> {
13216 let mut f_x: Option<i32> = None;
13217 #[cfg(feature = "extra-attrs")]
13218 let mut extra_attrs = std::collections::HashMap::new();
13219
13220 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
13222 let val = String::from_utf8_lossy(&attr.value);
13223 match attr.key.local_name().as_ref() {
13224 b"x" => {
13225 f_x = val.parse().ok();
13226 }
13227 #[cfg(feature = "extra-attrs")]
13228 unknown => {
13229 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
13230 extra_attrs.insert(key, val.into_owned());
13231 }
13232 #[cfg(not(feature = "extra-attrs"))]
13233 _ => {}
13234 }
13235 }
13236
13237 if !is_empty {
13238 let mut buf = Vec::new();
13239 loop {
13240 match reader.read_event_into(&mut buf)? {
13241 Event::End(_) => break,
13242 Event::Eof => break,
13243 _ => {}
13244 }
13245 buf.clear();
13246 }
13247 }
13248
13249 Ok(Self {
13250 x: f_x.ok_or_else(|| ParseError::MissingAttribute("x".to_string()))?,
13251 #[cfg(feature = "extra-attrs")]
13252 extra_attrs,
13253 })
13254 }
13255}
13256
13257impl FromXml for CTFormats {
13258 fn from_xml<R: BufRead>(
13259 reader: &mut Reader<R>,
13260 start_tag: &BytesStart,
13261 is_empty: bool,
13262 ) -> Result<Self, ParseError> {
13263 let mut f_count = None;
13264 let mut f_format = Vec::new();
13265 #[cfg(feature = "extra-attrs")]
13266 let mut extra_attrs = std::collections::HashMap::new();
13267 #[cfg(feature = "extra-children")]
13268 let mut extra_children = Vec::new();
13269 #[cfg(feature = "extra-children")]
13270 let mut child_idx: usize = 0;
13271
13272 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
13274 let val = String::from_utf8_lossy(&attr.value);
13275 match attr.key.local_name().as_ref() {
13276 b"count" => {
13277 f_count = val.parse().ok();
13278 }
13279 #[cfg(feature = "extra-attrs")]
13280 unknown => {
13281 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
13282 extra_attrs.insert(key, val.into_owned());
13283 }
13284 #[cfg(not(feature = "extra-attrs"))]
13285 _ => {}
13286 }
13287 }
13288
13289 if !is_empty {
13291 let mut buf = Vec::new();
13292 loop {
13293 match reader.read_event_into(&mut buf)? {
13294 Event::Start(e) => {
13295 match e.local_name().as_ref() {
13296 b"format" => {
13297 f_format.push(CTFormat::from_xml(reader, &e, false)?);
13298 #[cfg(feature = "extra-children")]
13299 {
13300 child_idx += 1;
13301 }
13302 }
13303 #[cfg(feature = "extra-children")]
13304 _ => {
13305 let elem = RawXmlElement::from_reader(reader, &e)?;
13307 extra_children.push(PositionedNode::new(
13308 child_idx,
13309 RawXmlNode::Element(elem),
13310 ));
13311 child_idx += 1;
13312 }
13313 #[cfg(not(feature = "extra-children"))]
13314 _ => {
13315 skip_element(reader)?;
13317 }
13318 }
13319 }
13320 Event::Empty(e) => {
13321 match e.local_name().as_ref() {
13322 b"format" => {
13323 f_format.push(CTFormat::from_xml(reader, &e, true)?);
13324 #[cfg(feature = "extra-children")]
13325 {
13326 child_idx += 1;
13327 }
13328 }
13329 #[cfg(feature = "extra-children")]
13330 _ => {
13331 let elem = RawXmlElement::from_empty(&e);
13333 extra_children.push(PositionedNode::new(
13334 child_idx,
13335 RawXmlNode::Element(elem),
13336 ));
13337 child_idx += 1;
13338 }
13339 #[cfg(not(feature = "extra-children"))]
13340 _ => {}
13341 }
13342 }
13343 Event::End(_) => break,
13344 Event::Eof => break,
13345 _ => {}
13346 }
13347 buf.clear();
13348 }
13349 }
13350
13351 Ok(Self {
13352 count: f_count,
13353 format: f_format,
13354 #[cfg(feature = "extra-attrs")]
13355 extra_attrs,
13356 #[cfg(feature = "extra-children")]
13357 extra_children,
13358 })
13359 }
13360}
13361
13362impl FromXml for CTFormat {
13363 fn from_xml<R: BufRead>(
13364 reader: &mut Reader<R>,
13365 start_tag: &BytesStart,
13366 is_empty: bool,
13367 ) -> Result<Self, ParseError> {
13368 let mut f_action = None;
13369 let mut f_dxf_id = None;
13370 let mut f_pivot_area: Option<Box<PivotArea>> = None;
13371 let mut f_extension_list = None;
13372 #[cfg(feature = "extra-attrs")]
13373 let mut extra_attrs = std::collections::HashMap::new();
13374 #[cfg(feature = "extra-children")]
13375 let mut extra_children = Vec::new();
13376 #[cfg(feature = "extra-children")]
13377 let mut child_idx: usize = 0;
13378
13379 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
13381 let val = String::from_utf8_lossy(&attr.value);
13382 match attr.key.local_name().as_ref() {
13383 b"action" => {
13384 f_action = val.parse().ok();
13385 }
13386 b"dxfId" => {
13387 f_dxf_id = val.parse().ok();
13388 }
13389 #[cfg(feature = "extra-attrs")]
13390 unknown => {
13391 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
13392 extra_attrs.insert(key, val.into_owned());
13393 }
13394 #[cfg(not(feature = "extra-attrs"))]
13395 _ => {}
13396 }
13397 }
13398
13399 if !is_empty {
13401 let mut buf = Vec::new();
13402 loop {
13403 match reader.read_event_into(&mut buf)? {
13404 Event::Start(e) => {
13405 match e.local_name().as_ref() {
13406 b"pivotArea" => {
13407 f_pivot_area =
13408 Some(Box::new(PivotArea::from_xml(reader, &e, false)?));
13409 #[cfg(feature = "extra-children")]
13410 {
13411 child_idx += 1;
13412 }
13413 }
13414 b"extLst" => {
13415 f_extension_list =
13416 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
13417 #[cfg(feature = "extra-children")]
13418 {
13419 child_idx += 1;
13420 }
13421 }
13422 #[cfg(feature = "extra-children")]
13423 _ => {
13424 let elem = RawXmlElement::from_reader(reader, &e)?;
13426 extra_children.push(PositionedNode::new(
13427 child_idx,
13428 RawXmlNode::Element(elem),
13429 ));
13430 child_idx += 1;
13431 }
13432 #[cfg(not(feature = "extra-children"))]
13433 _ => {
13434 skip_element(reader)?;
13436 }
13437 }
13438 }
13439 Event::Empty(e) => {
13440 match e.local_name().as_ref() {
13441 b"pivotArea" => {
13442 f_pivot_area =
13443 Some(Box::new(PivotArea::from_xml(reader, &e, true)?));
13444 #[cfg(feature = "extra-children")]
13445 {
13446 child_idx += 1;
13447 }
13448 }
13449 b"extLst" => {
13450 f_extension_list =
13451 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
13452 #[cfg(feature = "extra-children")]
13453 {
13454 child_idx += 1;
13455 }
13456 }
13457 #[cfg(feature = "extra-children")]
13458 _ => {
13459 let elem = RawXmlElement::from_empty(&e);
13461 extra_children.push(PositionedNode::new(
13462 child_idx,
13463 RawXmlNode::Element(elem),
13464 ));
13465 child_idx += 1;
13466 }
13467 #[cfg(not(feature = "extra-children"))]
13468 _ => {}
13469 }
13470 }
13471 Event::End(_) => break,
13472 Event::Eof => break,
13473 _ => {}
13474 }
13475 buf.clear();
13476 }
13477 }
13478
13479 Ok(Self {
13480 action: f_action,
13481 dxf_id: f_dxf_id,
13482 pivot_area: f_pivot_area
13483 .ok_or_else(|| ParseError::MissingAttribute("pivotArea".to_string()))?,
13484 extension_list: f_extension_list,
13485 #[cfg(feature = "extra-attrs")]
13486 extra_attrs,
13487 #[cfg(feature = "extra-children")]
13488 extra_children,
13489 })
13490 }
13491}
13492
13493impl FromXml for CTConditionalFormats {
13494 fn from_xml<R: BufRead>(
13495 reader: &mut Reader<R>,
13496 start_tag: &BytesStart,
13497 is_empty: bool,
13498 ) -> Result<Self, ParseError> {
13499 let mut f_count = None;
13500 let mut f_conditional_format = Vec::new();
13501 #[cfg(feature = "extra-attrs")]
13502 let mut extra_attrs = std::collections::HashMap::new();
13503 #[cfg(feature = "extra-children")]
13504 let mut extra_children = Vec::new();
13505 #[cfg(feature = "extra-children")]
13506 let mut child_idx: usize = 0;
13507
13508 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
13510 let val = String::from_utf8_lossy(&attr.value);
13511 match attr.key.local_name().as_ref() {
13512 b"count" => {
13513 f_count = val.parse().ok();
13514 }
13515 #[cfg(feature = "extra-attrs")]
13516 unknown => {
13517 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
13518 extra_attrs.insert(key, val.into_owned());
13519 }
13520 #[cfg(not(feature = "extra-attrs"))]
13521 _ => {}
13522 }
13523 }
13524
13525 if !is_empty {
13527 let mut buf = Vec::new();
13528 loop {
13529 match reader.read_event_into(&mut buf)? {
13530 Event::Start(e) => {
13531 match e.local_name().as_ref() {
13532 b"conditionalFormat" => {
13533 f_conditional_format
13534 .push(CTConditionalFormat::from_xml(reader, &e, false)?);
13535 #[cfg(feature = "extra-children")]
13536 {
13537 child_idx += 1;
13538 }
13539 }
13540 #[cfg(feature = "extra-children")]
13541 _ => {
13542 let elem = RawXmlElement::from_reader(reader, &e)?;
13544 extra_children.push(PositionedNode::new(
13545 child_idx,
13546 RawXmlNode::Element(elem),
13547 ));
13548 child_idx += 1;
13549 }
13550 #[cfg(not(feature = "extra-children"))]
13551 _ => {
13552 skip_element(reader)?;
13554 }
13555 }
13556 }
13557 Event::Empty(e) => {
13558 match e.local_name().as_ref() {
13559 b"conditionalFormat" => {
13560 f_conditional_format
13561 .push(CTConditionalFormat::from_xml(reader, &e, true)?);
13562 #[cfg(feature = "extra-children")]
13563 {
13564 child_idx += 1;
13565 }
13566 }
13567 #[cfg(feature = "extra-children")]
13568 _ => {
13569 let elem = RawXmlElement::from_empty(&e);
13571 extra_children.push(PositionedNode::new(
13572 child_idx,
13573 RawXmlNode::Element(elem),
13574 ));
13575 child_idx += 1;
13576 }
13577 #[cfg(not(feature = "extra-children"))]
13578 _ => {}
13579 }
13580 }
13581 Event::End(_) => break,
13582 Event::Eof => break,
13583 _ => {}
13584 }
13585 buf.clear();
13586 }
13587 }
13588
13589 Ok(Self {
13590 count: f_count,
13591 conditional_format: f_conditional_format,
13592 #[cfg(feature = "extra-attrs")]
13593 extra_attrs,
13594 #[cfg(feature = "extra-children")]
13595 extra_children,
13596 })
13597 }
13598}
13599
13600impl FromXml for CTConditionalFormat {
13601 fn from_xml<R: BufRead>(
13602 reader: &mut Reader<R>,
13603 start_tag: &BytesStart,
13604 is_empty: bool,
13605 ) -> Result<Self, ParseError> {
13606 let mut f_scope = None;
13607 let mut f_type = None;
13608 let mut f_priority: Option<u32> = None;
13609 let mut f_pivot_areas: Option<Box<PivotAreas>> = None;
13610 let mut f_extension_list = None;
13611 #[cfg(feature = "extra-attrs")]
13612 let mut extra_attrs = std::collections::HashMap::new();
13613 #[cfg(feature = "extra-children")]
13614 let mut extra_children = Vec::new();
13615 #[cfg(feature = "extra-children")]
13616 let mut child_idx: usize = 0;
13617
13618 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
13620 let val = String::from_utf8_lossy(&attr.value);
13621 match attr.key.local_name().as_ref() {
13622 b"scope" => {
13623 f_scope = val.parse().ok();
13624 }
13625 b"type" => {
13626 f_type = val.parse().ok();
13627 }
13628 b"priority" => {
13629 f_priority = val.parse().ok();
13630 }
13631 #[cfg(feature = "extra-attrs")]
13632 unknown => {
13633 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
13634 extra_attrs.insert(key, val.into_owned());
13635 }
13636 #[cfg(not(feature = "extra-attrs"))]
13637 _ => {}
13638 }
13639 }
13640
13641 if !is_empty {
13643 let mut buf = Vec::new();
13644 loop {
13645 match reader.read_event_into(&mut buf)? {
13646 Event::Start(e) => {
13647 match e.local_name().as_ref() {
13648 b"pivotAreas" => {
13649 f_pivot_areas =
13650 Some(Box::new(PivotAreas::from_xml(reader, &e, false)?));
13651 #[cfg(feature = "extra-children")]
13652 {
13653 child_idx += 1;
13654 }
13655 }
13656 b"extLst" => {
13657 f_extension_list =
13658 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
13659 #[cfg(feature = "extra-children")]
13660 {
13661 child_idx += 1;
13662 }
13663 }
13664 #[cfg(feature = "extra-children")]
13665 _ => {
13666 let elem = RawXmlElement::from_reader(reader, &e)?;
13668 extra_children.push(PositionedNode::new(
13669 child_idx,
13670 RawXmlNode::Element(elem),
13671 ));
13672 child_idx += 1;
13673 }
13674 #[cfg(not(feature = "extra-children"))]
13675 _ => {
13676 skip_element(reader)?;
13678 }
13679 }
13680 }
13681 Event::Empty(e) => {
13682 match e.local_name().as_ref() {
13683 b"pivotAreas" => {
13684 f_pivot_areas =
13685 Some(Box::new(PivotAreas::from_xml(reader, &e, true)?));
13686 #[cfg(feature = "extra-children")]
13687 {
13688 child_idx += 1;
13689 }
13690 }
13691 b"extLst" => {
13692 f_extension_list =
13693 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
13694 #[cfg(feature = "extra-children")]
13695 {
13696 child_idx += 1;
13697 }
13698 }
13699 #[cfg(feature = "extra-children")]
13700 _ => {
13701 let elem = RawXmlElement::from_empty(&e);
13703 extra_children.push(PositionedNode::new(
13704 child_idx,
13705 RawXmlNode::Element(elem),
13706 ));
13707 child_idx += 1;
13708 }
13709 #[cfg(not(feature = "extra-children"))]
13710 _ => {}
13711 }
13712 }
13713 Event::End(_) => break,
13714 Event::Eof => break,
13715 _ => {}
13716 }
13717 buf.clear();
13718 }
13719 }
13720
13721 Ok(Self {
13722 scope: f_scope,
13723 r#type: f_type,
13724 priority: f_priority
13725 .ok_or_else(|| ParseError::MissingAttribute("priority".to_string()))?,
13726 pivot_areas: f_pivot_areas
13727 .ok_or_else(|| ParseError::MissingAttribute("pivotAreas".to_string()))?,
13728 extension_list: f_extension_list,
13729 #[cfg(feature = "extra-attrs")]
13730 extra_attrs,
13731 #[cfg(feature = "extra-children")]
13732 extra_children,
13733 })
13734 }
13735}
13736
13737impl FromXml for PivotAreas {
13738 fn from_xml<R: BufRead>(
13739 reader: &mut Reader<R>,
13740 start_tag: &BytesStart,
13741 is_empty: bool,
13742 ) -> Result<Self, ParseError> {
13743 let mut f_count = None;
13744 let mut f_pivot_area = Vec::new();
13745 #[cfg(feature = "extra-attrs")]
13746 let mut extra_attrs = std::collections::HashMap::new();
13747 #[cfg(feature = "extra-children")]
13748 let mut extra_children = Vec::new();
13749 #[cfg(feature = "extra-children")]
13750 let mut child_idx: usize = 0;
13751
13752 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
13754 let val = String::from_utf8_lossy(&attr.value);
13755 match attr.key.local_name().as_ref() {
13756 b"count" => {
13757 f_count = val.parse().ok();
13758 }
13759 #[cfg(feature = "extra-attrs")]
13760 unknown => {
13761 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
13762 extra_attrs.insert(key, val.into_owned());
13763 }
13764 #[cfg(not(feature = "extra-attrs"))]
13765 _ => {}
13766 }
13767 }
13768
13769 if !is_empty {
13771 let mut buf = Vec::new();
13772 loop {
13773 match reader.read_event_into(&mut buf)? {
13774 Event::Start(e) => {
13775 match e.local_name().as_ref() {
13776 b"pivotArea" => {
13777 f_pivot_area.push(PivotArea::from_xml(reader, &e, false)?);
13778 #[cfg(feature = "extra-children")]
13779 {
13780 child_idx += 1;
13781 }
13782 }
13783 #[cfg(feature = "extra-children")]
13784 _ => {
13785 let elem = RawXmlElement::from_reader(reader, &e)?;
13787 extra_children.push(PositionedNode::new(
13788 child_idx,
13789 RawXmlNode::Element(elem),
13790 ));
13791 child_idx += 1;
13792 }
13793 #[cfg(not(feature = "extra-children"))]
13794 _ => {
13795 skip_element(reader)?;
13797 }
13798 }
13799 }
13800 Event::Empty(e) => {
13801 match e.local_name().as_ref() {
13802 b"pivotArea" => {
13803 f_pivot_area.push(PivotArea::from_xml(reader, &e, true)?);
13804 #[cfg(feature = "extra-children")]
13805 {
13806 child_idx += 1;
13807 }
13808 }
13809 #[cfg(feature = "extra-children")]
13810 _ => {
13811 let elem = RawXmlElement::from_empty(&e);
13813 extra_children.push(PositionedNode::new(
13814 child_idx,
13815 RawXmlNode::Element(elem),
13816 ));
13817 child_idx += 1;
13818 }
13819 #[cfg(not(feature = "extra-children"))]
13820 _ => {}
13821 }
13822 }
13823 Event::End(_) => break,
13824 Event::Eof => break,
13825 _ => {}
13826 }
13827 buf.clear();
13828 }
13829 }
13830
13831 Ok(Self {
13832 count: f_count,
13833 pivot_area: f_pivot_area,
13834 #[cfg(feature = "extra-attrs")]
13835 extra_attrs,
13836 #[cfg(feature = "extra-children")]
13837 extra_children,
13838 })
13839 }
13840}
13841
13842impl FromXml for CTChartFormats {
13843 fn from_xml<R: BufRead>(
13844 reader: &mut Reader<R>,
13845 start_tag: &BytesStart,
13846 is_empty: bool,
13847 ) -> Result<Self, ParseError> {
13848 let mut f_count = None;
13849 let mut f_chart_format = Vec::new();
13850 #[cfg(feature = "extra-attrs")]
13851 let mut extra_attrs = std::collections::HashMap::new();
13852 #[cfg(feature = "extra-children")]
13853 let mut extra_children = Vec::new();
13854 #[cfg(feature = "extra-children")]
13855 let mut child_idx: usize = 0;
13856
13857 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
13859 let val = String::from_utf8_lossy(&attr.value);
13860 match attr.key.local_name().as_ref() {
13861 b"count" => {
13862 f_count = val.parse().ok();
13863 }
13864 #[cfg(feature = "extra-attrs")]
13865 unknown => {
13866 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
13867 extra_attrs.insert(key, val.into_owned());
13868 }
13869 #[cfg(not(feature = "extra-attrs"))]
13870 _ => {}
13871 }
13872 }
13873
13874 if !is_empty {
13876 let mut buf = Vec::new();
13877 loop {
13878 match reader.read_event_into(&mut buf)? {
13879 Event::Start(e) => {
13880 match e.local_name().as_ref() {
13881 b"chartFormat" => {
13882 f_chart_format.push(CTChartFormat::from_xml(reader, &e, false)?);
13883 #[cfg(feature = "extra-children")]
13884 {
13885 child_idx += 1;
13886 }
13887 }
13888 #[cfg(feature = "extra-children")]
13889 _ => {
13890 let elem = RawXmlElement::from_reader(reader, &e)?;
13892 extra_children.push(PositionedNode::new(
13893 child_idx,
13894 RawXmlNode::Element(elem),
13895 ));
13896 child_idx += 1;
13897 }
13898 #[cfg(not(feature = "extra-children"))]
13899 _ => {
13900 skip_element(reader)?;
13902 }
13903 }
13904 }
13905 Event::Empty(e) => {
13906 match e.local_name().as_ref() {
13907 b"chartFormat" => {
13908 f_chart_format.push(CTChartFormat::from_xml(reader, &e, true)?);
13909 #[cfg(feature = "extra-children")]
13910 {
13911 child_idx += 1;
13912 }
13913 }
13914 #[cfg(feature = "extra-children")]
13915 _ => {
13916 let elem = RawXmlElement::from_empty(&e);
13918 extra_children.push(PositionedNode::new(
13919 child_idx,
13920 RawXmlNode::Element(elem),
13921 ));
13922 child_idx += 1;
13923 }
13924 #[cfg(not(feature = "extra-children"))]
13925 _ => {}
13926 }
13927 }
13928 Event::End(_) => break,
13929 Event::Eof => break,
13930 _ => {}
13931 }
13932 buf.clear();
13933 }
13934 }
13935
13936 Ok(Self {
13937 count: f_count,
13938 chart_format: f_chart_format,
13939 #[cfg(feature = "extra-attrs")]
13940 extra_attrs,
13941 #[cfg(feature = "extra-children")]
13942 extra_children,
13943 })
13944 }
13945}
13946
13947impl FromXml for CTChartFormat {
13948 fn from_xml<R: BufRead>(
13949 reader: &mut Reader<R>,
13950 start_tag: &BytesStart,
13951 is_empty: bool,
13952 ) -> Result<Self, ParseError> {
13953 let mut f_chart: Option<u32> = None;
13954 let mut f_format: Option<u32> = None;
13955 let mut f_series = None;
13956 let mut f_pivot_area: Option<Box<PivotArea>> = None;
13957 #[cfg(feature = "extra-attrs")]
13958 let mut extra_attrs = std::collections::HashMap::new();
13959 #[cfg(feature = "extra-children")]
13960 let mut extra_children = Vec::new();
13961 #[cfg(feature = "extra-children")]
13962 let mut child_idx: usize = 0;
13963
13964 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
13966 let val = String::from_utf8_lossy(&attr.value);
13967 match attr.key.local_name().as_ref() {
13968 b"chart" => {
13969 f_chart = val.parse().ok();
13970 }
13971 b"format" => {
13972 f_format = val.parse().ok();
13973 }
13974 b"series" => {
13975 f_series = Some(val == "true" || val == "1");
13976 }
13977 #[cfg(feature = "extra-attrs")]
13978 unknown => {
13979 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
13980 extra_attrs.insert(key, val.into_owned());
13981 }
13982 #[cfg(not(feature = "extra-attrs"))]
13983 _ => {}
13984 }
13985 }
13986
13987 if !is_empty {
13989 let mut buf = Vec::new();
13990 loop {
13991 match reader.read_event_into(&mut buf)? {
13992 Event::Start(e) => {
13993 match e.local_name().as_ref() {
13994 b"pivotArea" => {
13995 f_pivot_area =
13996 Some(Box::new(PivotArea::from_xml(reader, &e, false)?));
13997 #[cfg(feature = "extra-children")]
13998 {
13999 child_idx += 1;
14000 }
14001 }
14002 #[cfg(feature = "extra-children")]
14003 _ => {
14004 let elem = RawXmlElement::from_reader(reader, &e)?;
14006 extra_children.push(PositionedNode::new(
14007 child_idx,
14008 RawXmlNode::Element(elem),
14009 ));
14010 child_idx += 1;
14011 }
14012 #[cfg(not(feature = "extra-children"))]
14013 _ => {
14014 skip_element(reader)?;
14016 }
14017 }
14018 }
14019 Event::Empty(e) => {
14020 match e.local_name().as_ref() {
14021 b"pivotArea" => {
14022 f_pivot_area =
14023 Some(Box::new(PivotArea::from_xml(reader, &e, true)?));
14024 #[cfg(feature = "extra-children")]
14025 {
14026 child_idx += 1;
14027 }
14028 }
14029 #[cfg(feature = "extra-children")]
14030 _ => {
14031 let elem = RawXmlElement::from_empty(&e);
14033 extra_children.push(PositionedNode::new(
14034 child_idx,
14035 RawXmlNode::Element(elem),
14036 ));
14037 child_idx += 1;
14038 }
14039 #[cfg(not(feature = "extra-children"))]
14040 _ => {}
14041 }
14042 }
14043 Event::End(_) => break,
14044 Event::Eof => break,
14045 _ => {}
14046 }
14047 buf.clear();
14048 }
14049 }
14050
14051 Ok(Self {
14052 chart: f_chart.ok_or_else(|| ParseError::MissingAttribute("chart".to_string()))?,
14053 format: f_format.ok_or_else(|| ParseError::MissingAttribute("format".to_string()))?,
14054 series: f_series,
14055 pivot_area: f_pivot_area
14056 .ok_or_else(|| ParseError::MissingAttribute("pivotArea".to_string()))?,
14057 #[cfg(feature = "extra-attrs")]
14058 extra_attrs,
14059 #[cfg(feature = "extra-children")]
14060 extra_children,
14061 })
14062 }
14063}
14064
14065impl FromXml for CTPivotHierarchies {
14066 fn from_xml<R: BufRead>(
14067 reader: &mut Reader<R>,
14068 start_tag: &BytesStart,
14069 is_empty: bool,
14070 ) -> Result<Self, ParseError> {
14071 let mut f_count = None;
14072 let mut f_pivot_hierarchy = Vec::new();
14073 #[cfg(feature = "extra-attrs")]
14074 let mut extra_attrs = std::collections::HashMap::new();
14075 #[cfg(feature = "extra-children")]
14076 let mut extra_children = Vec::new();
14077 #[cfg(feature = "extra-children")]
14078 let mut child_idx: usize = 0;
14079
14080 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
14082 let val = String::from_utf8_lossy(&attr.value);
14083 match attr.key.local_name().as_ref() {
14084 b"count" => {
14085 f_count = val.parse().ok();
14086 }
14087 #[cfg(feature = "extra-attrs")]
14088 unknown => {
14089 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
14090 extra_attrs.insert(key, val.into_owned());
14091 }
14092 #[cfg(not(feature = "extra-attrs"))]
14093 _ => {}
14094 }
14095 }
14096
14097 if !is_empty {
14099 let mut buf = Vec::new();
14100 loop {
14101 match reader.read_event_into(&mut buf)? {
14102 Event::Start(e) => {
14103 match e.local_name().as_ref() {
14104 b"pivotHierarchy" => {
14105 f_pivot_hierarchy
14106 .push(CTPivotHierarchy::from_xml(reader, &e, false)?);
14107 #[cfg(feature = "extra-children")]
14108 {
14109 child_idx += 1;
14110 }
14111 }
14112 #[cfg(feature = "extra-children")]
14113 _ => {
14114 let elem = RawXmlElement::from_reader(reader, &e)?;
14116 extra_children.push(PositionedNode::new(
14117 child_idx,
14118 RawXmlNode::Element(elem),
14119 ));
14120 child_idx += 1;
14121 }
14122 #[cfg(not(feature = "extra-children"))]
14123 _ => {
14124 skip_element(reader)?;
14126 }
14127 }
14128 }
14129 Event::Empty(e) => {
14130 match e.local_name().as_ref() {
14131 b"pivotHierarchy" => {
14132 f_pivot_hierarchy
14133 .push(CTPivotHierarchy::from_xml(reader, &e, true)?);
14134 #[cfg(feature = "extra-children")]
14135 {
14136 child_idx += 1;
14137 }
14138 }
14139 #[cfg(feature = "extra-children")]
14140 _ => {
14141 let elem = RawXmlElement::from_empty(&e);
14143 extra_children.push(PositionedNode::new(
14144 child_idx,
14145 RawXmlNode::Element(elem),
14146 ));
14147 child_idx += 1;
14148 }
14149 #[cfg(not(feature = "extra-children"))]
14150 _ => {}
14151 }
14152 }
14153 Event::End(_) => break,
14154 Event::Eof => break,
14155 _ => {}
14156 }
14157 buf.clear();
14158 }
14159 }
14160
14161 Ok(Self {
14162 count: f_count,
14163 pivot_hierarchy: f_pivot_hierarchy,
14164 #[cfg(feature = "extra-attrs")]
14165 extra_attrs,
14166 #[cfg(feature = "extra-children")]
14167 extra_children,
14168 })
14169 }
14170}
14171
14172impl FromXml for CTPivotHierarchy {
14173 fn from_xml<R: BufRead>(
14174 reader: &mut Reader<R>,
14175 start_tag: &BytesStart,
14176 is_empty: bool,
14177 ) -> Result<Self, ParseError> {
14178 let mut f_outline = None;
14179 let mut f_multiple_item_selection_allowed = None;
14180 let mut f_subtotal_top = None;
14181 let mut f_show_in_field_list = None;
14182 let mut f_drag_to_row = None;
14183 let mut f_drag_to_col = None;
14184 let mut f_drag_to_page = None;
14185 let mut f_drag_to_data = None;
14186 let mut f_drag_off = None;
14187 let mut f_include_new_items_in_filter = None;
14188 let mut f_caption = None;
14189 let mut f_mps = None;
14190 let mut f_members = Vec::new();
14191 let mut f_extension_list = None;
14192 #[cfg(feature = "extra-attrs")]
14193 let mut extra_attrs = std::collections::HashMap::new();
14194 #[cfg(feature = "extra-children")]
14195 let mut extra_children = Vec::new();
14196 #[cfg(feature = "extra-children")]
14197 let mut child_idx: usize = 0;
14198
14199 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
14201 let val = String::from_utf8_lossy(&attr.value);
14202 match attr.key.local_name().as_ref() {
14203 b"outline" => {
14204 f_outline = Some(val == "true" || val == "1");
14205 }
14206 b"multipleItemSelectionAllowed" => {
14207 f_multiple_item_selection_allowed = Some(val == "true" || val == "1");
14208 }
14209 b"subtotalTop" => {
14210 f_subtotal_top = Some(val == "true" || val == "1");
14211 }
14212 b"showInFieldList" => {
14213 f_show_in_field_list = Some(val == "true" || val == "1");
14214 }
14215 b"dragToRow" => {
14216 f_drag_to_row = Some(val == "true" || val == "1");
14217 }
14218 b"dragToCol" => {
14219 f_drag_to_col = Some(val == "true" || val == "1");
14220 }
14221 b"dragToPage" => {
14222 f_drag_to_page = Some(val == "true" || val == "1");
14223 }
14224 b"dragToData" => {
14225 f_drag_to_data = Some(val == "true" || val == "1");
14226 }
14227 b"dragOff" => {
14228 f_drag_off = Some(val == "true" || val == "1");
14229 }
14230 b"includeNewItemsInFilter" => {
14231 f_include_new_items_in_filter = Some(val == "true" || val == "1");
14232 }
14233 b"caption" => {
14234 f_caption = Some(val.into_owned());
14235 }
14236 #[cfg(feature = "extra-attrs")]
14237 unknown => {
14238 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
14239 extra_attrs.insert(key, val.into_owned());
14240 }
14241 #[cfg(not(feature = "extra-attrs"))]
14242 _ => {}
14243 }
14244 }
14245
14246 if !is_empty {
14248 let mut buf = Vec::new();
14249 loop {
14250 match reader.read_event_into(&mut buf)? {
14251 Event::Start(e) => {
14252 match e.local_name().as_ref() {
14253 b"mps" => {
14254 f_mps = Some(Box::new(CTMemberProperties::from_xml(
14255 reader, &e, false,
14256 )?));
14257 #[cfg(feature = "extra-children")]
14258 {
14259 child_idx += 1;
14260 }
14261 }
14262 b"members" => {
14263 f_members.push(CTMembers::from_xml(reader, &e, false)?);
14264 #[cfg(feature = "extra-children")]
14265 {
14266 child_idx += 1;
14267 }
14268 }
14269 b"extLst" => {
14270 f_extension_list =
14271 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
14272 #[cfg(feature = "extra-children")]
14273 {
14274 child_idx += 1;
14275 }
14276 }
14277 #[cfg(feature = "extra-children")]
14278 _ => {
14279 let elem = RawXmlElement::from_reader(reader, &e)?;
14281 extra_children.push(PositionedNode::new(
14282 child_idx,
14283 RawXmlNode::Element(elem),
14284 ));
14285 child_idx += 1;
14286 }
14287 #[cfg(not(feature = "extra-children"))]
14288 _ => {
14289 skip_element(reader)?;
14291 }
14292 }
14293 }
14294 Event::Empty(e) => {
14295 match e.local_name().as_ref() {
14296 b"mps" => {
14297 f_mps =
14298 Some(Box::new(CTMemberProperties::from_xml(reader, &e, true)?));
14299 #[cfg(feature = "extra-children")]
14300 {
14301 child_idx += 1;
14302 }
14303 }
14304 b"members" => {
14305 f_members.push(CTMembers::from_xml(reader, &e, true)?);
14306 #[cfg(feature = "extra-children")]
14307 {
14308 child_idx += 1;
14309 }
14310 }
14311 b"extLst" => {
14312 f_extension_list =
14313 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
14314 #[cfg(feature = "extra-children")]
14315 {
14316 child_idx += 1;
14317 }
14318 }
14319 #[cfg(feature = "extra-children")]
14320 _ => {
14321 let elem = RawXmlElement::from_empty(&e);
14323 extra_children.push(PositionedNode::new(
14324 child_idx,
14325 RawXmlNode::Element(elem),
14326 ));
14327 child_idx += 1;
14328 }
14329 #[cfg(not(feature = "extra-children"))]
14330 _ => {}
14331 }
14332 }
14333 Event::End(_) => break,
14334 Event::Eof => break,
14335 _ => {}
14336 }
14337 buf.clear();
14338 }
14339 }
14340
14341 Ok(Self {
14342 outline: f_outline,
14343 multiple_item_selection_allowed: f_multiple_item_selection_allowed,
14344 subtotal_top: f_subtotal_top,
14345 show_in_field_list: f_show_in_field_list,
14346 drag_to_row: f_drag_to_row,
14347 drag_to_col: f_drag_to_col,
14348 drag_to_page: f_drag_to_page,
14349 drag_to_data: f_drag_to_data,
14350 drag_off: f_drag_off,
14351 include_new_items_in_filter: f_include_new_items_in_filter,
14352 caption: f_caption,
14353 mps: f_mps,
14354 members: f_members,
14355 extension_list: f_extension_list,
14356 #[cfg(feature = "extra-attrs")]
14357 extra_attrs,
14358 #[cfg(feature = "extra-children")]
14359 extra_children,
14360 })
14361 }
14362}
14363
14364impl FromXml for CTRowHierarchiesUsage {
14365 fn from_xml<R: BufRead>(
14366 reader: &mut Reader<R>,
14367 start_tag: &BytesStart,
14368 is_empty: bool,
14369 ) -> Result<Self, ParseError> {
14370 let mut f_count = None;
14371 let mut f_row_hierarchy_usage = Vec::new();
14372 #[cfg(feature = "extra-attrs")]
14373 let mut extra_attrs = std::collections::HashMap::new();
14374 #[cfg(feature = "extra-children")]
14375 let mut extra_children = Vec::new();
14376 #[cfg(feature = "extra-children")]
14377 let mut child_idx: usize = 0;
14378
14379 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
14381 let val = String::from_utf8_lossy(&attr.value);
14382 match attr.key.local_name().as_ref() {
14383 b"count" => {
14384 f_count = val.parse().ok();
14385 }
14386 #[cfg(feature = "extra-attrs")]
14387 unknown => {
14388 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
14389 extra_attrs.insert(key, val.into_owned());
14390 }
14391 #[cfg(not(feature = "extra-attrs"))]
14392 _ => {}
14393 }
14394 }
14395
14396 if !is_empty {
14398 let mut buf = Vec::new();
14399 loop {
14400 match reader.read_event_into(&mut buf)? {
14401 Event::Start(e) => {
14402 match e.local_name().as_ref() {
14403 b"rowHierarchyUsage" => {
14404 f_row_hierarchy_usage
14405 .push(CTHierarchyUsage::from_xml(reader, &e, false)?);
14406 #[cfg(feature = "extra-children")]
14407 {
14408 child_idx += 1;
14409 }
14410 }
14411 #[cfg(feature = "extra-children")]
14412 _ => {
14413 let elem = RawXmlElement::from_reader(reader, &e)?;
14415 extra_children.push(PositionedNode::new(
14416 child_idx,
14417 RawXmlNode::Element(elem),
14418 ));
14419 child_idx += 1;
14420 }
14421 #[cfg(not(feature = "extra-children"))]
14422 _ => {
14423 skip_element(reader)?;
14425 }
14426 }
14427 }
14428 Event::Empty(e) => {
14429 match e.local_name().as_ref() {
14430 b"rowHierarchyUsage" => {
14431 f_row_hierarchy_usage
14432 .push(CTHierarchyUsage::from_xml(reader, &e, true)?);
14433 #[cfg(feature = "extra-children")]
14434 {
14435 child_idx += 1;
14436 }
14437 }
14438 #[cfg(feature = "extra-children")]
14439 _ => {
14440 let elem = RawXmlElement::from_empty(&e);
14442 extra_children.push(PositionedNode::new(
14443 child_idx,
14444 RawXmlNode::Element(elem),
14445 ));
14446 child_idx += 1;
14447 }
14448 #[cfg(not(feature = "extra-children"))]
14449 _ => {}
14450 }
14451 }
14452 Event::End(_) => break,
14453 Event::Eof => break,
14454 _ => {}
14455 }
14456 buf.clear();
14457 }
14458 }
14459
14460 Ok(Self {
14461 count: f_count,
14462 row_hierarchy_usage: f_row_hierarchy_usage,
14463 #[cfg(feature = "extra-attrs")]
14464 extra_attrs,
14465 #[cfg(feature = "extra-children")]
14466 extra_children,
14467 })
14468 }
14469}
14470
14471impl FromXml for CTColHierarchiesUsage {
14472 fn from_xml<R: BufRead>(
14473 reader: &mut Reader<R>,
14474 start_tag: &BytesStart,
14475 is_empty: bool,
14476 ) -> Result<Self, ParseError> {
14477 let mut f_count = None;
14478 let mut f_col_hierarchy_usage = Vec::new();
14479 #[cfg(feature = "extra-attrs")]
14480 let mut extra_attrs = std::collections::HashMap::new();
14481 #[cfg(feature = "extra-children")]
14482 let mut extra_children = Vec::new();
14483 #[cfg(feature = "extra-children")]
14484 let mut child_idx: usize = 0;
14485
14486 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
14488 let val = String::from_utf8_lossy(&attr.value);
14489 match attr.key.local_name().as_ref() {
14490 b"count" => {
14491 f_count = val.parse().ok();
14492 }
14493 #[cfg(feature = "extra-attrs")]
14494 unknown => {
14495 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
14496 extra_attrs.insert(key, val.into_owned());
14497 }
14498 #[cfg(not(feature = "extra-attrs"))]
14499 _ => {}
14500 }
14501 }
14502
14503 if !is_empty {
14505 let mut buf = Vec::new();
14506 loop {
14507 match reader.read_event_into(&mut buf)? {
14508 Event::Start(e) => {
14509 match e.local_name().as_ref() {
14510 b"colHierarchyUsage" => {
14511 f_col_hierarchy_usage
14512 .push(CTHierarchyUsage::from_xml(reader, &e, false)?);
14513 #[cfg(feature = "extra-children")]
14514 {
14515 child_idx += 1;
14516 }
14517 }
14518 #[cfg(feature = "extra-children")]
14519 _ => {
14520 let elem = RawXmlElement::from_reader(reader, &e)?;
14522 extra_children.push(PositionedNode::new(
14523 child_idx,
14524 RawXmlNode::Element(elem),
14525 ));
14526 child_idx += 1;
14527 }
14528 #[cfg(not(feature = "extra-children"))]
14529 _ => {
14530 skip_element(reader)?;
14532 }
14533 }
14534 }
14535 Event::Empty(e) => {
14536 match e.local_name().as_ref() {
14537 b"colHierarchyUsage" => {
14538 f_col_hierarchy_usage
14539 .push(CTHierarchyUsage::from_xml(reader, &e, true)?);
14540 #[cfg(feature = "extra-children")]
14541 {
14542 child_idx += 1;
14543 }
14544 }
14545 #[cfg(feature = "extra-children")]
14546 _ => {
14547 let elem = RawXmlElement::from_empty(&e);
14549 extra_children.push(PositionedNode::new(
14550 child_idx,
14551 RawXmlNode::Element(elem),
14552 ));
14553 child_idx += 1;
14554 }
14555 #[cfg(not(feature = "extra-children"))]
14556 _ => {}
14557 }
14558 }
14559 Event::End(_) => break,
14560 Event::Eof => break,
14561 _ => {}
14562 }
14563 buf.clear();
14564 }
14565 }
14566
14567 Ok(Self {
14568 count: f_count,
14569 col_hierarchy_usage: f_col_hierarchy_usage,
14570 #[cfg(feature = "extra-attrs")]
14571 extra_attrs,
14572 #[cfg(feature = "extra-children")]
14573 extra_children,
14574 })
14575 }
14576}
14577
14578impl FromXml for CTHierarchyUsage {
14579 fn from_xml<R: BufRead>(
14580 reader: &mut Reader<R>,
14581 start_tag: &BytesStart,
14582 is_empty: bool,
14583 ) -> Result<Self, ParseError> {
14584 let mut f_hierarchy_usage: Option<i32> = None;
14585 #[cfg(feature = "extra-attrs")]
14586 let mut extra_attrs = std::collections::HashMap::new();
14587
14588 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
14590 let val = String::from_utf8_lossy(&attr.value);
14591 match attr.key.local_name().as_ref() {
14592 b"hierarchyUsage" => {
14593 f_hierarchy_usage = val.parse().ok();
14594 }
14595 #[cfg(feature = "extra-attrs")]
14596 unknown => {
14597 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
14598 extra_attrs.insert(key, val.into_owned());
14599 }
14600 #[cfg(not(feature = "extra-attrs"))]
14601 _ => {}
14602 }
14603 }
14604
14605 if !is_empty {
14606 let mut buf = Vec::new();
14607 loop {
14608 match reader.read_event_into(&mut buf)? {
14609 Event::End(_) => break,
14610 Event::Eof => break,
14611 _ => {}
14612 }
14613 buf.clear();
14614 }
14615 }
14616
14617 Ok(Self {
14618 hierarchy_usage: f_hierarchy_usage
14619 .ok_or_else(|| ParseError::MissingAttribute("hierarchyUsage".to_string()))?,
14620 #[cfg(feature = "extra-attrs")]
14621 extra_attrs,
14622 })
14623 }
14624}
14625
14626impl FromXml for CTMemberProperties {
14627 fn from_xml<R: BufRead>(
14628 reader: &mut Reader<R>,
14629 start_tag: &BytesStart,
14630 is_empty: bool,
14631 ) -> Result<Self, ParseError> {
14632 let mut f_count = None;
14633 let mut f_mp = Vec::new();
14634 #[cfg(feature = "extra-attrs")]
14635 let mut extra_attrs = std::collections::HashMap::new();
14636 #[cfg(feature = "extra-children")]
14637 let mut extra_children = Vec::new();
14638 #[cfg(feature = "extra-children")]
14639 let mut child_idx: usize = 0;
14640
14641 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
14643 let val = String::from_utf8_lossy(&attr.value);
14644 match attr.key.local_name().as_ref() {
14645 b"count" => {
14646 f_count = val.parse().ok();
14647 }
14648 #[cfg(feature = "extra-attrs")]
14649 unknown => {
14650 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
14651 extra_attrs.insert(key, val.into_owned());
14652 }
14653 #[cfg(not(feature = "extra-attrs"))]
14654 _ => {}
14655 }
14656 }
14657
14658 if !is_empty {
14660 let mut buf = Vec::new();
14661 loop {
14662 match reader.read_event_into(&mut buf)? {
14663 Event::Start(e) => {
14664 match e.local_name().as_ref() {
14665 b"mp" => {
14666 f_mp.push(CTMemberProperty::from_xml(reader, &e, false)?);
14667 #[cfg(feature = "extra-children")]
14668 {
14669 child_idx += 1;
14670 }
14671 }
14672 #[cfg(feature = "extra-children")]
14673 _ => {
14674 let elem = RawXmlElement::from_reader(reader, &e)?;
14676 extra_children.push(PositionedNode::new(
14677 child_idx,
14678 RawXmlNode::Element(elem),
14679 ));
14680 child_idx += 1;
14681 }
14682 #[cfg(not(feature = "extra-children"))]
14683 _ => {
14684 skip_element(reader)?;
14686 }
14687 }
14688 }
14689 Event::Empty(e) => {
14690 match e.local_name().as_ref() {
14691 b"mp" => {
14692 f_mp.push(CTMemberProperty::from_xml(reader, &e, true)?);
14693 #[cfg(feature = "extra-children")]
14694 {
14695 child_idx += 1;
14696 }
14697 }
14698 #[cfg(feature = "extra-children")]
14699 _ => {
14700 let elem = RawXmlElement::from_empty(&e);
14702 extra_children.push(PositionedNode::new(
14703 child_idx,
14704 RawXmlNode::Element(elem),
14705 ));
14706 child_idx += 1;
14707 }
14708 #[cfg(not(feature = "extra-children"))]
14709 _ => {}
14710 }
14711 }
14712 Event::End(_) => break,
14713 Event::Eof => break,
14714 _ => {}
14715 }
14716 buf.clear();
14717 }
14718 }
14719
14720 Ok(Self {
14721 count: f_count,
14722 mp: f_mp,
14723 #[cfg(feature = "extra-attrs")]
14724 extra_attrs,
14725 #[cfg(feature = "extra-children")]
14726 extra_children,
14727 })
14728 }
14729}
14730
14731impl FromXml for CTMemberProperty {
14732 fn from_xml<R: BufRead>(
14733 reader: &mut Reader<R>,
14734 start_tag: &BytesStart,
14735 is_empty: bool,
14736 ) -> Result<Self, ParseError> {
14737 let mut f_name = None;
14738 let mut f_show_cell = None;
14739 let mut f_show_tip = None;
14740 let mut f_show_as_caption = None;
14741 let mut f_name_len = None;
14742 let mut f_p_pos = None;
14743 let mut f_p_len = None;
14744 let mut f_level = None;
14745 let mut f_field: Option<u32> = None;
14746 #[cfg(feature = "extra-attrs")]
14747 let mut extra_attrs = std::collections::HashMap::new();
14748
14749 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
14751 let val = String::from_utf8_lossy(&attr.value);
14752 match attr.key.local_name().as_ref() {
14753 b"name" => {
14754 f_name = Some(val.into_owned());
14755 }
14756 b"showCell" => {
14757 f_show_cell = Some(val == "true" || val == "1");
14758 }
14759 b"showTip" => {
14760 f_show_tip = Some(val == "true" || val == "1");
14761 }
14762 b"showAsCaption" => {
14763 f_show_as_caption = Some(val == "true" || val == "1");
14764 }
14765 b"nameLen" => {
14766 f_name_len = val.parse().ok();
14767 }
14768 b"pPos" => {
14769 f_p_pos = val.parse().ok();
14770 }
14771 b"pLen" => {
14772 f_p_len = val.parse().ok();
14773 }
14774 b"level" => {
14775 f_level = val.parse().ok();
14776 }
14777 b"field" => {
14778 f_field = val.parse().ok();
14779 }
14780 #[cfg(feature = "extra-attrs")]
14781 unknown => {
14782 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
14783 extra_attrs.insert(key, val.into_owned());
14784 }
14785 #[cfg(not(feature = "extra-attrs"))]
14786 _ => {}
14787 }
14788 }
14789
14790 if !is_empty {
14791 let mut buf = Vec::new();
14792 loop {
14793 match reader.read_event_into(&mut buf)? {
14794 Event::End(_) => break,
14795 Event::Eof => break,
14796 _ => {}
14797 }
14798 buf.clear();
14799 }
14800 }
14801
14802 Ok(Self {
14803 name: f_name,
14804 show_cell: f_show_cell,
14805 show_tip: f_show_tip,
14806 show_as_caption: f_show_as_caption,
14807 name_len: f_name_len,
14808 p_pos: f_p_pos,
14809 p_len: f_p_len,
14810 level: f_level,
14811 field: f_field.ok_or_else(|| ParseError::MissingAttribute("field".to_string()))?,
14812 #[cfg(feature = "extra-attrs")]
14813 extra_attrs,
14814 })
14815 }
14816}
14817
14818impl FromXml for CTMembers {
14819 fn from_xml<R: BufRead>(
14820 reader: &mut Reader<R>,
14821 start_tag: &BytesStart,
14822 is_empty: bool,
14823 ) -> Result<Self, ParseError> {
14824 let mut f_count = None;
14825 let mut f_level = None;
14826 let mut f_member = Vec::new();
14827 #[cfg(feature = "extra-attrs")]
14828 let mut extra_attrs = std::collections::HashMap::new();
14829 #[cfg(feature = "extra-children")]
14830 let mut extra_children = Vec::new();
14831 #[cfg(feature = "extra-children")]
14832 let mut child_idx: usize = 0;
14833
14834 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
14836 let val = String::from_utf8_lossy(&attr.value);
14837 match attr.key.local_name().as_ref() {
14838 b"count" => {
14839 f_count = val.parse().ok();
14840 }
14841 b"level" => {
14842 f_level = val.parse().ok();
14843 }
14844 #[cfg(feature = "extra-attrs")]
14845 unknown => {
14846 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
14847 extra_attrs.insert(key, val.into_owned());
14848 }
14849 #[cfg(not(feature = "extra-attrs"))]
14850 _ => {}
14851 }
14852 }
14853
14854 if !is_empty {
14856 let mut buf = Vec::new();
14857 loop {
14858 match reader.read_event_into(&mut buf)? {
14859 Event::Start(e) => {
14860 match e.local_name().as_ref() {
14861 b"member" => {
14862 f_member.push(CTMember::from_xml(reader, &e, false)?);
14863 #[cfg(feature = "extra-children")]
14864 {
14865 child_idx += 1;
14866 }
14867 }
14868 #[cfg(feature = "extra-children")]
14869 _ => {
14870 let elem = RawXmlElement::from_reader(reader, &e)?;
14872 extra_children.push(PositionedNode::new(
14873 child_idx,
14874 RawXmlNode::Element(elem),
14875 ));
14876 child_idx += 1;
14877 }
14878 #[cfg(not(feature = "extra-children"))]
14879 _ => {
14880 skip_element(reader)?;
14882 }
14883 }
14884 }
14885 Event::Empty(e) => {
14886 match e.local_name().as_ref() {
14887 b"member" => {
14888 f_member.push(CTMember::from_xml(reader, &e, true)?);
14889 #[cfg(feature = "extra-children")]
14890 {
14891 child_idx += 1;
14892 }
14893 }
14894 #[cfg(feature = "extra-children")]
14895 _ => {
14896 let elem = RawXmlElement::from_empty(&e);
14898 extra_children.push(PositionedNode::new(
14899 child_idx,
14900 RawXmlNode::Element(elem),
14901 ));
14902 child_idx += 1;
14903 }
14904 #[cfg(not(feature = "extra-children"))]
14905 _ => {}
14906 }
14907 }
14908 Event::End(_) => break,
14909 Event::Eof => break,
14910 _ => {}
14911 }
14912 buf.clear();
14913 }
14914 }
14915
14916 Ok(Self {
14917 count: f_count,
14918 level: f_level,
14919 member: f_member,
14920 #[cfg(feature = "extra-attrs")]
14921 extra_attrs,
14922 #[cfg(feature = "extra-children")]
14923 extra_children,
14924 })
14925 }
14926}
14927
14928impl FromXml for CTMember {
14929 fn from_xml<R: BufRead>(
14930 reader: &mut Reader<R>,
14931 start_tag: &BytesStart,
14932 is_empty: bool,
14933 ) -> Result<Self, ParseError> {
14934 let mut f_name: Option<XmlString> = None;
14935 #[cfg(feature = "extra-attrs")]
14936 let mut extra_attrs = std::collections::HashMap::new();
14937
14938 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
14940 let val = String::from_utf8_lossy(&attr.value);
14941 match attr.key.local_name().as_ref() {
14942 b"name" => {
14943 f_name = Some(val.into_owned());
14944 }
14945 #[cfg(feature = "extra-attrs")]
14946 unknown => {
14947 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
14948 extra_attrs.insert(key, val.into_owned());
14949 }
14950 #[cfg(not(feature = "extra-attrs"))]
14951 _ => {}
14952 }
14953 }
14954
14955 if !is_empty {
14956 let mut buf = Vec::new();
14957 loop {
14958 match reader.read_event_into(&mut buf)? {
14959 Event::End(_) => break,
14960 Event::Eof => break,
14961 _ => {}
14962 }
14963 buf.clear();
14964 }
14965 }
14966
14967 Ok(Self {
14968 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
14969 #[cfg(feature = "extra-attrs")]
14970 extra_attrs,
14971 })
14972 }
14973}
14974
14975impl FromXml for CTDimensions {
14976 fn from_xml<R: BufRead>(
14977 reader: &mut Reader<R>,
14978 start_tag: &BytesStart,
14979 is_empty: bool,
14980 ) -> Result<Self, ParseError> {
14981 let mut f_count = None;
14982 let mut f_dimension = Vec::new();
14983 #[cfg(feature = "extra-attrs")]
14984 let mut extra_attrs = std::collections::HashMap::new();
14985 #[cfg(feature = "extra-children")]
14986 let mut extra_children = Vec::new();
14987 #[cfg(feature = "extra-children")]
14988 let mut child_idx: usize = 0;
14989
14990 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
14992 let val = String::from_utf8_lossy(&attr.value);
14993 match attr.key.local_name().as_ref() {
14994 b"count" => {
14995 f_count = val.parse().ok();
14996 }
14997 #[cfg(feature = "extra-attrs")]
14998 unknown => {
14999 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
15000 extra_attrs.insert(key, val.into_owned());
15001 }
15002 #[cfg(not(feature = "extra-attrs"))]
15003 _ => {}
15004 }
15005 }
15006
15007 if !is_empty {
15009 let mut buf = Vec::new();
15010 loop {
15011 match reader.read_event_into(&mut buf)? {
15012 Event::Start(e) => {
15013 match e.local_name().as_ref() {
15014 b"dimension" => {
15015 f_dimension.push(CTPivotDimension::from_xml(reader, &e, false)?);
15016 #[cfg(feature = "extra-children")]
15017 {
15018 child_idx += 1;
15019 }
15020 }
15021 #[cfg(feature = "extra-children")]
15022 _ => {
15023 let elem = RawXmlElement::from_reader(reader, &e)?;
15025 extra_children.push(PositionedNode::new(
15026 child_idx,
15027 RawXmlNode::Element(elem),
15028 ));
15029 child_idx += 1;
15030 }
15031 #[cfg(not(feature = "extra-children"))]
15032 _ => {
15033 skip_element(reader)?;
15035 }
15036 }
15037 }
15038 Event::Empty(e) => {
15039 match e.local_name().as_ref() {
15040 b"dimension" => {
15041 f_dimension.push(CTPivotDimension::from_xml(reader, &e, true)?);
15042 #[cfg(feature = "extra-children")]
15043 {
15044 child_idx += 1;
15045 }
15046 }
15047 #[cfg(feature = "extra-children")]
15048 _ => {
15049 let elem = RawXmlElement::from_empty(&e);
15051 extra_children.push(PositionedNode::new(
15052 child_idx,
15053 RawXmlNode::Element(elem),
15054 ));
15055 child_idx += 1;
15056 }
15057 #[cfg(not(feature = "extra-children"))]
15058 _ => {}
15059 }
15060 }
15061 Event::End(_) => break,
15062 Event::Eof => break,
15063 _ => {}
15064 }
15065 buf.clear();
15066 }
15067 }
15068
15069 Ok(Self {
15070 count: f_count,
15071 dimension: f_dimension,
15072 #[cfg(feature = "extra-attrs")]
15073 extra_attrs,
15074 #[cfg(feature = "extra-children")]
15075 extra_children,
15076 })
15077 }
15078}
15079
15080impl FromXml for CTPivotDimension {
15081 fn from_xml<R: BufRead>(
15082 reader: &mut Reader<R>,
15083 start_tag: &BytesStart,
15084 is_empty: bool,
15085 ) -> Result<Self, ParseError> {
15086 let mut f_measure = None;
15087 let mut f_name: Option<XmlString> = None;
15088 let mut f_unique_name: Option<XmlString> = None;
15089 let mut f_caption: Option<XmlString> = None;
15090 #[cfg(feature = "extra-attrs")]
15091 let mut extra_attrs = std::collections::HashMap::new();
15092
15093 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
15095 let val = String::from_utf8_lossy(&attr.value);
15096 match attr.key.local_name().as_ref() {
15097 b"measure" => {
15098 f_measure = Some(val == "true" || val == "1");
15099 }
15100 b"name" => {
15101 f_name = Some(val.into_owned());
15102 }
15103 b"uniqueName" => {
15104 f_unique_name = Some(val.into_owned());
15105 }
15106 b"caption" => {
15107 f_caption = Some(val.into_owned());
15108 }
15109 #[cfg(feature = "extra-attrs")]
15110 unknown => {
15111 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
15112 extra_attrs.insert(key, val.into_owned());
15113 }
15114 #[cfg(not(feature = "extra-attrs"))]
15115 _ => {}
15116 }
15117 }
15118
15119 if !is_empty {
15120 let mut buf = Vec::new();
15121 loop {
15122 match reader.read_event_into(&mut buf)? {
15123 Event::End(_) => break,
15124 Event::Eof => break,
15125 _ => {}
15126 }
15127 buf.clear();
15128 }
15129 }
15130
15131 Ok(Self {
15132 measure: f_measure,
15133 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
15134 unique_name: f_unique_name
15135 .ok_or_else(|| ParseError::MissingAttribute("uniqueName".to_string()))?,
15136 caption: f_caption
15137 .ok_or_else(|| ParseError::MissingAttribute("caption".to_string()))?,
15138 #[cfg(feature = "extra-attrs")]
15139 extra_attrs,
15140 })
15141 }
15142}
15143
15144impl FromXml for CTMeasureGroups {
15145 fn from_xml<R: BufRead>(
15146 reader: &mut Reader<R>,
15147 start_tag: &BytesStart,
15148 is_empty: bool,
15149 ) -> Result<Self, ParseError> {
15150 let mut f_count = None;
15151 let mut f_measure_group = Vec::new();
15152 #[cfg(feature = "extra-attrs")]
15153 let mut extra_attrs = std::collections::HashMap::new();
15154 #[cfg(feature = "extra-children")]
15155 let mut extra_children = Vec::new();
15156 #[cfg(feature = "extra-children")]
15157 let mut child_idx: usize = 0;
15158
15159 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
15161 let val = String::from_utf8_lossy(&attr.value);
15162 match attr.key.local_name().as_ref() {
15163 b"count" => {
15164 f_count = val.parse().ok();
15165 }
15166 #[cfg(feature = "extra-attrs")]
15167 unknown => {
15168 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
15169 extra_attrs.insert(key, val.into_owned());
15170 }
15171 #[cfg(not(feature = "extra-attrs"))]
15172 _ => {}
15173 }
15174 }
15175
15176 if !is_empty {
15178 let mut buf = Vec::new();
15179 loop {
15180 match reader.read_event_into(&mut buf)? {
15181 Event::Start(e) => {
15182 match e.local_name().as_ref() {
15183 b"measureGroup" => {
15184 f_measure_group.push(CTMeasureGroup::from_xml(reader, &e, false)?);
15185 #[cfg(feature = "extra-children")]
15186 {
15187 child_idx += 1;
15188 }
15189 }
15190 #[cfg(feature = "extra-children")]
15191 _ => {
15192 let elem = RawXmlElement::from_reader(reader, &e)?;
15194 extra_children.push(PositionedNode::new(
15195 child_idx,
15196 RawXmlNode::Element(elem),
15197 ));
15198 child_idx += 1;
15199 }
15200 #[cfg(not(feature = "extra-children"))]
15201 _ => {
15202 skip_element(reader)?;
15204 }
15205 }
15206 }
15207 Event::Empty(e) => {
15208 match e.local_name().as_ref() {
15209 b"measureGroup" => {
15210 f_measure_group.push(CTMeasureGroup::from_xml(reader, &e, true)?);
15211 #[cfg(feature = "extra-children")]
15212 {
15213 child_idx += 1;
15214 }
15215 }
15216 #[cfg(feature = "extra-children")]
15217 _ => {
15218 let elem = RawXmlElement::from_empty(&e);
15220 extra_children.push(PositionedNode::new(
15221 child_idx,
15222 RawXmlNode::Element(elem),
15223 ));
15224 child_idx += 1;
15225 }
15226 #[cfg(not(feature = "extra-children"))]
15227 _ => {}
15228 }
15229 }
15230 Event::End(_) => break,
15231 Event::Eof => break,
15232 _ => {}
15233 }
15234 buf.clear();
15235 }
15236 }
15237
15238 Ok(Self {
15239 count: f_count,
15240 measure_group: f_measure_group,
15241 #[cfg(feature = "extra-attrs")]
15242 extra_attrs,
15243 #[cfg(feature = "extra-children")]
15244 extra_children,
15245 })
15246 }
15247}
15248
15249impl FromXml for CTMeasureDimensionMaps {
15250 fn from_xml<R: BufRead>(
15251 reader: &mut Reader<R>,
15252 start_tag: &BytesStart,
15253 is_empty: bool,
15254 ) -> Result<Self, ParseError> {
15255 let mut f_count = None;
15256 let mut f_map = Vec::new();
15257 #[cfg(feature = "extra-attrs")]
15258 let mut extra_attrs = std::collections::HashMap::new();
15259 #[cfg(feature = "extra-children")]
15260 let mut extra_children = Vec::new();
15261 #[cfg(feature = "extra-children")]
15262 let mut child_idx: usize = 0;
15263
15264 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
15266 let val = String::from_utf8_lossy(&attr.value);
15267 match attr.key.local_name().as_ref() {
15268 b"count" => {
15269 f_count = val.parse().ok();
15270 }
15271 #[cfg(feature = "extra-attrs")]
15272 unknown => {
15273 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
15274 extra_attrs.insert(key, val.into_owned());
15275 }
15276 #[cfg(not(feature = "extra-attrs"))]
15277 _ => {}
15278 }
15279 }
15280
15281 if !is_empty {
15283 let mut buf = Vec::new();
15284 loop {
15285 match reader.read_event_into(&mut buf)? {
15286 Event::Start(e) => {
15287 match e.local_name().as_ref() {
15288 b"map" => {
15289 f_map.push(CTMeasureDimensionMap::from_xml(reader, &e, false)?);
15290 #[cfg(feature = "extra-children")]
15291 {
15292 child_idx += 1;
15293 }
15294 }
15295 #[cfg(feature = "extra-children")]
15296 _ => {
15297 let elem = RawXmlElement::from_reader(reader, &e)?;
15299 extra_children.push(PositionedNode::new(
15300 child_idx,
15301 RawXmlNode::Element(elem),
15302 ));
15303 child_idx += 1;
15304 }
15305 #[cfg(not(feature = "extra-children"))]
15306 _ => {
15307 skip_element(reader)?;
15309 }
15310 }
15311 }
15312 Event::Empty(e) => {
15313 match e.local_name().as_ref() {
15314 b"map" => {
15315 f_map.push(CTMeasureDimensionMap::from_xml(reader, &e, true)?);
15316 #[cfg(feature = "extra-children")]
15317 {
15318 child_idx += 1;
15319 }
15320 }
15321 #[cfg(feature = "extra-children")]
15322 _ => {
15323 let elem = RawXmlElement::from_empty(&e);
15325 extra_children.push(PositionedNode::new(
15326 child_idx,
15327 RawXmlNode::Element(elem),
15328 ));
15329 child_idx += 1;
15330 }
15331 #[cfg(not(feature = "extra-children"))]
15332 _ => {}
15333 }
15334 }
15335 Event::End(_) => break,
15336 Event::Eof => break,
15337 _ => {}
15338 }
15339 buf.clear();
15340 }
15341 }
15342
15343 Ok(Self {
15344 count: f_count,
15345 map: f_map,
15346 #[cfg(feature = "extra-attrs")]
15347 extra_attrs,
15348 #[cfg(feature = "extra-children")]
15349 extra_children,
15350 })
15351 }
15352}
15353
15354impl FromXml for CTMeasureGroup {
15355 fn from_xml<R: BufRead>(
15356 reader: &mut Reader<R>,
15357 start_tag: &BytesStart,
15358 is_empty: bool,
15359 ) -> Result<Self, ParseError> {
15360 let mut f_name: Option<XmlString> = None;
15361 let mut f_caption: Option<XmlString> = None;
15362 #[cfg(feature = "extra-attrs")]
15363 let mut extra_attrs = std::collections::HashMap::new();
15364
15365 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
15367 let val = String::from_utf8_lossy(&attr.value);
15368 match attr.key.local_name().as_ref() {
15369 b"name" => {
15370 f_name = Some(val.into_owned());
15371 }
15372 b"caption" => {
15373 f_caption = Some(val.into_owned());
15374 }
15375 #[cfg(feature = "extra-attrs")]
15376 unknown => {
15377 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
15378 extra_attrs.insert(key, val.into_owned());
15379 }
15380 #[cfg(not(feature = "extra-attrs"))]
15381 _ => {}
15382 }
15383 }
15384
15385 if !is_empty {
15386 let mut buf = Vec::new();
15387 loop {
15388 match reader.read_event_into(&mut buf)? {
15389 Event::End(_) => break,
15390 Event::Eof => break,
15391 _ => {}
15392 }
15393 buf.clear();
15394 }
15395 }
15396
15397 Ok(Self {
15398 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
15399 caption: f_caption
15400 .ok_or_else(|| ParseError::MissingAttribute("caption".to_string()))?,
15401 #[cfg(feature = "extra-attrs")]
15402 extra_attrs,
15403 })
15404 }
15405}
15406
15407impl FromXml for CTMeasureDimensionMap {
15408 fn from_xml<R: BufRead>(
15409 reader: &mut Reader<R>,
15410 start_tag: &BytesStart,
15411 is_empty: bool,
15412 ) -> Result<Self, ParseError> {
15413 let mut f_measure_group = None;
15414 let mut f_dimension = None;
15415 #[cfg(feature = "extra-attrs")]
15416 let mut extra_attrs = std::collections::HashMap::new();
15417
15418 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
15420 let val = String::from_utf8_lossy(&attr.value);
15421 match attr.key.local_name().as_ref() {
15422 b"measureGroup" => {
15423 f_measure_group = val.parse().ok();
15424 }
15425 b"dimension" => {
15426 f_dimension = val.parse().ok();
15427 }
15428 #[cfg(feature = "extra-attrs")]
15429 unknown => {
15430 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
15431 extra_attrs.insert(key, val.into_owned());
15432 }
15433 #[cfg(not(feature = "extra-attrs"))]
15434 _ => {}
15435 }
15436 }
15437
15438 if !is_empty {
15439 let mut buf = Vec::new();
15440 loop {
15441 match reader.read_event_into(&mut buf)? {
15442 Event::End(_) => break,
15443 Event::Eof => break,
15444 _ => {}
15445 }
15446 buf.clear();
15447 }
15448 }
15449
15450 Ok(Self {
15451 measure_group: f_measure_group,
15452 dimension: f_dimension,
15453 #[cfg(feature = "extra-attrs")]
15454 extra_attrs,
15455 })
15456 }
15457}
15458
15459impl FromXml for CTPivotTableStyle {
15460 fn from_xml<R: BufRead>(
15461 reader: &mut Reader<R>,
15462 start_tag: &BytesStart,
15463 is_empty: bool,
15464 ) -> Result<Self, ParseError> {
15465 let mut f_name = None;
15466 let mut f_show_row_headers = None;
15467 let mut f_show_col_headers = None;
15468 let mut f_show_row_stripes = None;
15469 let mut f_show_col_stripes = None;
15470 let mut f_show_last_column = None;
15471 #[cfg(feature = "extra-attrs")]
15472 let mut extra_attrs = std::collections::HashMap::new();
15473
15474 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
15476 let val = String::from_utf8_lossy(&attr.value);
15477 match attr.key.local_name().as_ref() {
15478 b"name" => {
15479 f_name = Some(val.into_owned());
15480 }
15481 b"showRowHeaders" => {
15482 f_show_row_headers = Some(val == "true" || val == "1");
15483 }
15484 b"showColHeaders" => {
15485 f_show_col_headers = Some(val == "true" || val == "1");
15486 }
15487 b"showRowStripes" => {
15488 f_show_row_stripes = Some(val == "true" || val == "1");
15489 }
15490 b"showColStripes" => {
15491 f_show_col_stripes = Some(val == "true" || val == "1");
15492 }
15493 b"showLastColumn" => {
15494 f_show_last_column = Some(val == "true" || val == "1");
15495 }
15496 #[cfg(feature = "extra-attrs")]
15497 unknown => {
15498 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
15499 extra_attrs.insert(key, val.into_owned());
15500 }
15501 #[cfg(not(feature = "extra-attrs"))]
15502 _ => {}
15503 }
15504 }
15505
15506 if !is_empty {
15507 let mut buf = Vec::new();
15508 loop {
15509 match reader.read_event_into(&mut buf)? {
15510 Event::End(_) => break,
15511 Event::Eof => break,
15512 _ => {}
15513 }
15514 buf.clear();
15515 }
15516 }
15517
15518 Ok(Self {
15519 name: f_name,
15520 show_row_headers: f_show_row_headers,
15521 show_col_headers: f_show_col_headers,
15522 show_row_stripes: f_show_row_stripes,
15523 show_col_stripes: f_show_col_stripes,
15524 show_last_column: f_show_last_column,
15525 #[cfg(feature = "extra-attrs")]
15526 extra_attrs,
15527 })
15528 }
15529}
15530
15531impl FromXml for PivotFilters {
15532 fn from_xml<R: BufRead>(
15533 reader: &mut Reader<R>,
15534 start_tag: &BytesStart,
15535 is_empty: bool,
15536 ) -> Result<Self, ParseError> {
15537 let mut f_count = None;
15538 let mut f_filter = Vec::new();
15539 #[cfg(feature = "extra-attrs")]
15540 let mut extra_attrs = std::collections::HashMap::new();
15541 #[cfg(feature = "extra-children")]
15542 let mut extra_children = Vec::new();
15543 #[cfg(feature = "extra-children")]
15544 let mut child_idx: usize = 0;
15545
15546 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
15548 let val = String::from_utf8_lossy(&attr.value);
15549 match attr.key.local_name().as_ref() {
15550 b"count" => {
15551 f_count = val.parse().ok();
15552 }
15553 #[cfg(feature = "extra-attrs")]
15554 unknown => {
15555 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
15556 extra_attrs.insert(key, val.into_owned());
15557 }
15558 #[cfg(not(feature = "extra-attrs"))]
15559 _ => {}
15560 }
15561 }
15562
15563 if !is_empty {
15565 let mut buf = Vec::new();
15566 loop {
15567 match reader.read_event_into(&mut buf)? {
15568 Event::Start(e) => {
15569 match e.local_name().as_ref() {
15570 b"filter" => {
15571 f_filter.push(PivotFilter::from_xml(reader, &e, false)?);
15572 #[cfg(feature = "extra-children")]
15573 {
15574 child_idx += 1;
15575 }
15576 }
15577 #[cfg(feature = "extra-children")]
15578 _ => {
15579 let elem = RawXmlElement::from_reader(reader, &e)?;
15581 extra_children.push(PositionedNode::new(
15582 child_idx,
15583 RawXmlNode::Element(elem),
15584 ));
15585 child_idx += 1;
15586 }
15587 #[cfg(not(feature = "extra-children"))]
15588 _ => {
15589 skip_element(reader)?;
15591 }
15592 }
15593 }
15594 Event::Empty(e) => {
15595 match e.local_name().as_ref() {
15596 b"filter" => {
15597 f_filter.push(PivotFilter::from_xml(reader, &e, true)?);
15598 #[cfg(feature = "extra-children")]
15599 {
15600 child_idx += 1;
15601 }
15602 }
15603 #[cfg(feature = "extra-children")]
15604 _ => {
15605 let elem = RawXmlElement::from_empty(&e);
15607 extra_children.push(PositionedNode::new(
15608 child_idx,
15609 RawXmlNode::Element(elem),
15610 ));
15611 child_idx += 1;
15612 }
15613 #[cfg(not(feature = "extra-children"))]
15614 _ => {}
15615 }
15616 }
15617 Event::End(_) => break,
15618 Event::Eof => break,
15619 _ => {}
15620 }
15621 buf.clear();
15622 }
15623 }
15624
15625 Ok(Self {
15626 count: f_count,
15627 filter: f_filter,
15628 #[cfg(feature = "extra-attrs")]
15629 extra_attrs,
15630 #[cfg(feature = "extra-children")]
15631 extra_children,
15632 })
15633 }
15634}
15635
15636impl FromXml for PivotFilter {
15637 fn from_xml<R: BufRead>(
15638 reader: &mut Reader<R>,
15639 start_tag: &BytesStart,
15640 is_empty: bool,
15641 ) -> Result<Self, ParseError> {
15642 let mut f_fld: Option<u32> = None;
15643 let mut f_mp_fld = None;
15644 let mut f_type: Option<STPivotFilterType> = None;
15645 let mut f_eval_order = None;
15646 let mut f_id: Option<u32> = None;
15647 let mut f_i_measure_hier = None;
15648 let mut f_i_measure_fld = None;
15649 let mut f_name = None;
15650 let mut f_description = None;
15651 let mut f_string_value1 = None;
15652 let mut f_string_value2 = None;
15653 let mut f_auto_filter: Option<Box<AutoFilter>> = None;
15654 let mut f_extension_list = None;
15655 #[cfg(feature = "extra-attrs")]
15656 let mut extra_attrs = std::collections::HashMap::new();
15657 #[cfg(feature = "extra-children")]
15658 let mut extra_children = Vec::new();
15659 #[cfg(feature = "extra-children")]
15660 let mut child_idx: usize = 0;
15661
15662 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
15664 let val = String::from_utf8_lossy(&attr.value);
15665 match attr.key.local_name().as_ref() {
15666 b"fld" => {
15667 f_fld = val.parse().ok();
15668 }
15669 b"mpFld" => {
15670 f_mp_fld = val.parse().ok();
15671 }
15672 b"type" => {
15673 f_type = val.parse().ok();
15674 }
15675 b"evalOrder" => {
15676 f_eval_order = val.parse().ok();
15677 }
15678 b"id" => {
15679 f_id = val.parse().ok();
15680 }
15681 b"iMeasureHier" => {
15682 f_i_measure_hier = val.parse().ok();
15683 }
15684 b"iMeasureFld" => {
15685 f_i_measure_fld = val.parse().ok();
15686 }
15687 b"name" => {
15688 f_name = Some(val.into_owned());
15689 }
15690 b"description" => {
15691 f_description = Some(val.into_owned());
15692 }
15693 b"stringValue1" => {
15694 f_string_value1 = Some(val.into_owned());
15695 }
15696 b"stringValue2" => {
15697 f_string_value2 = Some(val.into_owned());
15698 }
15699 #[cfg(feature = "extra-attrs")]
15700 unknown => {
15701 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
15702 extra_attrs.insert(key, val.into_owned());
15703 }
15704 #[cfg(not(feature = "extra-attrs"))]
15705 _ => {}
15706 }
15707 }
15708
15709 if !is_empty {
15711 let mut buf = Vec::new();
15712 loop {
15713 match reader.read_event_into(&mut buf)? {
15714 Event::Start(e) => {
15715 match e.local_name().as_ref() {
15716 b"autoFilter" => {
15717 f_auto_filter =
15718 Some(Box::new(AutoFilter::from_xml(reader, &e, false)?));
15719 #[cfg(feature = "extra-children")]
15720 {
15721 child_idx += 1;
15722 }
15723 }
15724 b"extLst" => {
15725 f_extension_list =
15726 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
15727 #[cfg(feature = "extra-children")]
15728 {
15729 child_idx += 1;
15730 }
15731 }
15732 #[cfg(feature = "extra-children")]
15733 _ => {
15734 let elem = RawXmlElement::from_reader(reader, &e)?;
15736 extra_children.push(PositionedNode::new(
15737 child_idx,
15738 RawXmlNode::Element(elem),
15739 ));
15740 child_idx += 1;
15741 }
15742 #[cfg(not(feature = "extra-children"))]
15743 _ => {
15744 skip_element(reader)?;
15746 }
15747 }
15748 }
15749 Event::Empty(e) => {
15750 match e.local_name().as_ref() {
15751 b"autoFilter" => {
15752 f_auto_filter =
15753 Some(Box::new(AutoFilter::from_xml(reader, &e, true)?));
15754 #[cfg(feature = "extra-children")]
15755 {
15756 child_idx += 1;
15757 }
15758 }
15759 b"extLst" => {
15760 f_extension_list =
15761 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
15762 #[cfg(feature = "extra-children")]
15763 {
15764 child_idx += 1;
15765 }
15766 }
15767 #[cfg(feature = "extra-children")]
15768 _ => {
15769 let elem = RawXmlElement::from_empty(&e);
15771 extra_children.push(PositionedNode::new(
15772 child_idx,
15773 RawXmlNode::Element(elem),
15774 ));
15775 child_idx += 1;
15776 }
15777 #[cfg(not(feature = "extra-children"))]
15778 _ => {}
15779 }
15780 }
15781 Event::End(_) => break,
15782 Event::Eof => break,
15783 _ => {}
15784 }
15785 buf.clear();
15786 }
15787 }
15788
15789 Ok(Self {
15790 fld: f_fld.ok_or_else(|| ParseError::MissingAttribute("fld".to_string()))?,
15791 mp_fld: f_mp_fld,
15792 r#type: f_type.ok_or_else(|| ParseError::MissingAttribute("type".to_string()))?,
15793 eval_order: f_eval_order,
15794 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
15795 i_measure_hier: f_i_measure_hier,
15796 i_measure_fld: f_i_measure_fld,
15797 name: f_name,
15798 description: f_description,
15799 string_value1: f_string_value1,
15800 string_value2: f_string_value2,
15801 auto_filter: f_auto_filter
15802 .ok_or_else(|| ParseError::MissingAttribute("autoFilter".to_string()))?,
15803 extension_list: f_extension_list,
15804 #[cfg(feature = "extra-attrs")]
15805 extra_attrs,
15806 #[cfg(feature = "extra-children")]
15807 extra_children,
15808 })
15809 }
15810}
15811
15812impl FromXml for PivotArea {
15813 fn from_xml<R: BufRead>(
15814 reader: &mut Reader<R>,
15815 start_tag: &BytesStart,
15816 is_empty: bool,
15817 ) -> Result<Self, ParseError> {
15818 let mut f_field = None;
15819 let mut f_type = None;
15820 let mut f_data_only = None;
15821 let mut f_label_only = None;
15822 let mut f_grand_row = None;
15823 let mut f_grand_col = None;
15824 let mut f_cache_index = None;
15825 let mut f_outline = None;
15826 let mut f_offset = None;
15827 let mut f_collapsed_levels_are_subtotals = None;
15828 let mut f_axis = None;
15829 let mut f_field_position = None;
15830 let mut f_references = None;
15831 let mut f_extension_list = None;
15832 #[cfg(feature = "extra-attrs")]
15833 let mut extra_attrs = std::collections::HashMap::new();
15834 #[cfg(feature = "extra-children")]
15835 let mut extra_children = Vec::new();
15836 #[cfg(feature = "extra-children")]
15837 let mut child_idx: usize = 0;
15838
15839 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
15841 let val = String::from_utf8_lossy(&attr.value);
15842 match attr.key.local_name().as_ref() {
15843 b"field" => {
15844 f_field = val.parse().ok();
15845 }
15846 b"type" => {
15847 f_type = val.parse().ok();
15848 }
15849 b"dataOnly" => {
15850 f_data_only = Some(val == "true" || val == "1");
15851 }
15852 b"labelOnly" => {
15853 f_label_only = Some(val == "true" || val == "1");
15854 }
15855 b"grandRow" => {
15856 f_grand_row = Some(val == "true" || val == "1");
15857 }
15858 b"grandCol" => {
15859 f_grand_col = Some(val == "true" || val == "1");
15860 }
15861 b"cacheIndex" => {
15862 f_cache_index = Some(val == "true" || val == "1");
15863 }
15864 b"outline" => {
15865 f_outline = Some(val == "true" || val == "1");
15866 }
15867 b"offset" => {
15868 f_offset = Some(val.into_owned());
15869 }
15870 b"collapsedLevelsAreSubtotals" => {
15871 f_collapsed_levels_are_subtotals = Some(val == "true" || val == "1");
15872 }
15873 b"axis" => {
15874 f_axis = val.parse().ok();
15875 }
15876 b"fieldPosition" => {
15877 f_field_position = val.parse().ok();
15878 }
15879 #[cfg(feature = "extra-attrs")]
15880 unknown => {
15881 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
15882 extra_attrs.insert(key, val.into_owned());
15883 }
15884 #[cfg(not(feature = "extra-attrs"))]
15885 _ => {}
15886 }
15887 }
15888
15889 if !is_empty {
15891 let mut buf = Vec::new();
15892 loop {
15893 match reader.read_event_into(&mut buf)? {
15894 Event::Start(e) => {
15895 match e.local_name().as_ref() {
15896 b"references" => {
15897 f_references = Some(Box::new(CTPivotAreaReferences::from_xml(
15898 reader, &e, false,
15899 )?));
15900 #[cfg(feature = "extra-children")]
15901 {
15902 child_idx += 1;
15903 }
15904 }
15905 b"extLst" => {
15906 f_extension_list =
15907 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
15908 #[cfg(feature = "extra-children")]
15909 {
15910 child_idx += 1;
15911 }
15912 }
15913 #[cfg(feature = "extra-children")]
15914 _ => {
15915 let elem = RawXmlElement::from_reader(reader, &e)?;
15917 extra_children.push(PositionedNode::new(
15918 child_idx,
15919 RawXmlNode::Element(elem),
15920 ));
15921 child_idx += 1;
15922 }
15923 #[cfg(not(feature = "extra-children"))]
15924 _ => {
15925 skip_element(reader)?;
15927 }
15928 }
15929 }
15930 Event::Empty(e) => {
15931 match e.local_name().as_ref() {
15932 b"references" => {
15933 f_references = Some(Box::new(CTPivotAreaReferences::from_xml(
15934 reader, &e, true,
15935 )?));
15936 #[cfg(feature = "extra-children")]
15937 {
15938 child_idx += 1;
15939 }
15940 }
15941 b"extLst" => {
15942 f_extension_list =
15943 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
15944 #[cfg(feature = "extra-children")]
15945 {
15946 child_idx += 1;
15947 }
15948 }
15949 #[cfg(feature = "extra-children")]
15950 _ => {
15951 let elem = RawXmlElement::from_empty(&e);
15953 extra_children.push(PositionedNode::new(
15954 child_idx,
15955 RawXmlNode::Element(elem),
15956 ));
15957 child_idx += 1;
15958 }
15959 #[cfg(not(feature = "extra-children"))]
15960 _ => {}
15961 }
15962 }
15963 Event::End(_) => break,
15964 Event::Eof => break,
15965 _ => {}
15966 }
15967 buf.clear();
15968 }
15969 }
15970
15971 Ok(Self {
15972 field: f_field,
15973 r#type: f_type,
15974 data_only: f_data_only,
15975 label_only: f_label_only,
15976 grand_row: f_grand_row,
15977 grand_col: f_grand_col,
15978 cache_index: f_cache_index,
15979 outline: f_outline,
15980 offset: f_offset,
15981 collapsed_levels_are_subtotals: f_collapsed_levels_are_subtotals,
15982 axis: f_axis,
15983 field_position: f_field_position,
15984 references: f_references,
15985 extension_list: f_extension_list,
15986 #[cfg(feature = "extra-attrs")]
15987 extra_attrs,
15988 #[cfg(feature = "extra-children")]
15989 extra_children,
15990 })
15991 }
15992}
15993
15994impl FromXml for CTPivotAreaReferences {
15995 fn from_xml<R: BufRead>(
15996 reader: &mut Reader<R>,
15997 start_tag: &BytesStart,
15998 is_empty: bool,
15999 ) -> Result<Self, ParseError> {
16000 let mut f_count = None;
16001 let mut f_reference = Vec::new();
16002 #[cfg(feature = "extra-attrs")]
16003 let mut extra_attrs = std::collections::HashMap::new();
16004 #[cfg(feature = "extra-children")]
16005 let mut extra_children = Vec::new();
16006 #[cfg(feature = "extra-children")]
16007 let mut child_idx: usize = 0;
16008
16009 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
16011 let val = String::from_utf8_lossy(&attr.value);
16012 match attr.key.local_name().as_ref() {
16013 b"count" => {
16014 f_count = val.parse().ok();
16015 }
16016 #[cfg(feature = "extra-attrs")]
16017 unknown => {
16018 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
16019 extra_attrs.insert(key, val.into_owned());
16020 }
16021 #[cfg(not(feature = "extra-attrs"))]
16022 _ => {}
16023 }
16024 }
16025
16026 if !is_empty {
16028 let mut buf = Vec::new();
16029 loop {
16030 match reader.read_event_into(&mut buf)? {
16031 Event::Start(e) => {
16032 match e.local_name().as_ref() {
16033 b"reference" => {
16034 f_reference
16035 .push(CTPivotAreaReference::from_xml(reader, &e, false)?);
16036 #[cfg(feature = "extra-children")]
16037 {
16038 child_idx += 1;
16039 }
16040 }
16041 #[cfg(feature = "extra-children")]
16042 _ => {
16043 let elem = RawXmlElement::from_reader(reader, &e)?;
16045 extra_children.push(PositionedNode::new(
16046 child_idx,
16047 RawXmlNode::Element(elem),
16048 ));
16049 child_idx += 1;
16050 }
16051 #[cfg(not(feature = "extra-children"))]
16052 _ => {
16053 skip_element(reader)?;
16055 }
16056 }
16057 }
16058 Event::Empty(e) => {
16059 match e.local_name().as_ref() {
16060 b"reference" => {
16061 f_reference.push(CTPivotAreaReference::from_xml(reader, &e, true)?);
16062 #[cfg(feature = "extra-children")]
16063 {
16064 child_idx += 1;
16065 }
16066 }
16067 #[cfg(feature = "extra-children")]
16068 _ => {
16069 let elem = RawXmlElement::from_empty(&e);
16071 extra_children.push(PositionedNode::new(
16072 child_idx,
16073 RawXmlNode::Element(elem),
16074 ));
16075 child_idx += 1;
16076 }
16077 #[cfg(not(feature = "extra-children"))]
16078 _ => {}
16079 }
16080 }
16081 Event::End(_) => break,
16082 Event::Eof => break,
16083 _ => {}
16084 }
16085 buf.clear();
16086 }
16087 }
16088
16089 Ok(Self {
16090 count: f_count,
16091 reference: f_reference,
16092 #[cfg(feature = "extra-attrs")]
16093 extra_attrs,
16094 #[cfg(feature = "extra-children")]
16095 extra_children,
16096 })
16097 }
16098}
16099
16100impl FromXml for CTPivotAreaReference {
16101 fn from_xml<R: BufRead>(
16102 reader: &mut Reader<R>,
16103 start_tag: &BytesStart,
16104 is_empty: bool,
16105 ) -> Result<Self, ParseError> {
16106 let mut f_field = None;
16107 let mut f_count = None;
16108 let mut f_selected = None;
16109 let mut f_by_position = None;
16110 let mut f_relative = None;
16111 let mut f_default_subtotal = None;
16112 let mut f_sum_subtotal = None;
16113 let mut f_count_a_subtotal = None;
16114 let mut f_avg_subtotal = None;
16115 let mut f_max_subtotal = None;
16116 let mut f_min_subtotal = None;
16117 let mut f_product_subtotal = None;
16118 let mut f_count_subtotal = None;
16119 let mut f_std_dev_subtotal = None;
16120 let mut f_std_dev_p_subtotal = None;
16121 let mut f_var_subtotal = None;
16122 let mut f_var_p_subtotal = None;
16123 let mut f_x = Vec::new();
16124 let mut f_extension_list = None;
16125 #[cfg(feature = "extra-attrs")]
16126 let mut extra_attrs = std::collections::HashMap::new();
16127 #[cfg(feature = "extra-children")]
16128 let mut extra_children = Vec::new();
16129 #[cfg(feature = "extra-children")]
16130 let mut child_idx: usize = 0;
16131
16132 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
16134 let val = String::from_utf8_lossy(&attr.value);
16135 match attr.key.local_name().as_ref() {
16136 b"field" => {
16137 f_field = val.parse().ok();
16138 }
16139 b"count" => {
16140 f_count = val.parse().ok();
16141 }
16142 b"selected" => {
16143 f_selected = Some(val == "true" || val == "1");
16144 }
16145 b"byPosition" => {
16146 f_by_position = Some(val == "true" || val == "1");
16147 }
16148 b"relative" => {
16149 f_relative = Some(val == "true" || val == "1");
16150 }
16151 b"defaultSubtotal" => {
16152 f_default_subtotal = Some(val == "true" || val == "1");
16153 }
16154 b"sumSubtotal" => {
16155 f_sum_subtotal = Some(val == "true" || val == "1");
16156 }
16157 b"countASubtotal" => {
16158 f_count_a_subtotal = Some(val == "true" || val == "1");
16159 }
16160 b"avgSubtotal" => {
16161 f_avg_subtotal = Some(val == "true" || val == "1");
16162 }
16163 b"maxSubtotal" => {
16164 f_max_subtotal = Some(val == "true" || val == "1");
16165 }
16166 b"minSubtotal" => {
16167 f_min_subtotal = Some(val == "true" || val == "1");
16168 }
16169 b"productSubtotal" => {
16170 f_product_subtotal = Some(val == "true" || val == "1");
16171 }
16172 b"countSubtotal" => {
16173 f_count_subtotal = Some(val == "true" || val == "1");
16174 }
16175 b"stdDevSubtotal" => {
16176 f_std_dev_subtotal = Some(val == "true" || val == "1");
16177 }
16178 b"stdDevPSubtotal" => {
16179 f_std_dev_p_subtotal = Some(val == "true" || val == "1");
16180 }
16181 b"varSubtotal" => {
16182 f_var_subtotal = Some(val == "true" || val == "1");
16183 }
16184 b"varPSubtotal" => {
16185 f_var_p_subtotal = Some(val == "true" || val == "1");
16186 }
16187 #[cfg(feature = "extra-attrs")]
16188 unknown => {
16189 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
16190 extra_attrs.insert(key, val.into_owned());
16191 }
16192 #[cfg(not(feature = "extra-attrs"))]
16193 _ => {}
16194 }
16195 }
16196
16197 if !is_empty {
16199 let mut buf = Vec::new();
16200 loop {
16201 match reader.read_event_into(&mut buf)? {
16202 Event::Start(e) => {
16203 match e.local_name().as_ref() {
16204 b"x" => {
16205 f_x.push(CTIndex::from_xml(reader, &e, false)?);
16206 #[cfg(feature = "extra-children")]
16207 {
16208 child_idx += 1;
16209 }
16210 }
16211 b"extLst" => {
16212 f_extension_list =
16213 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
16214 #[cfg(feature = "extra-children")]
16215 {
16216 child_idx += 1;
16217 }
16218 }
16219 #[cfg(feature = "extra-children")]
16220 _ => {
16221 let elem = RawXmlElement::from_reader(reader, &e)?;
16223 extra_children.push(PositionedNode::new(
16224 child_idx,
16225 RawXmlNode::Element(elem),
16226 ));
16227 child_idx += 1;
16228 }
16229 #[cfg(not(feature = "extra-children"))]
16230 _ => {
16231 skip_element(reader)?;
16233 }
16234 }
16235 }
16236 Event::Empty(e) => {
16237 match e.local_name().as_ref() {
16238 b"x" => {
16239 f_x.push(CTIndex::from_xml(reader, &e, true)?);
16240 #[cfg(feature = "extra-children")]
16241 {
16242 child_idx += 1;
16243 }
16244 }
16245 b"extLst" => {
16246 f_extension_list =
16247 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
16248 #[cfg(feature = "extra-children")]
16249 {
16250 child_idx += 1;
16251 }
16252 }
16253 #[cfg(feature = "extra-children")]
16254 _ => {
16255 let elem = RawXmlElement::from_empty(&e);
16257 extra_children.push(PositionedNode::new(
16258 child_idx,
16259 RawXmlNode::Element(elem),
16260 ));
16261 child_idx += 1;
16262 }
16263 #[cfg(not(feature = "extra-children"))]
16264 _ => {}
16265 }
16266 }
16267 Event::End(_) => break,
16268 Event::Eof => break,
16269 _ => {}
16270 }
16271 buf.clear();
16272 }
16273 }
16274
16275 Ok(Self {
16276 field: f_field,
16277 count: f_count,
16278 selected: f_selected,
16279 by_position: f_by_position,
16280 relative: f_relative,
16281 default_subtotal: f_default_subtotal,
16282 sum_subtotal: f_sum_subtotal,
16283 count_a_subtotal: f_count_a_subtotal,
16284 avg_subtotal: f_avg_subtotal,
16285 max_subtotal: f_max_subtotal,
16286 min_subtotal: f_min_subtotal,
16287 product_subtotal: f_product_subtotal,
16288 count_subtotal: f_count_subtotal,
16289 std_dev_subtotal: f_std_dev_subtotal,
16290 std_dev_p_subtotal: f_std_dev_p_subtotal,
16291 var_subtotal: f_var_subtotal,
16292 var_p_subtotal: f_var_p_subtotal,
16293 x: f_x,
16294 extension_list: f_extension_list,
16295 #[cfg(feature = "extra-attrs")]
16296 extra_attrs,
16297 #[cfg(feature = "extra-children")]
16298 extra_children,
16299 })
16300 }
16301}
16302
16303impl FromXml for CTIndex {
16304 fn from_xml<R: BufRead>(
16305 reader: &mut Reader<R>,
16306 start_tag: &BytesStart,
16307 is_empty: bool,
16308 ) -> Result<Self, ParseError> {
16309 let mut f_value: Option<u32> = None;
16310 #[cfg(feature = "extra-attrs")]
16311 let mut extra_attrs = std::collections::HashMap::new();
16312
16313 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
16315 let val = String::from_utf8_lossy(&attr.value);
16316 match attr.key.local_name().as_ref() {
16317 b"v" => {
16318 f_value = val.parse().ok();
16319 }
16320 #[cfg(feature = "extra-attrs")]
16321 unknown => {
16322 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
16323 extra_attrs.insert(key, val.into_owned());
16324 }
16325 #[cfg(not(feature = "extra-attrs"))]
16326 _ => {}
16327 }
16328 }
16329
16330 if !is_empty {
16331 let mut buf = Vec::new();
16332 loop {
16333 match reader.read_event_into(&mut buf)? {
16334 Event::End(_) => break,
16335 Event::Eof => break,
16336 _ => {}
16337 }
16338 buf.clear();
16339 }
16340 }
16341
16342 Ok(Self {
16343 value: f_value.ok_or_else(|| ParseError::MissingAttribute("v".to_string()))?,
16344 #[cfg(feature = "extra-attrs")]
16345 extra_attrs,
16346 })
16347 }
16348}
16349
16350impl FromXml for QueryTable {
16351 fn from_xml<R: BufRead>(
16352 reader: &mut Reader<R>,
16353 start_tag: &BytesStart,
16354 is_empty: bool,
16355 ) -> Result<Self, ParseError> {
16356 let mut f_name: Option<XmlString> = None;
16357 let mut f_headers = None;
16358 let mut f_row_numbers = None;
16359 let mut f_disable_refresh = None;
16360 let mut f_background_refresh = None;
16361 let mut f_first_background_refresh = None;
16362 let mut f_refresh_on_load = None;
16363 let mut f_grow_shrink_type = None;
16364 let mut f_fill_formulas = None;
16365 let mut f_remove_data_on_save = None;
16366 let mut f_disable_edit = None;
16367 let mut f_preserve_formatting = None;
16368 let mut f_adjust_column_width = None;
16369 let mut f_intermediate = None;
16370 let mut f_connection_id: Option<u32> = None;
16371 let mut f_auto_format_id = None;
16372 let mut f_apply_number_formats = None;
16373 let mut f_apply_border_formats = None;
16374 let mut f_apply_font_formats = None;
16375 let mut f_apply_pattern_formats = None;
16376 let mut f_apply_alignment_formats = None;
16377 let mut f_apply_width_height_formats = None;
16378 let mut f_query_table_refresh = None;
16379 let mut f_extension_list = None;
16380 #[cfg(feature = "extra-attrs")]
16381 let mut extra_attrs = std::collections::HashMap::new();
16382 #[cfg(feature = "extra-children")]
16383 let mut extra_children = Vec::new();
16384 #[cfg(feature = "extra-children")]
16385 let mut child_idx: usize = 0;
16386
16387 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
16389 let val = String::from_utf8_lossy(&attr.value);
16390 match attr.key.local_name().as_ref() {
16391 b"name" => {
16392 f_name = Some(val.into_owned());
16393 }
16394 b"headers" => {
16395 f_headers = Some(val == "true" || val == "1");
16396 }
16397 b"rowNumbers" => {
16398 f_row_numbers = Some(val == "true" || val == "1");
16399 }
16400 b"disableRefresh" => {
16401 f_disable_refresh = Some(val == "true" || val == "1");
16402 }
16403 b"backgroundRefresh" => {
16404 f_background_refresh = Some(val == "true" || val == "1");
16405 }
16406 b"firstBackgroundRefresh" => {
16407 f_first_background_refresh = Some(val == "true" || val == "1");
16408 }
16409 b"refreshOnLoad" => {
16410 f_refresh_on_load = Some(val == "true" || val == "1");
16411 }
16412 b"growShrinkType" => {
16413 f_grow_shrink_type = val.parse().ok();
16414 }
16415 b"fillFormulas" => {
16416 f_fill_formulas = Some(val == "true" || val == "1");
16417 }
16418 b"removeDataOnSave" => {
16419 f_remove_data_on_save = Some(val == "true" || val == "1");
16420 }
16421 b"disableEdit" => {
16422 f_disable_edit = Some(val == "true" || val == "1");
16423 }
16424 b"preserveFormatting" => {
16425 f_preserve_formatting = Some(val == "true" || val == "1");
16426 }
16427 b"adjustColumnWidth" => {
16428 f_adjust_column_width = Some(val == "true" || val == "1");
16429 }
16430 b"intermediate" => {
16431 f_intermediate = Some(val == "true" || val == "1");
16432 }
16433 b"connectionId" => {
16434 f_connection_id = val.parse().ok();
16435 }
16436 b"autoFormatId" => {
16437 f_auto_format_id = val.parse().ok();
16438 }
16439 b"applyNumberFormats" => {
16440 f_apply_number_formats = Some(val == "true" || val == "1");
16441 }
16442 b"applyBorderFormats" => {
16443 f_apply_border_formats = Some(val == "true" || val == "1");
16444 }
16445 b"applyFontFormats" => {
16446 f_apply_font_formats = Some(val == "true" || val == "1");
16447 }
16448 b"applyPatternFormats" => {
16449 f_apply_pattern_formats = Some(val == "true" || val == "1");
16450 }
16451 b"applyAlignmentFormats" => {
16452 f_apply_alignment_formats = Some(val == "true" || val == "1");
16453 }
16454 b"applyWidthHeightFormats" => {
16455 f_apply_width_height_formats = Some(val == "true" || val == "1");
16456 }
16457 #[cfg(feature = "extra-attrs")]
16458 unknown => {
16459 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
16460 extra_attrs.insert(key, val.into_owned());
16461 }
16462 #[cfg(not(feature = "extra-attrs"))]
16463 _ => {}
16464 }
16465 }
16466
16467 if !is_empty {
16469 let mut buf = Vec::new();
16470 loop {
16471 match reader.read_event_into(&mut buf)? {
16472 Event::Start(e) => {
16473 match e.local_name().as_ref() {
16474 b"queryTableRefresh" => {
16475 f_query_table_refresh =
16476 Some(Box::new(QueryTableRefresh::from_xml(reader, &e, false)?));
16477 #[cfg(feature = "extra-children")]
16478 {
16479 child_idx += 1;
16480 }
16481 }
16482 b"extLst" => {
16483 f_extension_list =
16484 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
16485 #[cfg(feature = "extra-children")]
16486 {
16487 child_idx += 1;
16488 }
16489 }
16490 #[cfg(feature = "extra-children")]
16491 _ => {
16492 let elem = RawXmlElement::from_reader(reader, &e)?;
16494 extra_children.push(PositionedNode::new(
16495 child_idx,
16496 RawXmlNode::Element(elem),
16497 ));
16498 child_idx += 1;
16499 }
16500 #[cfg(not(feature = "extra-children"))]
16501 _ => {
16502 skip_element(reader)?;
16504 }
16505 }
16506 }
16507 Event::Empty(e) => {
16508 match e.local_name().as_ref() {
16509 b"queryTableRefresh" => {
16510 f_query_table_refresh =
16511 Some(Box::new(QueryTableRefresh::from_xml(reader, &e, true)?));
16512 #[cfg(feature = "extra-children")]
16513 {
16514 child_idx += 1;
16515 }
16516 }
16517 b"extLst" => {
16518 f_extension_list =
16519 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
16520 #[cfg(feature = "extra-children")]
16521 {
16522 child_idx += 1;
16523 }
16524 }
16525 #[cfg(feature = "extra-children")]
16526 _ => {
16527 let elem = RawXmlElement::from_empty(&e);
16529 extra_children.push(PositionedNode::new(
16530 child_idx,
16531 RawXmlNode::Element(elem),
16532 ));
16533 child_idx += 1;
16534 }
16535 #[cfg(not(feature = "extra-children"))]
16536 _ => {}
16537 }
16538 }
16539 Event::End(_) => break,
16540 Event::Eof => break,
16541 _ => {}
16542 }
16543 buf.clear();
16544 }
16545 }
16546
16547 Ok(Self {
16548 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
16549 headers: f_headers,
16550 row_numbers: f_row_numbers,
16551 disable_refresh: f_disable_refresh,
16552 background_refresh: f_background_refresh,
16553 first_background_refresh: f_first_background_refresh,
16554 refresh_on_load: f_refresh_on_load,
16555 grow_shrink_type: f_grow_shrink_type,
16556 fill_formulas: f_fill_formulas,
16557 remove_data_on_save: f_remove_data_on_save,
16558 disable_edit: f_disable_edit,
16559 preserve_formatting: f_preserve_formatting,
16560 adjust_column_width: f_adjust_column_width,
16561 intermediate: f_intermediate,
16562 connection_id: f_connection_id
16563 .ok_or_else(|| ParseError::MissingAttribute("connectionId".to_string()))?,
16564 auto_format_id: f_auto_format_id,
16565 apply_number_formats: f_apply_number_formats,
16566 apply_border_formats: f_apply_border_formats,
16567 apply_font_formats: f_apply_font_formats,
16568 apply_pattern_formats: f_apply_pattern_formats,
16569 apply_alignment_formats: f_apply_alignment_formats,
16570 apply_width_height_formats: f_apply_width_height_formats,
16571 query_table_refresh: f_query_table_refresh,
16572 extension_list: f_extension_list,
16573 #[cfg(feature = "extra-attrs")]
16574 extra_attrs,
16575 #[cfg(feature = "extra-children")]
16576 extra_children,
16577 })
16578 }
16579}
16580
16581impl FromXml for QueryTableRefresh {
16582 fn from_xml<R: BufRead>(
16583 reader: &mut Reader<R>,
16584 start_tag: &BytesStart,
16585 is_empty: bool,
16586 ) -> Result<Self, ParseError> {
16587 let mut f_preserve_sort_filter_layout = None;
16588 let mut f_field_id_wrapped = None;
16589 let mut f_headers_in_last_refresh = None;
16590 let mut f_minimum_version = None;
16591 let mut f_next_id = None;
16592 let mut f_unbound_columns_left = None;
16593 let mut f_unbound_columns_right = None;
16594 let mut f_query_table_fields: Option<Box<QueryTableFields>> = None;
16595 let mut f_query_table_deleted_fields = None;
16596 let mut f_sort_state = None;
16597 let mut f_extension_list = None;
16598 #[cfg(feature = "extra-attrs")]
16599 let mut extra_attrs = std::collections::HashMap::new();
16600 #[cfg(feature = "extra-children")]
16601 let mut extra_children = Vec::new();
16602 #[cfg(feature = "extra-children")]
16603 let mut child_idx: usize = 0;
16604
16605 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
16607 let val = String::from_utf8_lossy(&attr.value);
16608 match attr.key.local_name().as_ref() {
16609 b"preserveSortFilterLayout" => {
16610 f_preserve_sort_filter_layout = Some(val == "true" || val == "1");
16611 }
16612 b"fieldIdWrapped" => {
16613 f_field_id_wrapped = Some(val == "true" || val == "1");
16614 }
16615 b"headersInLastRefresh" => {
16616 f_headers_in_last_refresh = Some(val == "true" || val == "1");
16617 }
16618 b"minimumVersion" => {
16619 f_minimum_version = val.parse().ok();
16620 }
16621 b"nextId" => {
16622 f_next_id = val.parse().ok();
16623 }
16624 b"unboundColumnsLeft" => {
16625 f_unbound_columns_left = val.parse().ok();
16626 }
16627 b"unboundColumnsRight" => {
16628 f_unbound_columns_right = val.parse().ok();
16629 }
16630 #[cfg(feature = "extra-attrs")]
16631 unknown => {
16632 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
16633 extra_attrs.insert(key, val.into_owned());
16634 }
16635 #[cfg(not(feature = "extra-attrs"))]
16636 _ => {}
16637 }
16638 }
16639
16640 if !is_empty {
16642 let mut buf = Vec::new();
16643 loop {
16644 match reader.read_event_into(&mut buf)? {
16645 Event::Start(e) => {
16646 match e.local_name().as_ref() {
16647 b"queryTableFields" => {
16648 f_query_table_fields =
16649 Some(Box::new(QueryTableFields::from_xml(reader, &e, false)?));
16650 #[cfg(feature = "extra-children")]
16651 {
16652 child_idx += 1;
16653 }
16654 }
16655 b"queryTableDeletedFields" => {
16656 f_query_table_deleted_fields = Some(Box::new(
16657 QueryTableDeletedFields::from_xml(reader, &e, false)?,
16658 ));
16659 #[cfg(feature = "extra-children")]
16660 {
16661 child_idx += 1;
16662 }
16663 }
16664 b"sortState" => {
16665 f_sort_state =
16666 Some(Box::new(SortState::from_xml(reader, &e, false)?));
16667 #[cfg(feature = "extra-children")]
16668 {
16669 child_idx += 1;
16670 }
16671 }
16672 b"extLst" => {
16673 f_extension_list =
16674 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
16675 #[cfg(feature = "extra-children")]
16676 {
16677 child_idx += 1;
16678 }
16679 }
16680 #[cfg(feature = "extra-children")]
16681 _ => {
16682 let elem = RawXmlElement::from_reader(reader, &e)?;
16684 extra_children.push(PositionedNode::new(
16685 child_idx,
16686 RawXmlNode::Element(elem),
16687 ));
16688 child_idx += 1;
16689 }
16690 #[cfg(not(feature = "extra-children"))]
16691 _ => {
16692 skip_element(reader)?;
16694 }
16695 }
16696 }
16697 Event::Empty(e) => {
16698 match e.local_name().as_ref() {
16699 b"queryTableFields" => {
16700 f_query_table_fields =
16701 Some(Box::new(QueryTableFields::from_xml(reader, &e, true)?));
16702 #[cfg(feature = "extra-children")]
16703 {
16704 child_idx += 1;
16705 }
16706 }
16707 b"queryTableDeletedFields" => {
16708 f_query_table_deleted_fields = Some(Box::new(
16709 QueryTableDeletedFields::from_xml(reader, &e, true)?,
16710 ));
16711 #[cfg(feature = "extra-children")]
16712 {
16713 child_idx += 1;
16714 }
16715 }
16716 b"sortState" => {
16717 f_sort_state =
16718 Some(Box::new(SortState::from_xml(reader, &e, true)?));
16719 #[cfg(feature = "extra-children")]
16720 {
16721 child_idx += 1;
16722 }
16723 }
16724 b"extLst" => {
16725 f_extension_list =
16726 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
16727 #[cfg(feature = "extra-children")]
16728 {
16729 child_idx += 1;
16730 }
16731 }
16732 #[cfg(feature = "extra-children")]
16733 _ => {
16734 let elem = RawXmlElement::from_empty(&e);
16736 extra_children.push(PositionedNode::new(
16737 child_idx,
16738 RawXmlNode::Element(elem),
16739 ));
16740 child_idx += 1;
16741 }
16742 #[cfg(not(feature = "extra-children"))]
16743 _ => {}
16744 }
16745 }
16746 Event::End(_) => break,
16747 Event::Eof => break,
16748 _ => {}
16749 }
16750 buf.clear();
16751 }
16752 }
16753
16754 Ok(Self {
16755 preserve_sort_filter_layout: f_preserve_sort_filter_layout,
16756 field_id_wrapped: f_field_id_wrapped,
16757 headers_in_last_refresh: f_headers_in_last_refresh,
16758 minimum_version: f_minimum_version,
16759 next_id: f_next_id,
16760 unbound_columns_left: f_unbound_columns_left,
16761 unbound_columns_right: f_unbound_columns_right,
16762 query_table_fields: f_query_table_fields
16763 .ok_or_else(|| ParseError::MissingAttribute("queryTableFields".to_string()))?,
16764 query_table_deleted_fields: f_query_table_deleted_fields,
16765 sort_state: f_sort_state,
16766 extension_list: f_extension_list,
16767 #[cfg(feature = "extra-attrs")]
16768 extra_attrs,
16769 #[cfg(feature = "extra-children")]
16770 extra_children,
16771 })
16772 }
16773}
16774
16775impl FromXml for QueryTableDeletedFields {
16776 fn from_xml<R: BufRead>(
16777 reader: &mut Reader<R>,
16778 start_tag: &BytesStart,
16779 is_empty: bool,
16780 ) -> Result<Self, ParseError> {
16781 let mut f_count = None;
16782 let mut f_deleted_field = Vec::new();
16783 #[cfg(feature = "extra-attrs")]
16784 let mut extra_attrs = std::collections::HashMap::new();
16785 #[cfg(feature = "extra-children")]
16786 let mut extra_children = Vec::new();
16787 #[cfg(feature = "extra-children")]
16788 let mut child_idx: usize = 0;
16789
16790 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
16792 let val = String::from_utf8_lossy(&attr.value);
16793 match attr.key.local_name().as_ref() {
16794 b"count" => {
16795 f_count = val.parse().ok();
16796 }
16797 #[cfg(feature = "extra-attrs")]
16798 unknown => {
16799 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
16800 extra_attrs.insert(key, val.into_owned());
16801 }
16802 #[cfg(not(feature = "extra-attrs"))]
16803 _ => {}
16804 }
16805 }
16806
16807 if !is_empty {
16809 let mut buf = Vec::new();
16810 loop {
16811 match reader.read_event_into(&mut buf)? {
16812 Event::Start(e) => {
16813 match e.local_name().as_ref() {
16814 b"deletedField" => {
16815 f_deleted_field.push(CTDeletedField::from_xml(reader, &e, false)?);
16816 #[cfg(feature = "extra-children")]
16817 {
16818 child_idx += 1;
16819 }
16820 }
16821 #[cfg(feature = "extra-children")]
16822 _ => {
16823 let elem = RawXmlElement::from_reader(reader, &e)?;
16825 extra_children.push(PositionedNode::new(
16826 child_idx,
16827 RawXmlNode::Element(elem),
16828 ));
16829 child_idx += 1;
16830 }
16831 #[cfg(not(feature = "extra-children"))]
16832 _ => {
16833 skip_element(reader)?;
16835 }
16836 }
16837 }
16838 Event::Empty(e) => {
16839 match e.local_name().as_ref() {
16840 b"deletedField" => {
16841 f_deleted_field.push(CTDeletedField::from_xml(reader, &e, true)?);
16842 #[cfg(feature = "extra-children")]
16843 {
16844 child_idx += 1;
16845 }
16846 }
16847 #[cfg(feature = "extra-children")]
16848 _ => {
16849 let elem = RawXmlElement::from_empty(&e);
16851 extra_children.push(PositionedNode::new(
16852 child_idx,
16853 RawXmlNode::Element(elem),
16854 ));
16855 child_idx += 1;
16856 }
16857 #[cfg(not(feature = "extra-children"))]
16858 _ => {}
16859 }
16860 }
16861 Event::End(_) => break,
16862 Event::Eof => break,
16863 _ => {}
16864 }
16865 buf.clear();
16866 }
16867 }
16868
16869 Ok(Self {
16870 count: f_count,
16871 deleted_field: f_deleted_field,
16872 #[cfg(feature = "extra-attrs")]
16873 extra_attrs,
16874 #[cfg(feature = "extra-children")]
16875 extra_children,
16876 })
16877 }
16878}
16879
16880impl FromXml for CTDeletedField {
16881 fn from_xml<R: BufRead>(
16882 reader: &mut Reader<R>,
16883 start_tag: &BytesStart,
16884 is_empty: bool,
16885 ) -> Result<Self, ParseError> {
16886 let mut f_name: Option<XmlString> = None;
16887 #[cfg(feature = "extra-attrs")]
16888 let mut extra_attrs = std::collections::HashMap::new();
16889
16890 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
16892 let val = String::from_utf8_lossy(&attr.value);
16893 match attr.key.local_name().as_ref() {
16894 b"name" => {
16895 f_name = Some(val.into_owned());
16896 }
16897 #[cfg(feature = "extra-attrs")]
16898 unknown => {
16899 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
16900 extra_attrs.insert(key, val.into_owned());
16901 }
16902 #[cfg(not(feature = "extra-attrs"))]
16903 _ => {}
16904 }
16905 }
16906
16907 if !is_empty {
16908 let mut buf = Vec::new();
16909 loop {
16910 match reader.read_event_into(&mut buf)? {
16911 Event::End(_) => break,
16912 Event::Eof => break,
16913 _ => {}
16914 }
16915 buf.clear();
16916 }
16917 }
16918
16919 Ok(Self {
16920 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
16921 #[cfg(feature = "extra-attrs")]
16922 extra_attrs,
16923 })
16924 }
16925}
16926
16927impl FromXml for QueryTableFields {
16928 fn from_xml<R: BufRead>(
16929 reader: &mut Reader<R>,
16930 start_tag: &BytesStart,
16931 is_empty: bool,
16932 ) -> Result<Self, ParseError> {
16933 let mut f_count = None;
16934 let mut f_query_table_field = Vec::new();
16935 #[cfg(feature = "extra-attrs")]
16936 let mut extra_attrs = std::collections::HashMap::new();
16937 #[cfg(feature = "extra-children")]
16938 let mut extra_children = Vec::new();
16939 #[cfg(feature = "extra-children")]
16940 let mut child_idx: usize = 0;
16941
16942 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
16944 let val = String::from_utf8_lossy(&attr.value);
16945 match attr.key.local_name().as_ref() {
16946 b"count" => {
16947 f_count = val.parse().ok();
16948 }
16949 #[cfg(feature = "extra-attrs")]
16950 unknown => {
16951 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
16952 extra_attrs.insert(key, val.into_owned());
16953 }
16954 #[cfg(not(feature = "extra-attrs"))]
16955 _ => {}
16956 }
16957 }
16958
16959 if !is_empty {
16961 let mut buf = Vec::new();
16962 loop {
16963 match reader.read_event_into(&mut buf)? {
16964 Event::Start(e) => {
16965 match e.local_name().as_ref() {
16966 b"queryTableField" => {
16967 f_query_table_field
16968 .push(QueryTableField::from_xml(reader, &e, false)?);
16969 #[cfg(feature = "extra-children")]
16970 {
16971 child_idx += 1;
16972 }
16973 }
16974 #[cfg(feature = "extra-children")]
16975 _ => {
16976 let elem = RawXmlElement::from_reader(reader, &e)?;
16978 extra_children.push(PositionedNode::new(
16979 child_idx,
16980 RawXmlNode::Element(elem),
16981 ));
16982 child_idx += 1;
16983 }
16984 #[cfg(not(feature = "extra-children"))]
16985 _ => {
16986 skip_element(reader)?;
16988 }
16989 }
16990 }
16991 Event::Empty(e) => {
16992 match e.local_name().as_ref() {
16993 b"queryTableField" => {
16994 f_query_table_field
16995 .push(QueryTableField::from_xml(reader, &e, true)?);
16996 #[cfg(feature = "extra-children")]
16997 {
16998 child_idx += 1;
16999 }
17000 }
17001 #[cfg(feature = "extra-children")]
17002 _ => {
17003 let elem = RawXmlElement::from_empty(&e);
17005 extra_children.push(PositionedNode::new(
17006 child_idx,
17007 RawXmlNode::Element(elem),
17008 ));
17009 child_idx += 1;
17010 }
17011 #[cfg(not(feature = "extra-children"))]
17012 _ => {}
17013 }
17014 }
17015 Event::End(_) => break,
17016 Event::Eof => break,
17017 _ => {}
17018 }
17019 buf.clear();
17020 }
17021 }
17022
17023 Ok(Self {
17024 count: f_count,
17025 query_table_field: f_query_table_field,
17026 #[cfg(feature = "extra-attrs")]
17027 extra_attrs,
17028 #[cfg(feature = "extra-children")]
17029 extra_children,
17030 })
17031 }
17032}
17033
17034impl FromXml for QueryTableField {
17035 fn from_xml<R: BufRead>(
17036 reader: &mut Reader<R>,
17037 start_tag: &BytesStart,
17038 is_empty: bool,
17039 ) -> Result<Self, ParseError> {
17040 let mut f_id: Option<u32> = None;
17041 let mut f_name = None;
17042 let mut f_data_bound = None;
17043 let mut f_row_numbers = None;
17044 let mut f_fill_formulas = None;
17045 let mut f_clipped = None;
17046 let mut f_table_column_id = None;
17047 let mut f_extension_list = None;
17048 #[cfg(feature = "extra-attrs")]
17049 let mut extra_attrs = std::collections::HashMap::new();
17050 #[cfg(feature = "extra-children")]
17051 let mut extra_children = Vec::new();
17052 #[cfg(feature = "extra-children")]
17053 let mut child_idx: usize = 0;
17054
17055 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
17057 let val = String::from_utf8_lossy(&attr.value);
17058 match attr.key.local_name().as_ref() {
17059 b"id" => {
17060 f_id = val.parse().ok();
17061 }
17062 b"name" => {
17063 f_name = Some(val.into_owned());
17064 }
17065 b"dataBound" => {
17066 f_data_bound = Some(val == "true" || val == "1");
17067 }
17068 b"rowNumbers" => {
17069 f_row_numbers = Some(val == "true" || val == "1");
17070 }
17071 b"fillFormulas" => {
17072 f_fill_formulas = Some(val == "true" || val == "1");
17073 }
17074 b"clipped" => {
17075 f_clipped = Some(val == "true" || val == "1");
17076 }
17077 b"tableColumnId" => {
17078 f_table_column_id = val.parse().ok();
17079 }
17080 #[cfg(feature = "extra-attrs")]
17081 unknown => {
17082 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
17083 extra_attrs.insert(key, val.into_owned());
17084 }
17085 #[cfg(not(feature = "extra-attrs"))]
17086 _ => {}
17087 }
17088 }
17089
17090 if !is_empty {
17092 let mut buf = Vec::new();
17093 loop {
17094 match reader.read_event_into(&mut buf)? {
17095 Event::Start(e) => {
17096 match e.local_name().as_ref() {
17097 b"extLst" => {
17098 f_extension_list =
17099 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
17100 #[cfg(feature = "extra-children")]
17101 {
17102 child_idx += 1;
17103 }
17104 }
17105 #[cfg(feature = "extra-children")]
17106 _ => {
17107 let elem = RawXmlElement::from_reader(reader, &e)?;
17109 extra_children.push(PositionedNode::new(
17110 child_idx,
17111 RawXmlNode::Element(elem),
17112 ));
17113 child_idx += 1;
17114 }
17115 #[cfg(not(feature = "extra-children"))]
17116 _ => {
17117 skip_element(reader)?;
17119 }
17120 }
17121 }
17122 Event::Empty(e) => {
17123 match e.local_name().as_ref() {
17124 b"extLst" => {
17125 f_extension_list =
17126 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
17127 #[cfg(feature = "extra-children")]
17128 {
17129 child_idx += 1;
17130 }
17131 }
17132 #[cfg(feature = "extra-children")]
17133 _ => {
17134 let elem = RawXmlElement::from_empty(&e);
17136 extra_children.push(PositionedNode::new(
17137 child_idx,
17138 RawXmlNode::Element(elem),
17139 ));
17140 child_idx += 1;
17141 }
17142 #[cfg(not(feature = "extra-children"))]
17143 _ => {}
17144 }
17145 }
17146 Event::End(_) => break,
17147 Event::Eof => break,
17148 _ => {}
17149 }
17150 buf.clear();
17151 }
17152 }
17153
17154 Ok(Self {
17155 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
17156 name: f_name,
17157 data_bound: f_data_bound,
17158 row_numbers: f_row_numbers,
17159 fill_formulas: f_fill_formulas,
17160 clipped: f_clipped,
17161 table_column_id: f_table_column_id,
17162 extension_list: f_extension_list,
17163 #[cfg(feature = "extra-attrs")]
17164 extra_attrs,
17165 #[cfg(feature = "extra-children")]
17166 extra_children,
17167 })
17168 }
17169}
17170
17171impl FromXml for SharedStrings {
17172 fn from_xml<R: BufRead>(
17173 reader: &mut Reader<R>,
17174 start_tag: &BytesStart,
17175 is_empty: bool,
17176 ) -> Result<Self, ParseError> {
17177 let mut f_count = None;
17178 let mut f_unique_count = None;
17179 let mut f_si = Vec::new();
17180 let mut f_extension_list = None;
17181 #[cfg(feature = "extra-attrs")]
17182 let mut extra_attrs = std::collections::HashMap::new();
17183 #[cfg(feature = "extra-children")]
17184 let mut extra_children = Vec::new();
17185 #[cfg(feature = "extra-children")]
17186 let mut child_idx: usize = 0;
17187
17188 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
17190 let val = String::from_utf8_lossy(&attr.value);
17191 match attr.key.local_name().as_ref() {
17192 b"count" => {
17193 f_count = val.parse().ok();
17194 }
17195 b"uniqueCount" => {
17196 f_unique_count = val.parse().ok();
17197 }
17198 #[cfg(feature = "extra-attrs")]
17199 unknown => {
17200 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
17201 extra_attrs.insert(key, val.into_owned());
17202 }
17203 #[cfg(not(feature = "extra-attrs"))]
17204 _ => {}
17205 }
17206 }
17207
17208 if !is_empty {
17210 let mut buf = Vec::new();
17211 loop {
17212 match reader.read_event_into(&mut buf)? {
17213 Event::Start(e) => {
17214 match e.local_name().as_ref() {
17215 b"si" => {
17216 f_si.push(RichString::from_xml(reader, &e, false)?);
17217 #[cfg(feature = "extra-children")]
17218 {
17219 child_idx += 1;
17220 }
17221 }
17222 b"extLst" => {
17223 f_extension_list =
17224 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
17225 #[cfg(feature = "extra-children")]
17226 {
17227 child_idx += 1;
17228 }
17229 }
17230 #[cfg(feature = "extra-children")]
17231 _ => {
17232 let elem = RawXmlElement::from_reader(reader, &e)?;
17234 extra_children.push(PositionedNode::new(
17235 child_idx,
17236 RawXmlNode::Element(elem),
17237 ));
17238 child_idx += 1;
17239 }
17240 #[cfg(not(feature = "extra-children"))]
17241 _ => {
17242 skip_element(reader)?;
17244 }
17245 }
17246 }
17247 Event::Empty(e) => {
17248 match e.local_name().as_ref() {
17249 b"si" => {
17250 f_si.push(RichString::from_xml(reader, &e, true)?);
17251 #[cfg(feature = "extra-children")]
17252 {
17253 child_idx += 1;
17254 }
17255 }
17256 b"extLst" => {
17257 f_extension_list =
17258 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
17259 #[cfg(feature = "extra-children")]
17260 {
17261 child_idx += 1;
17262 }
17263 }
17264 #[cfg(feature = "extra-children")]
17265 _ => {
17266 let elem = RawXmlElement::from_empty(&e);
17268 extra_children.push(PositionedNode::new(
17269 child_idx,
17270 RawXmlNode::Element(elem),
17271 ));
17272 child_idx += 1;
17273 }
17274 #[cfg(not(feature = "extra-children"))]
17275 _ => {}
17276 }
17277 }
17278 Event::End(_) => break,
17279 Event::Eof => break,
17280 _ => {}
17281 }
17282 buf.clear();
17283 }
17284 }
17285
17286 Ok(Self {
17287 count: f_count,
17288 unique_count: f_unique_count,
17289 si: f_si,
17290 extension_list: f_extension_list,
17291 #[cfg(feature = "extra-attrs")]
17292 extra_attrs,
17293 #[cfg(feature = "extra-children")]
17294 extra_children,
17295 })
17296 }
17297}
17298
17299impl FromXml for PhoneticRun {
17300 fn from_xml<R: BufRead>(
17301 reader: &mut Reader<R>,
17302 start_tag: &BytesStart,
17303 is_empty: bool,
17304 ) -> Result<Self, ParseError> {
17305 let mut f_sb: Option<u32> = None;
17306 let mut f_eb: Option<u32> = None;
17307 let mut f_cell_type: Option<XmlString> = None;
17308 #[cfg(feature = "extra-attrs")]
17309 let mut extra_attrs = std::collections::HashMap::new();
17310 #[cfg(feature = "extra-children")]
17311 let mut extra_children = Vec::new();
17312 #[cfg(feature = "extra-children")]
17313 let mut child_idx: usize = 0;
17314
17315 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
17317 let val = String::from_utf8_lossy(&attr.value);
17318 match attr.key.local_name().as_ref() {
17319 b"sb" => {
17320 f_sb = val.parse().ok();
17321 }
17322 b"eb" => {
17323 f_eb = val.parse().ok();
17324 }
17325 #[cfg(feature = "extra-attrs")]
17326 unknown => {
17327 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
17328 extra_attrs.insert(key, val.into_owned());
17329 }
17330 #[cfg(not(feature = "extra-attrs"))]
17331 _ => {}
17332 }
17333 }
17334
17335 if !is_empty {
17337 let mut buf = Vec::new();
17338 loop {
17339 match reader.read_event_into(&mut buf)? {
17340 Event::Start(e) => {
17341 match e.local_name().as_ref() {
17342 b"t" => {
17343 f_cell_type = Some(read_text_content(reader)?);
17344 #[cfg(feature = "extra-children")]
17345 {
17346 child_idx += 1;
17347 }
17348 }
17349 #[cfg(feature = "extra-children")]
17350 _ => {
17351 let elem = RawXmlElement::from_reader(reader, &e)?;
17353 extra_children.push(PositionedNode::new(
17354 child_idx,
17355 RawXmlNode::Element(elem),
17356 ));
17357 child_idx += 1;
17358 }
17359 #[cfg(not(feature = "extra-children"))]
17360 _ => {
17361 skip_element(reader)?;
17363 }
17364 }
17365 }
17366 Event::Empty(e) => {
17367 match e.local_name().as_ref() {
17368 b"t" => {
17369 f_cell_type = Some(String::new());
17370 #[cfg(feature = "extra-children")]
17371 {
17372 child_idx += 1;
17373 }
17374 }
17375 #[cfg(feature = "extra-children")]
17376 _ => {
17377 let elem = RawXmlElement::from_empty(&e);
17379 extra_children.push(PositionedNode::new(
17380 child_idx,
17381 RawXmlNode::Element(elem),
17382 ));
17383 child_idx += 1;
17384 }
17385 #[cfg(not(feature = "extra-children"))]
17386 _ => {}
17387 }
17388 }
17389 Event::End(_) => break,
17390 Event::Eof => break,
17391 _ => {}
17392 }
17393 buf.clear();
17394 }
17395 }
17396
17397 Ok(Self {
17398 sb: f_sb.ok_or_else(|| ParseError::MissingAttribute("sb".to_string()))?,
17399 eb: f_eb.ok_or_else(|| ParseError::MissingAttribute("eb".to_string()))?,
17400 cell_type: f_cell_type.ok_or_else(|| ParseError::MissingAttribute("t".to_string()))?,
17401 #[cfg(feature = "extra-attrs")]
17402 extra_attrs,
17403 #[cfg(feature = "extra-children")]
17404 extra_children,
17405 })
17406 }
17407}
17408
17409impl FromXml for RichTextElement {
17410 fn from_xml<R: BufRead>(
17411 reader: &mut Reader<R>,
17412 start_tag: &BytesStart,
17413 is_empty: bool,
17414 ) -> Result<Self, ParseError> {
17415 let mut f_r_pr = None;
17416 let mut f_cell_type: Option<XmlString> = None;
17417 #[cfg(feature = "extra-children")]
17418 let mut extra_children = Vec::new();
17419 #[cfg(feature = "extra-children")]
17420 let mut child_idx: usize = 0;
17421
17422 if !is_empty {
17424 let mut buf = Vec::new();
17425 loop {
17426 match reader.read_event_into(&mut buf)? {
17427 Event::Start(e) => {
17428 match e.local_name().as_ref() {
17429 b"rPr" => {
17430 f_r_pr = Some(Box::new(RichTextRunProperties::from_xml(
17431 reader, &e, false,
17432 )?));
17433 #[cfg(feature = "extra-children")]
17434 {
17435 child_idx += 1;
17436 }
17437 }
17438 b"t" => {
17439 f_cell_type = Some(read_text_content(reader)?);
17440 #[cfg(feature = "extra-children")]
17441 {
17442 child_idx += 1;
17443 }
17444 }
17445 #[cfg(feature = "extra-children")]
17446 _ => {
17447 let elem = RawXmlElement::from_reader(reader, &e)?;
17449 extra_children.push(PositionedNode::new(
17450 child_idx,
17451 RawXmlNode::Element(elem),
17452 ));
17453 child_idx += 1;
17454 }
17455 #[cfg(not(feature = "extra-children"))]
17456 _ => {
17457 skip_element(reader)?;
17459 }
17460 }
17461 }
17462 Event::Empty(e) => {
17463 match e.local_name().as_ref() {
17464 b"rPr" => {
17465 f_r_pr = Some(Box::new(RichTextRunProperties::from_xml(
17466 reader, &e, true,
17467 )?));
17468 #[cfg(feature = "extra-children")]
17469 {
17470 child_idx += 1;
17471 }
17472 }
17473 b"t" => {
17474 f_cell_type = Some(String::new());
17475 #[cfg(feature = "extra-children")]
17476 {
17477 child_idx += 1;
17478 }
17479 }
17480 #[cfg(feature = "extra-children")]
17481 _ => {
17482 let elem = RawXmlElement::from_empty(&e);
17484 extra_children.push(PositionedNode::new(
17485 child_idx,
17486 RawXmlNode::Element(elem),
17487 ));
17488 child_idx += 1;
17489 }
17490 #[cfg(not(feature = "extra-children"))]
17491 _ => {}
17492 }
17493 }
17494 Event::End(_) => break,
17495 Event::Eof => break,
17496 _ => {}
17497 }
17498 buf.clear();
17499 }
17500 }
17501
17502 Ok(Self {
17503 r_pr: f_r_pr,
17504 cell_type: f_cell_type.ok_or_else(|| ParseError::MissingAttribute("t".to_string()))?,
17505 #[cfg(feature = "extra-children")]
17506 extra_children,
17507 })
17508 }
17509}
17510
17511impl FromXml for RichTextRunProperties {
17512 fn from_xml<R: BufRead>(
17513 reader: &mut Reader<R>,
17514 start_tag: &BytesStart,
17515 is_empty: bool,
17516 ) -> Result<Self, ParseError> {
17517 let mut f_r_font = None;
17518 let mut f_charset = None;
17519 let mut f_family = None;
17520 let mut f_b = None;
17521 let mut f_i = None;
17522 let mut f_strike = None;
17523 let mut f_outline = None;
17524 let mut f_shadow = None;
17525 let mut f_condense = None;
17526 let mut f_extend = None;
17527 let mut f_color = None;
17528 let mut f_sz = None;
17529 let mut f_u = None;
17530 let mut f_vert_align = None;
17531 let mut f_scheme = None;
17532 #[cfg(feature = "extra-children")]
17533 let mut extra_children = Vec::new();
17534 #[cfg(feature = "extra-children")]
17535 let mut child_idx: usize = 0;
17536
17537 if !is_empty {
17539 let mut buf = Vec::new();
17540 loop {
17541 match reader.read_event_into(&mut buf)? {
17542 Event::Start(e) => {
17543 match e.local_name().as_ref() {
17544 b"rFont" => {
17545 f_r_font = Some(Box::new(FontName::from_xml(reader, &e, false)?));
17546 #[cfg(feature = "extra-children")]
17547 {
17548 child_idx += 1;
17549 }
17550 }
17551 b"charset" => {
17552 f_charset =
17553 Some(Box::new(IntProperty::from_xml(reader, &e, false)?));
17554 #[cfg(feature = "extra-children")]
17555 {
17556 child_idx += 1;
17557 }
17558 }
17559 b"family" => {
17560 f_family =
17561 Some(Box::new(IntProperty::from_xml(reader, &e, false)?));
17562 #[cfg(feature = "extra-children")]
17563 {
17564 child_idx += 1;
17565 }
17566 }
17567 b"b" => {
17568 f_b = Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
17569 #[cfg(feature = "extra-children")]
17570 {
17571 child_idx += 1;
17572 }
17573 }
17574 b"i" => {
17575 f_i = Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
17576 #[cfg(feature = "extra-children")]
17577 {
17578 child_idx += 1;
17579 }
17580 }
17581 b"strike" => {
17582 f_strike =
17583 Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
17584 #[cfg(feature = "extra-children")]
17585 {
17586 child_idx += 1;
17587 }
17588 }
17589 b"outline" => {
17590 f_outline =
17591 Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
17592 #[cfg(feature = "extra-children")]
17593 {
17594 child_idx += 1;
17595 }
17596 }
17597 b"shadow" => {
17598 f_shadow =
17599 Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
17600 #[cfg(feature = "extra-children")]
17601 {
17602 child_idx += 1;
17603 }
17604 }
17605 b"condense" => {
17606 f_condense =
17607 Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
17608 #[cfg(feature = "extra-children")]
17609 {
17610 child_idx += 1;
17611 }
17612 }
17613 b"extend" => {
17614 f_extend =
17615 Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
17616 #[cfg(feature = "extra-children")]
17617 {
17618 child_idx += 1;
17619 }
17620 }
17621 b"color" => {
17622 f_color = Some(Box::new(Color::from_xml(reader, &e, false)?));
17623 #[cfg(feature = "extra-children")]
17624 {
17625 child_idx += 1;
17626 }
17627 }
17628 b"sz" => {
17629 f_sz = Some(Box::new(FontSize::from_xml(reader, &e, false)?));
17630 #[cfg(feature = "extra-children")]
17631 {
17632 child_idx += 1;
17633 }
17634 }
17635 b"u" => {
17636 f_u =
17637 Some(Box::new(UnderlineProperty::from_xml(reader, &e, false)?));
17638 #[cfg(feature = "extra-children")]
17639 {
17640 child_idx += 1;
17641 }
17642 }
17643 b"vertAlign" => {
17644 f_vert_align = Some(Box::new(VerticalAlignFontProperty::from_xml(
17645 reader, &e, false,
17646 )?));
17647 #[cfg(feature = "extra-children")]
17648 {
17649 child_idx += 1;
17650 }
17651 }
17652 b"scheme" => {
17653 f_scheme = Some(Box::new(FontSchemeProperty::from_xml(
17654 reader, &e, false,
17655 )?));
17656 #[cfg(feature = "extra-children")]
17657 {
17658 child_idx += 1;
17659 }
17660 }
17661 #[cfg(feature = "extra-children")]
17662 _ => {
17663 let elem = RawXmlElement::from_reader(reader, &e)?;
17665 extra_children.push(PositionedNode::new(
17666 child_idx,
17667 RawXmlNode::Element(elem),
17668 ));
17669 child_idx += 1;
17670 }
17671 #[cfg(not(feature = "extra-children"))]
17672 _ => {
17673 skip_element(reader)?;
17675 }
17676 }
17677 }
17678 Event::Empty(e) => {
17679 match e.local_name().as_ref() {
17680 b"rFont" => {
17681 f_r_font = Some(Box::new(FontName::from_xml(reader, &e, true)?));
17682 #[cfg(feature = "extra-children")]
17683 {
17684 child_idx += 1;
17685 }
17686 }
17687 b"charset" => {
17688 f_charset =
17689 Some(Box::new(IntProperty::from_xml(reader, &e, true)?));
17690 #[cfg(feature = "extra-children")]
17691 {
17692 child_idx += 1;
17693 }
17694 }
17695 b"family" => {
17696 f_family = Some(Box::new(IntProperty::from_xml(reader, &e, true)?));
17697 #[cfg(feature = "extra-children")]
17698 {
17699 child_idx += 1;
17700 }
17701 }
17702 b"b" => {
17703 f_b = Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
17704 #[cfg(feature = "extra-children")]
17705 {
17706 child_idx += 1;
17707 }
17708 }
17709 b"i" => {
17710 f_i = Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
17711 #[cfg(feature = "extra-children")]
17712 {
17713 child_idx += 1;
17714 }
17715 }
17716 b"strike" => {
17717 f_strike =
17718 Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
17719 #[cfg(feature = "extra-children")]
17720 {
17721 child_idx += 1;
17722 }
17723 }
17724 b"outline" => {
17725 f_outline =
17726 Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
17727 #[cfg(feature = "extra-children")]
17728 {
17729 child_idx += 1;
17730 }
17731 }
17732 b"shadow" => {
17733 f_shadow =
17734 Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
17735 #[cfg(feature = "extra-children")]
17736 {
17737 child_idx += 1;
17738 }
17739 }
17740 b"condense" => {
17741 f_condense =
17742 Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
17743 #[cfg(feature = "extra-children")]
17744 {
17745 child_idx += 1;
17746 }
17747 }
17748 b"extend" => {
17749 f_extend =
17750 Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
17751 #[cfg(feature = "extra-children")]
17752 {
17753 child_idx += 1;
17754 }
17755 }
17756 b"color" => {
17757 f_color = Some(Box::new(Color::from_xml(reader, &e, true)?));
17758 #[cfg(feature = "extra-children")]
17759 {
17760 child_idx += 1;
17761 }
17762 }
17763 b"sz" => {
17764 f_sz = Some(Box::new(FontSize::from_xml(reader, &e, true)?));
17765 #[cfg(feature = "extra-children")]
17766 {
17767 child_idx += 1;
17768 }
17769 }
17770 b"u" => {
17771 f_u =
17772 Some(Box::new(UnderlineProperty::from_xml(reader, &e, true)?));
17773 #[cfg(feature = "extra-children")]
17774 {
17775 child_idx += 1;
17776 }
17777 }
17778 b"vertAlign" => {
17779 f_vert_align = Some(Box::new(VerticalAlignFontProperty::from_xml(
17780 reader, &e, true,
17781 )?));
17782 #[cfg(feature = "extra-children")]
17783 {
17784 child_idx += 1;
17785 }
17786 }
17787 b"scheme" => {
17788 f_scheme =
17789 Some(Box::new(FontSchemeProperty::from_xml(reader, &e, true)?));
17790 #[cfg(feature = "extra-children")]
17791 {
17792 child_idx += 1;
17793 }
17794 }
17795 #[cfg(feature = "extra-children")]
17796 _ => {
17797 let elem = RawXmlElement::from_empty(&e);
17799 extra_children.push(PositionedNode::new(
17800 child_idx,
17801 RawXmlNode::Element(elem),
17802 ));
17803 child_idx += 1;
17804 }
17805 #[cfg(not(feature = "extra-children"))]
17806 _ => {}
17807 }
17808 }
17809 Event::End(_) => break,
17810 Event::Eof => break,
17811 _ => {}
17812 }
17813 buf.clear();
17814 }
17815 }
17816
17817 Ok(Self {
17818 r_font: f_r_font,
17819 charset: f_charset,
17820 family: f_family,
17821 b: f_b,
17822 i: f_i,
17823 strike: f_strike,
17824 outline: f_outline,
17825 shadow: f_shadow,
17826 condense: f_condense,
17827 extend: f_extend,
17828 color: f_color,
17829 sz: f_sz,
17830 u: f_u,
17831 vert_align: f_vert_align,
17832 scheme: f_scheme,
17833 #[cfg(feature = "extra-children")]
17834 extra_children,
17835 })
17836 }
17837}
17838
17839impl FromXml for RichString {
17840 fn from_xml<R: BufRead>(
17841 reader: &mut Reader<R>,
17842 start_tag: &BytesStart,
17843 is_empty: bool,
17844 ) -> Result<Self, ParseError> {
17845 let mut f_cell_type = None;
17846 let mut f_reference = Vec::new();
17847 let mut f_r_ph = Vec::new();
17848 let mut f_phonetic_pr = None;
17849 #[cfg(feature = "extra-children")]
17850 let mut extra_children = Vec::new();
17851 #[cfg(feature = "extra-children")]
17852 let mut child_idx: usize = 0;
17853
17854 if !is_empty {
17856 let mut buf = Vec::new();
17857 loop {
17858 match reader.read_event_into(&mut buf)? {
17859 Event::Start(e) => {
17860 match e.local_name().as_ref() {
17861 b"t" => {
17862 f_cell_type = Some(read_text_content(reader)?);
17863 #[cfg(feature = "extra-children")]
17864 {
17865 child_idx += 1;
17866 }
17867 }
17868 b"r" => {
17869 f_reference.push(RichTextElement::from_xml(reader, &e, false)?);
17870 #[cfg(feature = "extra-children")]
17871 {
17872 child_idx += 1;
17873 }
17874 }
17875 b"rPh" => {
17876 f_r_ph.push(PhoneticRun::from_xml(reader, &e, false)?);
17877 #[cfg(feature = "extra-children")]
17878 {
17879 child_idx += 1;
17880 }
17881 }
17882 b"phoneticPr" => {
17883 f_phonetic_pr = Some(Box::new(PhoneticProperties::from_xml(
17884 reader, &e, false,
17885 )?));
17886 #[cfg(feature = "extra-children")]
17887 {
17888 child_idx += 1;
17889 }
17890 }
17891 #[cfg(feature = "extra-children")]
17892 _ => {
17893 let elem = RawXmlElement::from_reader(reader, &e)?;
17895 extra_children.push(PositionedNode::new(
17896 child_idx,
17897 RawXmlNode::Element(elem),
17898 ));
17899 child_idx += 1;
17900 }
17901 #[cfg(not(feature = "extra-children"))]
17902 _ => {
17903 skip_element(reader)?;
17905 }
17906 }
17907 }
17908 Event::Empty(e) => {
17909 match e.local_name().as_ref() {
17910 b"t" => {
17911 f_cell_type = Some(String::new());
17912 #[cfg(feature = "extra-children")]
17913 {
17914 child_idx += 1;
17915 }
17916 }
17917 b"r" => {
17918 f_reference.push(RichTextElement::from_xml(reader, &e, true)?);
17919 #[cfg(feature = "extra-children")]
17920 {
17921 child_idx += 1;
17922 }
17923 }
17924 b"rPh" => {
17925 f_r_ph.push(PhoneticRun::from_xml(reader, &e, true)?);
17926 #[cfg(feature = "extra-children")]
17927 {
17928 child_idx += 1;
17929 }
17930 }
17931 b"phoneticPr" => {
17932 f_phonetic_pr =
17933 Some(Box::new(PhoneticProperties::from_xml(reader, &e, true)?));
17934 #[cfg(feature = "extra-children")]
17935 {
17936 child_idx += 1;
17937 }
17938 }
17939 #[cfg(feature = "extra-children")]
17940 _ => {
17941 let elem = RawXmlElement::from_empty(&e);
17943 extra_children.push(PositionedNode::new(
17944 child_idx,
17945 RawXmlNode::Element(elem),
17946 ));
17947 child_idx += 1;
17948 }
17949 #[cfg(not(feature = "extra-children"))]
17950 _ => {}
17951 }
17952 }
17953 Event::End(_) => break,
17954 Event::Eof => break,
17955 _ => {}
17956 }
17957 buf.clear();
17958 }
17959 }
17960
17961 Ok(Self {
17962 cell_type: f_cell_type,
17963 reference: f_reference,
17964 r_ph: f_r_ph,
17965 phonetic_pr: f_phonetic_pr,
17966 #[cfg(feature = "extra-children")]
17967 extra_children,
17968 })
17969 }
17970}
17971
17972impl FromXml for PhoneticProperties {
17973 fn from_xml<R: BufRead>(
17974 reader: &mut Reader<R>,
17975 start_tag: &BytesStart,
17976 is_empty: bool,
17977 ) -> Result<Self, ParseError> {
17978 let mut f_font_id: Option<STFontId> = None;
17979 let mut f_type = None;
17980 let mut f_alignment = None;
17981 #[cfg(feature = "extra-attrs")]
17982 let mut extra_attrs = std::collections::HashMap::new();
17983
17984 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
17986 let val = String::from_utf8_lossy(&attr.value);
17987 match attr.key.local_name().as_ref() {
17988 b"fontId" => {
17989 f_font_id = val.parse().ok();
17990 }
17991 b"type" => {
17992 f_type = val.parse().ok();
17993 }
17994 b"alignment" => {
17995 f_alignment = val.parse().ok();
17996 }
17997 #[cfg(feature = "extra-attrs")]
17998 unknown => {
17999 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18000 extra_attrs.insert(key, val.into_owned());
18001 }
18002 #[cfg(not(feature = "extra-attrs"))]
18003 _ => {}
18004 }
18005 }
18006
18007 if !is_empty {
18008 let mut buf = Vec::new();
18009 loop {
18010 match reader.read_event_into(&mut buf)? {
18011 Event::End(_) => break,
18012 Event::Eof => break,
18013 _ => {}
18014 }
18015 buf.clear();
18016 }
18017 }
18018
18019 Ok(Self {
18020 font_id: f_font_id.ok_or_else(|| ParseError::MissingAttribute("fontId".to_string()))?,
18021 r#type: f_type,
18022 alignment: f_alignment,
18023 #[cfg(feature = "extra-attrs")]
18024 extra_attrs,
18025 })
18026 }
18027}
18028
18029impl FromXml for RevisionHeaders {
18030 fn from_xml<R: BufRead>(
18031 reader: &mut Reader<R>,
18032 start_tag: &BytesStart,
18033 is_empty: bool,
18034 ) -> Result<Self, ParseError> {
18035 let mut f_guid: Option<Guid> = None;
18036 let mut f_last_guid = None;
18037 let mut f_shared = None;
18038 let mut f_disk_revisions = None;
18039 let mut f_history = None;
18040 let mut f_track_revisions = None;
18041 let mut f_exclusive = None;
18042 let mut f_revision_id = None;
18043 let mut f_version = None;
18044 let mut f_keep_change_history = None;
18045 let mut f_protected = None;
18046 let mut f_preserve_history = None;
18047 let mut f_header = Vec::new();
18048 #[cfg(feature = "extra-attrs")]
18049 let mut extra_attrs = std::collections::HashMap::new();
18050 #[cfg(feature = "extra-children")]
18051 let mut extra_children = Vec::new();
18052 #[cfg(feature = "extra-children")]
18053 let mut child_idx: usize = 0;
18054
18055 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
18057 let val = String::from_utf8_lossy(&attr.value);
18058 match attr.key.local_name().as_ref() {
18059 b"guid" => {
18060 f_guid = Some(val.into_owned());
18061 }
18062 b"lastGuid" => {
18063 f_last_guid = Some(val.into_owned());
18064 }
18065 b"shared" => {
18066 f_shared = Some(val == "true" || val == "1");
18067 }
18068 b"diskRevisions" => {
18069 f_disk_revisions = Some(val == "true" || val == "1");
18070 }
18071 b"history" => {
18072 f_history = Some(val == "true" || val == "1");
18073 }
18074 b"trackRevisions" => {
18075 f_track_revisions = Some(val == "true" || val == "1");
18076 }
18077 b"exclusive" => {
18078 f_exclusive = Some(val == "true" || val == "1");
18079 }
18080 b"revisionId" => {
18081 f_revision_id = val.parse().ok();
18082 }
18083 b"version" => {
18084 f_version = val.parse().ok();
18085 }
18086 b"keepChangeHistory" => {
18087 f_keep_change_history = Some(val == "true" || val == "1");
18088 }
18089 b"protected" => {
18090 f_protected = Some(val == "true" || val == "1");
18091 }
18092 b"preserveHistory" => {
18093 f_preserve_history = val.parse().ok();
18094 }
18095 #[cfg(feature = "extra-attrs")]
18096 unknown => {
18097 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18098 extra_attrs.insert(key, val.into_owned());
18099 }
18100 #[cfg(not(feature = "extra-attrs"))]
18101 _ => {}
18102 }
18103 }
18104
18105 if !is_empty {
18107 let mut buf = Vec::new();
18108 loop {
18109 match reader.read_event_into(&mut buf)? {
18110 Event::Start(e) => {
18111 match e.local_name().as_ref() {
18112 b"header" => {
18113 f_header.push(RevisionHeader::from_xml(reader, &e, false)?);
18114 #[cfg(feature = "extra-children")]
18115 {
18116 child_idx += 1;
18117 }
18118 }
18119 #[cfg(feature = "extra-children")]
18120 _ => {
18121 let elem = RawXmlElement::from_reader(reader, &e)?;
18123 extra_children.push(PositionedNode::new(
18124 child_idx,
18125 RawXmlNode::Element(elem),
18126 ));
18127 child_idx += 1;
18128 }
18129 #[cfg(not(feature = "extra-children"))]
18130 _ => {
18131 skip_element(reader)?;
18133 }
18134 }
18135 }
18136 Event::Empty(e) => {
18137 match e.local_name().as_ref() {
18138 b"header" => {
18139 f_header.push(RevisionHeader::from_xml(reader, &e, true)?);
18140 #[cfg(feature = "extra-children")]
18141 {
18142 child_idx += 1;
18143 }
18144 }
18145 #[cfg(feature = "extra-children")]
18146 _ => {
18147 let elem = RawXmlElement::from_empty(&e);
18149 extra_children.push(PositionedNode::new(
18150 child_idx,
18151 RawXmlNode::Element(elem),
18152 ));
18153 child_idx += 1;
18154 }
18155 #[cfg(not(feature = "extra-children"))]
18156 _ => {}
18157 }
18158 }
18159 Event::End(_) => break,
18160 Event::Eof => break,
18161 _ => {}
18162 }
18163 buf.clear();
18164 }
18165 }
18166
18167 Ok(Self {
18168 guid: f_guid.ok_or_else(|| ParseError::MissingAttribute("guid".to_string()))?,
18169 last_guid: f_last_guid,
18170 shared: f_shared,
18171 disk_revisions: f_disk_revisions,
18172 history: f_history,
18173 track_revisions: f_track_revisions,
18174 exclusive: f_exclusive,
18175 revision_id: f_revision_id,
18176 version: f_version,
18177 keep_change_history: f_keep_change_history,
18178 protected: f_protected,
18179 preserve_history: f_preserve_history,
18180 header: f_header,
18181 #[cfg(feature = "extra-attrs")]
18182 extra_attrs,
18183 #[cfg(feature = "extra-children")]
18184 extra_children,
18185 })
18186 }
18187}
18188
18189impl FromXml for Revisions {
18190 fn from_xml<R: BufRead>(
18191 reader: &mut Reader<R>,
18192 start_tag: &BytesStart,
18193 is_empty: bool,
18194 ) -> Result<Self, ParseError> {
18195 #[cfg(feature = "extra-children")]
18196 let mut extra_children = Vec::new();
18197 #[cfg(feature = "extra-children")]
18198 let mut child_idx: usize = 0;
18199 if !is_empty {
18200 let mut buf = Vec::new();
18201 loop {
18202 match reader.read_event_into(&mut buf)? {
18203 #[cfg(feature = "extra-children")]
18204 Event::Start(e) => {
18205 let elem = RawXmlElement::from_reader(reader, &e)?;
18206 extra_children
18207 .push(PositionedNode::new(child_idx, RawXmlNode::Element(elem)));
18208 child_idx += 1;
18209 }
18210 #[cfg(not(feature = "extra-children"))]
18211 Event::Start(_) => {
18212 skip_element(reader)?;
18213 }
18214 #[cfg(feature = "extra-children")]
18215 Event::Empty(e) => {
18216 let elem = RawXmlElement::from_empty(&e);
18217 extra_children
18218 .push(PositionedNode::new(child_idx, RawXmlNode::Element(elem)));
18219 child_idx += 1;
18220 }
18221 #[cfg(not(feature = "extra-children"))]
18222 Event::Empty(_) => {}
18223 Event::End(_) => break,
18224 Event::Eof => break,
18225 _ => {}
18226 }
18227 buf.clear();
18228 }
18229 }
18230 Ok(Self {
18231 #[cfg(feature = "extra-children")]
18232 extra_children,
18233 })
18234 }
18235}
18236
18237impl FromXml for SmlAGRevData {
18238 fn from_xml<R: BufRead>(
18239 reader: &mut Reader<R>,
18240 start_tag: &BytesStart,
18241 is_empty: bool,
18242 ) -> Result<Self, ParseError> {
18243 let mut f_r_id: Option<u32> = None;
18244 let mut f_ua = None;
18245 let mut f_ra = None;
18246 #[cfg(feature = "extra-attrs")]
18247 let mut extra_attrs = std::collections::HashMap::new();
18248
18249 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
18251 let val = String::from_utf8_lossy(&attr.value);
18252 match attr.key.local_name().as_ref() {
18253 b"rId" => {
18254 f_r_id = val.parse().ok();
18255 }
18256 b"ua" => {
18257 f_ua = Some(val == "true" || val == "1");
18258 }
18259 b"ra" => {
18260 f_ra = Some(val == "true" || val == "1");
18261 }
18262 #[cfg(feature = "extra-attrs")]
18263 unknown => {
18264 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18265 extra_attrs.insert(key, val.into_owned());
18266 }
18267 #[cfg(not(feature = "extra-attrs"))]
18268 _ => {}
18269 }
18270 }
18271
18272 if !is_empty {
18273 let mut buf = Vec::new();
18274 loop {
18275 match reader.read_event_into(&mut buf)? {
18276 Event::End(_) => break,
18277 Event::Eof => break,
18278 _ => {}
18279 }
18280 buf.clear();
18281 }
18282 }
18283
18284 Ok(Self {
18285 r_id: f_r_id.ok_or_else(|| ParseError::MissingAttribute("rId".to_string()))?,
18286 ua: f_ua,
18287 ra: f_ra,
18288 #[cfg(feature = "extra-attrs")]
18289 extra_attrs,
18290 })
18291 }
18292}
18293
18294impl FromXml for RevisionHeader {
18295 fn from_xml<R: BufRead>(
18296 reader: &mut Reader<R>,
18297 start_tag: &BytesStart,
18298 is_empty: bool,
18299 ) -> Result<Self, ParseError> {
18300 let mut f_guid: Option<Guid> = None;
18301 let mut f_date_time: Option<String> = None;
18302 let mut f_max_sheet_id: Option<u32> = None;
18303 let mut f_user_name: Option<XmlString> = None;
18304 let mut f_id: Option<STRelationshipId> = None;
18305 let mut f_min_r_id = None;
18306 let mut f_max_r_id = None;
18307 let mut f_sheet_id_map: Option<Box<CTSheetIdMap>> = None;
18308 let mut f_reviewed_list = None;
18309 let mut f_extension_list = None;
18310 #[cfg(feature = "extra-attrs")]
18311 let mut extra_attrs = std::collections::HashMap::new();
18312 #[cfg(feature = "extra-children")]
18313 let mut extra_children = Vec::new();
18314 #[cfg(feature = "extra-children")]
18315 let mut child_idx: usize = 0;
18316
18317 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
18319 let val = String::from_utf8_lossy(&attr.value);
18320 match attr.key.local_name().as_ref() {
18321 b"guid" => {
18322 f_guid = Some(val.into_owned());
18323 }
18324 b"dateTime" => {
18325 f_date_time = Some(val.into_owned());
18326 }
18327 b"maxSheetId" => {
18328 f_max_sheet_id = val.parse().ok();
18329 }
18330 b"userName" => {
18331 f_user_name = Some(val.into_owned());
18332 }
18333 b"id" => {
18334 f_id = Some(val.into_owned());
18335 }
18336 b"minRId" => {
18337 f_min_r_id = val.parse().ok();
18338 }
18339 b"maxRId" => {
18340 f_max_r_id = val.parse().ok();
18341 }
18342 #[cfg(feature = "extra-attrs")]
18343 unknown => {
18344 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18345 extra_attrs.insert(key, val.into_owned());
18346 }
18347 #[cfg(not(feature = "extra-attrs"))]
18348 _ => {}
18349 }
18350 }
18351
18352 if !is_empty {
18354 let mut buf = Vec::new();
18355 loop {
18356 match reader.read_event_into(&mut buf)? {
18357 Event::Start(e) => {
18358 match e.local_name().as_ref() {
18359 b"sheetIdMap" => {
18360 f_sheet_id_map =
18361 Some(Box::new(CTSheetIdMap::from_xml(reader, &e, false)?));
18362 #[cfg(feature = "extra-children")]
18363 {
18364 child_idx += 1;
18365 }
18366 }
18367 b"reviewedList" => {
18368 f_reviewed_list =
18369 Some(Box::new(ReviewedRevisions::from_xml(reader, &e, false)?));
18370 #[cfg(feature = "extra-children")]
18371 {
18372 child_idx += 1;
18373 }
18374 }
18375 b"extLst" => {
18376 f_extension_list =
18377 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
18378 #[cfg(feature = "extra-children")]
18379 {
18380 child_idx += 1;
18381 }
18382 }
18383 #[cfg(feature = "extra-children")]
18384 _ => {
18385 let elem = RawXmlElement::from_reader(reader, &e)?;
18387 extra_children.push(PositionedNode::new(
18388 child_idx,
18389 RawXmlNode::Element(elem),
18390 ));
18391 child_idx += 1;
18392 }
18393 #[cfg(not(feature = "extra-children"))]
18394 _ => {
18395 skip_element(reader)?;
18397 }
18398 }
18399 }
18400 Event::Empty(e) => {
18401 match e.local_name().as_ref() {
18402 b"sheetIdMap" => {
18403 f_sheet_id_map =
18404 Some(Box::new(CTSheetIdMap::from_xml(reader, &e, true)?));
18405 #[cfg(feature = "extra-children")]
18406 {
18407 child_idx += 1;
18408 }
18409 }
18410 b"reviewedList" => {
18411 f_reviewed_list =
18412 Some(Box::new(ReviewedRevisions::from_xml(reader, &e, true)?));
18413 #[cfg(feature = "extra-children")]
18414 {
18415 child_idx += 1;
18416 }
18417 }
18418 b"extLst" => {
18419 f_extension_list =
18420 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
18421 #[cfg(feature = "extra-children")]
18422 {
18423 child_idx += 1;
18424 }
18425 }
18426 #[cfg(feature = "extra-children")]
18427 _ => {
18428 let elem = RawXmlElement::from_empty(&e);
18430 extra_children.push(PositionedNode::new(
18431 child_idx,
18432 RawXmlNode::Element(elem),
18433 ));
18434 child_idx += 1;
18435 }
18436 #[cfg(not(feature = "extra-children"))]
18437 _ => {}
18438 }
18439 }
18440 Event::End(_) => break,
18441 Event::Eof => break,
18442 _ => {}
18443 }
18444 buf.clear();
18445 }
18446 }
18447
18448 Ok(Self {
18449 guid: f_guid.ok_or_else(|| ParseError::MissingAttribute("guid".to_string()))?,
18450 date_time: f_date_time
18451 .ok_or_else(|| ParseError::MissingAttribute("dateTime".to_string()))?,
18452 max_sheet_id: f_max_sheet_id
18453 .ok_or_else(|| ParseError::MissingAttribute("maxSheetId".to_string()))?,
18454 user_name: f_user_name
18455 .ok_or_else(|| ParseError::MissingAttribute("userName".to_string()))?,
18456 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
18457 min_r_id: f_min_r_id,
18458 max_r_id: f_max_r_id,
18459 sheet_id_map: f_sheet_id_map
18460 .ok_or_else(|| ParseError::MissingAttribute("sheetIdMap".to_string()))?,
18461 reviewed_list: f_reviewed_list,
18462 extension_list: f_extension_list,
18463 #[cfg(feature = "extra-attrs")]
18464 extra_attrs,
18465 #[cfg(feature = "extra-children")]
18466 extra_children,
18467 })
18468 }
18469}
18470
18471impl FromXml for CTSheetIdMap {
18472 fn from_xml<R: BufRead>(
18473 reader: &mut Reader<R>,
18474 start_tag: &BytesStart,
18475 is_empty: bool,
18476 ) -> Result<Self, ParseError> {
18477 let mut f_count = None;
18478 let mut f_sheet_id = Vec::new();
18479 #[cfg(feature = "extra-attrs")]
18480 let mut extra_attrs = std::collections::HashMap::new();
18481 #[cfg(feature = "extra-children")]
18482 let mut extra_children = Vec::new();
18483 #[cfg(feature = "extra-children")]
18484 let mut child_idx: usize = 0;
18485
18486 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
18488 let val = String::from_utf8_lossy(&attr.value);
18489 match attr.key.local_name().as_ref() {
18490 b"count" => {
18491 f_count = val.parse().ok();
18492 }
18493 #[cfg(feature = "extra-attrs")]
18494 unknown => {
18495 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18496 extra_attrs.insert(key, val.into_owned());
18497 }
18498 #[cfg(not(feature = "extra-attrs"))]
18499 _ => {}
18500 }
18501 }
18502
18503 if !is_empty {
18505 let mut buf = Vec::new();
18506 loop {
18507 match reader.read_event_into(&mut buf)? {
18508 Event::Start(e) => {
18509 match e.local_name().as_ref() {
18510 b"sheetId" => {
18511 f_sheet_id.push(CTSheetId::from_xml(reader, &e, false)?);
18512 #[cfg(feature = "extra-children")]
18513 {
18514 child_idx += 1;
18515 }
18516 }
18517 #[cfg(feature = "extra-children")]
18518 _ => {
18519 let elem = RawXmlElement::from_reader(reader, &e)?;
18521 extra_children.push(PositionedNode::new(
18522 child_idx,
18523 RawXmlNode::Element(elem),
18524 ));
18525 child_idx += 1;
18526 }
18527 #[cfg(not(feature = "extra-children"))]
18528 _ => {
18529 skip_element(reader)?;
18531 }
18532 }
18533 }
18534 Event::Empty(e) => {
18535 match e.local_name().as_ref() {
18536 b"sheetId" => {
18537 f_sheet_id.push(CTSheetId::from_xml(reader, &e, true)?);
18538 #[cfg(feature = "extra-children")]
18539 {
18540 child_idx += 1;
18541 }
18542 }
18543 #[cfg(feature = "extra-children")]
18544 _ => {
18545 let elem = RawXmlElement::from_empty(&e);
18547 extra_children.push(PositionedNode::new(
18548 child_idx,
18549 RawXmlNode::Element(elem),
18550 ));
18551 child_idx += 1;
18552 }
18553 #[cfg(not(feature = "extra-children"))]
18554 _ => {}
18555 }
18556 }
18557 Event::End(_) => break,
18558 Event::Eof => break,
18559 _ => {}
18560 }
18561 buf.clear();
18562 }
18563 }
18564
18565 Ok(Self {
18566 count: f_count,
18567 sheet_id: f_sheet_id,
18568 #[cfg(feature = "extra-attrs")]
18569 extra_attrs,
18570 #[cfg(feature = "extra-children")]
18571 extra_children,
18572 })
18573 }
18574}
18575
18576impl FromXml for CTSheetId {
18577 fn from_xml<R: BufRead>(
18578 reader: &mut Reader<R>,
18579 start_tag: &BytesStart,
18580 is_empty: bool,
18581 ) -> Result<Self, ParseError> {
18582 let mut f_value: Option<u32> = None;
18583 #[cfg(feature = "extra-attrs")]
18584 let mut extra_attrs = std::collections::HashMap::new();
18585
18586 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
18588 let val = String::from_utf8_lossy(&attr.value);
18589 match attr.key.local_name().as_ref() {
18590 b"val" => {
18591 f_value = val.parse().ok();
18592 }
18593 #[cfg(feature = "extra-attrs")]
18594 unknown => {
18595 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18596 extra_attrs.insert(key, val.into_owned());
18597 }
18598 #[cfg(not(feature = "extra-attrs"))]
18599 _ => {}
18600 }
18601 }
18602
18603 if !is_empty {
18604 let mut buf = Vec::new();
18605 loop {
18606 match reader.read_event_into(&mut buf)? {
18607 Event::End(_) => break,
18608 Event::Eof => break,
18609 _ => {}
18610 }
18611 buf.clear();
18612 }
18613 }
18614
18615 Ok(Self {
18616 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
18617 #[cfg(feature = "extra-attrs")]
18618 extra_attrs,
18619 })
18620 }
18621}
18622
18623impl FromXml for ReviewedRevisions {
18624 fn from_xml<R: BufRead>(
18625 reader: &mut Reader<R>,
18626 start_tag: &BytesStart,
18627 is_empty: bool,
18628 ) -> Result<Self, ParseError> {
18629 let mut f_count = None;
18630 let mut f_reviewed = Vec::new();
18631 #[cfg(feature = "extra-attrs")]
18632 let mut extra_attrs = std::collections::HashMap::new();
18633 #[cfg(feature = "extra-children")]
18634 let mut extra_children = Vec::new();
18635 #[cfg(feature = "extra-children")]
18636 let mut child_idx: usize = 0;
18637
18638 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
18640 let val = String::from_utf8_lossy(&attr.value);
18641 match attr.key.local_name().as_ref() {
18642 b"count" => {
18643 f_count = val.parse().ok();
18644 }
18645 #[cfg(feature = "extra-attrs")]
18646 unknown => {
18647 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18648 extra_attrs.insert(key, val.into_owned());
18649 }
18650 #[cfg(not(feature = "extra-attrs"))]
18651 _ => {}
18652 }
18653 }
18654
18655 if !is_empty {
18657 let mut buf = Vec::new();
18658 loop {
18659 match reader.read_event_into(&mut buf)? {
18660 Event::Start(e) => {
18661 match e.local_name().as_ref() {
18662 b"reviewed" => {
18663 f_reviewed.push(Reviewed::from_xml(reader, &e, false)?);
18664 #[cfg(feature = "extra-children")]
18665 {
18666 child_idx += 1;
18667 }
18668 }
18669 #[cfg(feature = "extra-children")]
18670 _ => {
18671 let elem = RawXmlElement::from_reader(reader, &e)?;
18673 extra_children.push(PositionedNode::new(
18674 child_idx,
18675 RawXmlNode::Element(elem),
18676 ));
18677 child_idx += 1;
18678 }
18679 #[cfg(not(feature = "extra-children"))]
18680 _ => {
18681 skip_element(reader)?;
18683 }
18684 }
18685 }
18686 Event::Empty(e) => {
18687 match e.local_name().as_ref() {
18688 b"reviewed" => {
18689 f_reviewed.push(Reviewed::from_xml(reader, &e, true)?);
18690 #[cfg(feature = "extra-children")]
18691 {
18692 child_idx += 1;
18693 }
18694 }
18695 #[cfg(feature = "extra-children")]
18696 _ => {
18697 let elem = RawXmlElement::from_empty(&e);
18699 extra_children.push(PositionedNode::new(
18700 child_idx,
18701 RawXmlNode::Element(elem),
18702 ));
18703 child_idx += 1;
18704 }
18705 #[cfg(not(feature = "extra-children"))]
18706 _ => {}
18707 }
18708 }
18709 Event::End(_) => break,
18710 Event::Eof => break,
18711 _ => {}
18712 }
18713 buf.clear();
18714 }
18715 }
18716
18717 Ok(Self {
18718 count: f_count,
18719 reviewed: f_reviewed,
18720 #[cfg(feature = "extra-attrs")]
18721 extra_attrs,
18722 #[cfg(feature = "extra-children")]
18723 extra_children,
18724 })
18725 }
18726}
18727
18728impl FromXml for Reviewed {
18729 fn from_xml<R: BufRead>(
18730 reader: &mut Reader<R>,
18731 start_tag: &BytesStart,
18732 is_empty: bool,
18733 ) -> Result<Self, ParseError> {
18734 let mut f_r_id: Option<u32> = None;
18735 #[cfg(feature = "extra-attrs")]
18736 let mut extra_attrs = std::collections::HashMap::new();
18737
18738 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
18740 let val = String::from_utf8_lossy(&attr.value);
18741 match attr.key.local_name().as_ref() {
18742 b"rId" => {
18743 f_r_id = val.parse().ok();
18744 }
18745 #[cfg(feature = "extra-attrs")]
18746 unknown => {
18747 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18748 extra_attrs.insert(key, val.into_owned());
18749 }
18750 #[cfg(not(feature = "extra-attrs"))]
18751 _ => {}
18752 }
18753 }
18754
18755 if !is_empty {
18756 let mut buf = Vec::new();
18757 loop {
18758 match reader.read_event_into(&mut buf)? {
18759 Event::End(_) => break,
18760 Event::Eof => break,
18761 _ => {}
18762 }
18763 buf.clear();
18764 }
18765 }
18766
18767 Ok(Self {
18768 r_id: f_r_id.ok_or_else(|| ParseError::MissingAttribute("rId".to_string()))?,
18769 #[cfg(feature = "extra-attrs")]
18770 extra_attrs,
18771 })
18772 }
18773}
18774
18775impl FromXml for UndoInfo {
18776 fn from_xml<R: BufRead>(
18777 reader: &mut Reader<R>,
18778 start_tag: &BytesStart,
18779 is_empty: bool,
18780 ) -> Result<Self, ParseError> {
18781 let mut f_index: Option<u32> = None;
18782 let mut f_exp: Option<STFormulaExpression> = None;
18783 let mut f_ref3_d = None;
18784 let mut f_array = None;
18785 let mut f_value = None;
18786 let mut f_nf = None;
18787 let mut f_cs = None;
18788 let mut f_dr: Option<STRefA> = None;
18789 let mut f_dn = None;
18790 let mut f_reference = None;
18791 let mut f_s_id = None;
18792 #[cfg(feature = "extra-attrs")]
18793 let mut extra_attrs = std::collections::HashMap::new();
18794
18795 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
18797 let val = String::from_utf8_lossy(&attr.value);
18798 match attr.key.local_name().as_ref() {
18799 b"index" => {
18800 f_index = val.parse().ok();
18801 }
18802 b"exp" => {
18803 f_exp = val.parse().ok();
18804 }
18805 b"ref3D" => {
18806 f_ref3_d = Some(val == "true" || val == "1");
18807 }
18808 b"array" => {
18809 f_array = Some(val == "true" || val == "1");
18810 }
18811 b"v" => {
18812 f_value = Some(val == "true" || val == "1");
18813 }
18814 b"nf" => {
18815 f_nf = Some(val == "true" || val == "1");
18816 }
18817 b"cs" => {
18818 f_cs = Some(val == "true" || val == "1");
18819 }
18820 b"dr" => {
18821 f_dr = Some(val.into_owned());
18822 }
18823 b"dn" => {
18824 f_dn = Some(val.into_owned());
18825 }
18826 b"r" => {
18827 f_reference = Some(val.into_owned());
18828 }
18829 b"sId" => {
18830 f_s_id = val.parse().ok();
18831 }
18832 #[cfg(feature = "extra-attrs")]
18833 unknown => {
18834 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18835 extra_attrs.insert(key, val.into_owned());
18836 }
18837 #[cfg(not(feature = "extra-attrs"))]
18838 _ => {}
18839 }
18840 }
18841
18842 if !is_empty {
18843 let mut buf = Vec::new();
18844 loop {
18845 match reader.read_event_into(&mut buf)? {
18846 Event::End(_) => break,
18847 Event::Eof => break,
18848 _ => {}
18849 }
18850 buf.clear();
18851 }
18852 }
18853
18854 Ok(Self {
18855 index: f_index.ok_or_else(|| ParseError::MissingAttribute("index".to_string()))?,
18856 exp: f_exp.ok_or_else(|| ParseError::MissingAttribute("exp".to_string()))?,
18857 ref3_d: f_ref3_d,
18858 array: f_array,
18859 value: f_value,
18860 nf: f_nf,
18861 cs: f_cs,
18862 dr: f_dr.ok_or_else(|| ParseError::MissingAttribute("dr".to_string()))?,
18863 dn: f_dn,
18864 reference: f_reference,
18865 s_id: f_s_id,
18866 #[cfg(feature = "extra-attrs")]
18867 extra_attrs,
18868 })
18869 }
18870}
18871
18872impl FromXml for RevisionRowColumn {
18873 fn from_xml<R: BufRead>(
18874 reader: &mut Reader<R>,
18875 start_tag: &BytesStart,
18876 is_empty: bool,
18877 ) -> Result<Self, ParseError> {
18878 let mut f_r_id: Option<u32> = None;
18879 let mut f_ua = None;
18880 let mut f_ra = None;
18881 let mut f_s_id: Option<u32> = None;
18882 let mut f_eol = None;
18883 let mut f_reference: Option<Reference> = None;
18884 let mut f_action: Option<STRwColActionType> = None;
18885 let mut f_edge = None;
18886 #[cfg(feature = "extra-attrs")]
18887 let mut extra_attrs = std::collections::HashMap::new();
18888
18889 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
18891 let val = String::from_utf8_lossy(&attr.value);
18892 match attr.key.local_name().as_ref() {
18893 b"rId" => {
18894 f_r_id = val.parse().ok();
18895 }
18896 b"ua" => {
18897 f_ua = Some(val == "true" || val == "1");
18898 }
18899 b"ra" => {
18900 f_ra = Some(val == "true" || val == "1");
18901 }
18902 b"sId" => {
18903 f_s_id = val.parse().ok();
18904 }
18905 b"eol" => {
18906 f_eol = Some(val == "true" || val == "1");
18907 }
18908 b"ref" => {
18909 f_reference = Some(val.into_owned());
18910 }
18911 b"action" => {
18912 f_action = val.parse().ok();
18913 }
18914 b"edge" => {
18915 f_edge = Some(val == "true" || val == "1");
18916 }
18917 #[cfg(feature = "extra-attrs")]
18918 unknown => {
18919 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18920 extra_attrs.insert(key, val.into_owned());
18921 }
18922 #[cfg(not(feature = "extra-attrs"))]
18923 _ => {}
18924 }
18925 }
18926
18927 if !is_empty {
18928 let mut buf = Vec::new();
18929 loop {
18930 match reader.read_event_into(&mut buf)? {
18931 Event::End(_) => break,
18932 Event::Eof => break,
18933 _ => {}
18934 }
18935 buf.clear();
18936 }
18937 }
18938
18939 Ok(Self {
18940 r_id: f_r_id.ok_or_else(|| ParseError::MissingAttribute("rId".to_string()))?,
18941 ua: f_ua,
18942 ra: f_ra,
18943 s_id: f_s_id.ok_or_else(|| ParseError::MissingAttribute("sId".to_string()))?,
18944 eol: f_eol,
18945 reference: f_reference
18946 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
18947 action: f_action.ok_or_else(|| ParseError::MissingAttribute("action".to_string()))?,
18948 edge: f_edge,
18949 #[cfg(feature = "extra-attrs")]
18950 extra_attrs,
18951 })
18952 }
18953}
18954
18955impl FromXml for RevisionMove {
18956 fn from_xml<R: BufRead>(
18957 reader: &mut Reader<R>,
18958 start_tag: &BytesStart,
18959 is_empty: bool,
18960 ) -> Result<Self, ParseError> {
18961 let mut f_r_id: Option<u32> = None;
18962 let mut f_ua = None;
18963 let mut f_ra = None;
18964 let mut f_sheet_id: Option<u32> = None;
18965 let mut f_source: Option<Reference> = None;
18966 let mut f_destination: Option<Reference> = None;
18967 let mut f_source_sheet_id = None;
18968 #[cfg(feature = "extra-attrs")]
18969 let mut extra_attrs = std::collections::HashMap::new();
18970
18971 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
18973 let val = String::from_utf8_lossy(&attr.value);
18974 match attr.key.local_name().as_ref() {
18975 b"rId" => {
18976 f_r_id = val.parse().ok();
18977 }
18978 b"ua" => {
18979 f_ua = Some(val == "true" || val == "1");
18980 }
18981 b"ra" => {
18982 f_ra = Some(val == "true" || val == "1");
18983 }
18984 b"sheetId" => {
18985 f_sheet_id = val.parse().ok();
18986 }
18987 b"source" => {
18988 f_source = Some(val.into_owned());
18989 }
18990 b"destination" => {
18991 f_destination = Some(val.into_owned());
18992 }
18993 b"sourceSheetId" => {
18994 f_source_sheet_id = val.parse().ok();
18995 }
18996 #[cfg(feature = "extra-attrs")]
18997 unknown => {
18998 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
18999 extra_attrs.insert(key, val.into_owned());
19000 }
19001 #[cfg(not(feature = "extra-attrs"))]
19002 _ => {}
19003 }
19004 }
19005
19006 if !is_empty {
19007 let mut buf = Vec::new();
19008 loop {
19009 match reader.read_event_into(&mut buf)? {
19010 Event::End(_) => break,
19011 Event::Eof => break,
19012 _ => {}
19013 }
19014 buf.clear();
19015 }
19016 }
19017
19018 Ok(Self {
19019 r_id: f_r_id.ok_or_else(|| ParseError::MissingAttribute("rId".to_string()))?,
19020 ua: f_ua,
19021 ra: f_ra,
19022 sheet_id: f_sheet_id
19023 .ok_or_else(|| ParseError::MissingAttribute("sheetId".to_string()))?,
19024 source: f_source.ok_or_else(|| ParseError::MissingAttribute("source".to_string()))?,
19025 destination: f_destination
19026 .ok_or_else(|| ParseError::MissingAttribute("destination".to_string()))?,
19027 source_sheet_id: f_source_sheet_id,
19028 #[cfg(feature = "extra-attrs")]
19029 extra_attrs,
19030 })
19031 }
19032}
19033
19034impl FromXml for RevisionCustomView {
19035 fn from_xml<R: BufRead>(
19036 reader: &mut Reader<R>,
19037 start_tag: &BytesStart,
19038 is_empty: bool,
19039 ) -> Result<Self, ParseError> {
19040 let mut f_guid: Option<Guid> = None;
19041 let mut f_action: Option<STRevisionAction> = None;
19042 #[cfg(feature = "extra-attrs")]
19043 let mut extra_attrs = std::collections::HashMap::new();
19044
19045 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
19047 let val = String::from_utf8_lossy(&attr.value);
19048 match attr.key.local_name().as_ref() {
19049 b"guid" => {
19050 f_guid = Some(val.into_owned());
19051 }
19052 b"action" => {
19053 f_action = val.parse().ok();
19054 }
19055 #[cfg(feature = "extra-attrs")]
19056 unknown => {
19057 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
19058 extra_attrs.insert(key, val.into_owned());
19059 }
19060 #[cfg(not(feature = "extra-attrs"))]
19061 _ => {}
19062 }
19063 }
19064
19065 if !is_empty {
19066 let mut buf = Vec::new();
19067 loop {
19068 match reader.read_event_into(&mut buf)? {
19069 Event::End(_) => break,
19070 Event::Eof => break,
19071 _ => {}
19072 }
19073 buf.clear();
19074 }
19075 }
19076
19077 Ok(Self {
19078 guid: f_guid.ok_or_else(|| ParseError::MissingAttribute("guid".to_string()))?,
19079 action: f_action.ok_or_else(|| ParseError::MissingAttribute("action".to_string()))?,
19080 #[cfg(feature = "extra-attrs")]
19081 extra_attrs,
19082 })
19083 }
19084}
19085
19086impl FromXml for RevisionSheetRename {
19087 fn from_xml<R: BufRead>(
19088 reader: &mut Reader<R>,
19089 start_tag: &BytesStart,
19090 is_empty: bool,
19091 ) -> Result<Self, ParseError> {
19092 let mut f_r_id: Option<u32> = None;
19093 let mut f_ua = None;
19094 let mut f_ra = None;
19095 let mut f_sheet_id: Option<u32> = None;
19096 let mut f_old_name: Option<XmlString> = None;
19097 let mut f_new_name: Option<XmlString> = None;
19098 let mut f_extension_list = None;
19099 #[cfg(feature = "extra-attrs")]
19100 let mut extra_attrs = std::collections::HashMap::new();
19101 #[cfg(feature = "extra-children")]
19102 let mut extra_children = Vec::new();
19103 #[cfg(feature = "extra-children")]
19104 let mut child_idx: usize = 0;
19105
19106 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
19108 let val = String::from_utf8_lossy(&attr.value);
19109 match attr.key.local_name().as_ref() {
19110 b"rId" => {
19111 f_r_id = val.parse().ok();
19112 }
19113 b"ua" => {
19114 f_ua = Some(val == "true" || val == "1");
19115 }
19116 b"ra" => {
19117 f_ra = Some(val == "true" || val == "1");
19118 }
19119 b"sheetId" => {
19120 f_sheet_id = val.parse().ok();
19121 }
19122 b"oldName" => {
19123 f_old_name = Some(val.into_owned());
19124 }
19125 b"newName" => {
19126 f_new_name = Some(val.into_owned());
19127 }
19128 #[cfg(feature = "extra-attrs")]
19129 unknown => {
19130 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
19131 extra_attrs.insert(key, val.into_owned());
19132 }
19133 #[cfg(not(feature = "extra-attrs"))]
19134 _ => {}
19135 }
19136 }
19137
19138 if !is_empty {
19140 let mut buf = Vec::new();
19141 loop {
19142 match reader.read_event_into(&mut buf)? {
19143 Event::Start(e) => {
19144 match e.local_name().as_ref() {
19145 b"extLst" => {
19146 f_extension_list =
19147 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
19148 #[cfg(feature = "extra-children")]
19149 {
19150 child_idx += 1;
19151 }
19152 }
19153 #[cfg(feature = "extra-children")]
19154 _ => {
19155 let elem = RawXmlElement::from_reader(reader, &e)?;
19157 extra_children.push(PositionedNode::new(
19158 child_idx,
19159 RawXmlNode::Element(elem),
19160 ));
19161 child_idx += 1;
19162 }
19163 #[cfg(not(feature = "extra-children"))]
19164 _ => {
19165 skip_element(reader)?;
19167 }
19168 }
19169 }
19170 Event::Empty(e) => {
19171 match e.local_name().as_ref() {
19172 b"extLst" => {
19173 f_extension_list =
19174 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
19175 #[cfg(feature = "extra-children")]
19176 {
19177 child_idx += 1;
19178 }
19179 }
19180 #[cfg(feature = "extra-children")]
19181 _ => {
19182 let elem = RawXmlElement::from_empty(&e);
19184 extra_children.push(PositionedNode::new(
19185 child_idx,
19186 RawXmlNode::Element(elem),
19187 ));
19188 child_idx += 1;
19189 }
19190 #[cfg(not(feature = "extra-children"))]
19191 _ => {}
19192 }
19193 }
19194 Event::End(_) => break,
19195 Event::Eof => break,
19196 _ => {}
19197 }
19198 buf.clear();
19199 }
19200 }
19201
19202 Ok(Self {
19203 r_id: f_r_id.ok_or_else(|| ParseError::MissingAttribute("rId".to_string()))?,
19204 ua: f_ua,
19205 ra: f_ra,
19206 sheet_id: f_sheet_id
19207 .ok_or_else(|| ParseError::MissingAttribute("sheetId".to_string()))?,
19208 old_name: f_old_name
19209 .ok_or_else(|| ParseError::MissingAttribute("oldName".to_string()))?,
19210 new_name: f_new_name
19211 .ok_or_else(|| ParseError::MissingAttribute("newName".to_string()))?,
19212 extension_list: f_extension_list,
19213 #[cfg(feature = "extra-attrs")]
19214 extra_attrs,
19215 #[cfg(feature = "extra-children")]
19216 extra_children,
19217 })
19218 }
19219}
19220
19221impl FromXml for RevisionInsertSheet {
19222 fn from_xml<R: BufRead>(
19223 reader: &mut Reader<R>,
19224 start_tag: &BytesStart,
19225 is_empty: bool,
19226 ) -> Result<Self, ParseError> {
19227 let mut f_r_id: Option<u32> = None;
19228 let mut f_ua = None;
19229 let mut f_ra = None;
19230 let mut f_sheet_id: Option<u32> = None;
19231 let mut f_name: Option<XmlString> = None;
19232 let mut f_sheet_position: Option<u32> = None;
19233 #[cfg(feature = "extra-attrs")]
19234 let mut extra_attrs = std::collections::HashMap::new();
19235
19236 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
19238 let val = String::from_utf8_lossy(&attr.value);
19239 match attr.key.local_name().as_ref() {
19240 b"rId" => {
19241 f_r_id = val.parse().ok();
19242 }
19243 b"ua" => {
19244 f_ua = Some(val == "true" || val == "1");
19245 }
19246 b"ra" => {
19247 f_ra = Some(val == "true" || val == "1");
19248 }
19249 b"sheetId" => {
19250 f_sheet_id = val.parse().ok();
19251 }
19252 b"name" => {
19253 f_name = Some(val.into_owned());
19254 }
19255 b"sheetPosition" => {
19256 f_sheet_position = val.parse().ok();
19257 }
19258 #[cfg(feature = "extra-attrs")]
19259 unknown => {
19260 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
19261 extra_attrs.insert(key, val.into_owned());
19262 }
19263 #[cfg(not(feature = "extra-attrs"))]
19264 _ => {}
19265 }
19266 }
19267
19268 if !is_empty {
19269 let mut buf = Vec::new();
19270 loop {
19271 match reader.read_event_into(&mut buf)? {
19272 Event::End(_) => break,
19273 Event::Eof => break,
19274 _ => {}
19275 }
19276 buf.clear();
19277 }
19278 }
19279
19280 Ok(Self {
19281 r_id: f_r_id.ok_or_else(|| ParseError::MissingAttribute("rId".to_string()))?,
19282 ua: f_ua,
19283 ra: f_ra,
19284 sheet_id: f_sheet_id
19285 .ok_or_else(|| ParseError::MissingAttribute("sheetId".to_string()))?,
19286 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
19287 sheet_position: f_sheet_position
19288 .ok_or_else(|| ParseError::MissingAttribute("sheetPosition".to_string()))?,
19289 #[cfg(feature = "extra-attrs")]
19290 extra_attrs,
19291 })
19292 }
19293}
19294
19295impl FromXml for RevisionCellChange {
19296 fn from_xml<R: BufRead>(
19297 reader: &mut Reader<R>,
19298 start_tag: &BytesStart,
19299 is_empty: bool,
19300 ) -> Result<Self, ParseError> {
19301 let mut f_r_id: Option<u32> = None;
19302 let mut f_ua = None;
19303 let mut f_ra = None;
19304 let mut f_s_id: Option<u32> = None;
19305 let mut f_odxf = None;
19306 let mut f_xf_dxf = None;
19307 let mut f_style_index = None;
19308 let mut f_dxf = None;
19309 let mut f_number_format_id = None;
19310 let mut f_quote_prefix = None;
19311 let mut f_old_quote_prefix = None;
19312 let mut f_placeholder = None;
19313 let mut f_old_ph = None;
19314 let mut f_end_of_list_formula_update = None;
19315 let mut f_oc = None;
19316 let mut f_nc: Option<Box<Cell>> = None;
19317 let mut f_ndxf = None;
19318 let mut f_extension_list = None;
19319 #[cfg(feature = "extra-attrs")]
19320 let mut extra_attrs = std::collections::HashMap::new();
19321 #[cfg(feature = "extra-children")]
19322 let mut extra_children = Vec::new();
19323 #[cfg(feature = "extra-children")]
19324 let mut child_idx: usize = 0;
19325
19326 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
19328 let val = String::from_utf8_lossy(&attr.value);
19329 match attr.key.local_name().as_ref() {
19330 b"rId" => {
19331 f_r_id = val.parse().ok();
19332 }
19333 b"ua" => {
19334 f_ua = Some(val == "true" || val == "1");
19335 }
19336 b"ra" => {
19337 f_ra = Some(val == "true" || val == "1");
19338 }
19339 b"sId" => {
19340 f_s_id = val.parse().ok();
19341 }
19342 b"odxf" => {
19343 f_odxf = Some(val == "true" || val == "1");
19344 }
19345 b"xfDxf" => {
19346 f_xf_dxf = Some(val == "true" || val == "1");
19347 }
19348 b"s" => {
19349 f_style_index = Some(val == "true" || val == "1");
19350 }
19351 b"dxf" => {
19352 f_dxf = Some(val == "true" || val == "1");
19353 }
19354 b"numFmtId" => {
19355 f_number_format_id = val.parse().ok();
19356 }
19357 b"quotePrefix" => {
19358 f_quote_prefix = Some(val == "true" || val == "1");
19359 }
19360 b"oldQuotePrefix" => {
19361 f_old_quote_prefix = Some(val == "true" || val == "1");
19362 }
19363 b"ph" => {
19364 f_placeholder = Some(val == "true" || val == "1");
19365 }
19366 b"oldPh" => {
19367 f_old_ph = Some(val == "true" || val == "1");
19368 }
19369 b"endOfListFormulaUpdate" => {
19370 f_end_of_list_formula_update = Some(val == "true" || val == "1");
19371 }
19372 #[cfg(feature = "extra-attrs")]
19373 unknown => {
19374 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
19375 extra_attrs.insert(key, val.into_owned());
19376 }
19377 #[cfg(not(feature = "extra-attrs"))]
19378 _ => {}
19379 }
19380 }
19381
19382 if !is_empty {
19384 let mut buf = Vec::new();
19385 loop {
19386 match reader.read_event_into(&mut buf)? {
19387 Event::Start(e) => {
19388 match e.local_name().as_ref() {
19389 b"oc" => {
19390 f_oc = Some(Box::new(Cell::from_xml(reader, &e, false)?));
19391 #[cfg(feature = "extra-children")]
19392 {
19393 child_idx += 1;
19394 }
19395 }
19396 b"nc" => {
19397 f_nc = Some(Box::new(Cell::from_xml(reader, &e, false)?));
19398 #[cfg(feature = "extra-children")]
19399 {
19400 child_idx += 1;
19401 }
19402 }
19403 b"ndxf" => {
19404 f_ndxf = Some(Box::new(DifferentialFormat::from_xml(
19405 reader, &e, false,
19406 )?));
19407 #[cfg(feature = "extra-children")]
19408 {
19409 child_idx += 1;
19410 }
19411 }
19412 b"extLst" => {
19413 f_extension_list =
19414 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
19415 #[cfg(feature = "extra-children")]
19416 {
19417 child_idx += 1;
19418 }
19419 }
19420 #[cfg(feature = "extra-children")]
19421 _ => {
19422 let elem = RawXmlElement::from_reader(reader, &e)?;
19424 extra_children.push(PositionedNode::new(
19425 child_idx,
19426 RawXmlNode::Element(elem),
19427 ));
19428 child_idx += 1;
19429 }
19430 #[cfg(not(feature = "extra-children"))]
19431 _ => {
19432 skip_element(reader)?;
19434 }
19435 }
19436 }
19437 Event::Empty(e) => {
19438 match e.local_name().as_ref() {
19439 b"oc" => {
19440 f_oc = Some(Box::new(Cell::from_xml(reader, &e, true)?));
19441 #[cfg(feature = "extra-children")]
19442 {
19443 child_idx += 1;
19444 }
19445 }
19446 b"nc" => {
19447 f_nc = Some(Box::new(Cell::from_xml(reader, &e, true)?));
19448 #[cfg(feature = "extra-children")]
19449 {
19450 child_idx += 1;
19451 }
19452 }
19453 b"ndxf" => {
19454 f_ndxf =
19455 Some(Box::new(DifferentialFormat::from_xml(reader, &e, true)?));
19456 #[cfg(feature = "extra-children")]
19457 {
19458 child_idx += 1;
19459 }
19460 }
19461 b"extLst" => {
19462 f_extension_list =
19463 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
19464 #[cfg(feature = "extra-children")]
19465 {
19466 child_idx += 1;
19467 }
19468 }
19469 #[cfg(feature = "extra-children")]
19470 _ => {
19471 let elem = RawXmlElement::from_empty(&e);
19473 extra_children.push(PositionedNode::new(
19474 child_idx,
19475 RawXmlNode::Element(elem),
19476 ));
19477 child_idx += 1;
19478 }
19479 #[cfg(not(feature = "extra-children"))]
19480 _ => {}
19481 }
19482 }
19483 Event::End(_) => break,
19484 Event::Eof => break,
19485 _ => {}
19486 }
19487 buf.clear();
19488 }
19489 }
19490
19491 Ok(Self {
19492 r_id: f_r_id.ok_or_else(|| ParseError::MissingAttribute("rId".to_string()))?,
19493 ua: f_ua,
19494 ra: f_ra,
19495 s_id: f_s_id.ok_or_else(|| ParseError::MissingAttribute("sId".to_string()))?,
19496 odxf: f_odxf,
19497 xf_dxf: f_xf_dxf,
19498 style_index: f_style_index,
19499 dxf: f_dxf,
19500 number_format_id: f_number_format_id,
19501 quote_prefix: f_quote_prefix,
19502 old_quote_prefix: f_old_quote_prefix,
19503 placeholder: f_placeholder,
19504 old_ph: f_old_ph,
19505 end_of_list_formula_update: f_end_of_list_formula_update,
19506 oc: f_oc,
19507 nc: f_nc.ok_or_else(|| ParseError::MissingAttribute("nc".to_string()))?,
19508 ndxf: f_ndxf,
19509 extension_list: f_extension_list,
19510 #[cfg(feature = "extra-attrs")]
19511 extra_attrs,
19512 #[cfg(feature = "extra-children")]
19513 extra_children,
19514 })
19515 }
19516}
19517
19518impl FromXml for RevisionFormatting {
19519 fn from_xml<R: BufRead>(
19520 reader: &mut Reader<R>,
19521 start_tag: &BytesStart,
19522 is_empty: bool,
19523 ) -> Result<Self, ParseError> {
19524 let mut f_sheet_id: Option<u32> = None;
19525 let mut f_xf_dxf = None;
19526 let mut f_style_index = None;
19527 let mut f_square_reference: Option<SquareRef> = None;
19528 let mut f_start = None;
19529 let mut f_length = None;
19530 let mut f_dxf = None;
19531 let mut f_extension_list = None;
19532 #[cfg(feature = "extra-attrs")]
19533 let mut extra_attrs = std::collections::HashMap::new();
19534 #[cfg(feature = "extra-children")]
19535 let mut extra_children = Vec::new();
19536 #[cfg(feature = "extra-children")]
19537 let mut child_idx: usize = 0;
19538
19539 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
19541 let val = String::from_utf8_lossy(&attr.value);
19542 match attr.key.local_name().as_ref() {
19543 b"sheetId" => {
19544 f_sheet_id = val.parse().ok();
19545 }
19546 b"xfDxf" => {
19547 f_xf_dxf = Some(val == "true" || val == "1");
19548 }
19549 b"s" => {
19550 f_style_index = Some(val == "true" || val == "1");
19551 }
19552 b"sqref" => {
19553 f_square_reference = Some(val.into_owned());
19554 }
19555 b"start" => {
19556 f_start = val.parse().ok();
19557 }
19558 b"length" => {
19559 f_length = val.parse().ok();
19560 }
19561 #[cfg(feature = "extra-attrs")]
19562 unknown => {
19563 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
19564 extra_attrs.insert(key, val.into_owned());
19565 }
19566 #[cfg(not(feature = "extra-attrs"))]
19567 _ => {}
19568 }
19569 }
19570
19571 if !is_empty {
19573 let mut buf = Vec::new();
19574 loop {
19575 match reader.read_event_into(&mut buf)? {
19576 Event::Start(e) => {
19577 match e.local_name().as_ref() {
19578 b"dxf" => {
19579 f_dxf = Some(Box::new(DifferentialFormat::from_xml(
19580 reader, &e, false,
19581 )?));
19582 #[cfg(feature = "extra-children")]
19583 {
19584 child_idx += 1;
19585 }
19586 }
19587 b"extLst" => {
19588 f_extension_list =
19589 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
19590 #[cfg(feature = "extra-children")]
19591 {
19592 child_idx += 1;
19593 }
19594 }
19595 #[cfg(feature = "extra-children")]
19596 _ => {
19597 let elem = RawXmlElement::from_reader(reader, &e)?;
19599 extra_children.push(PositionedNode::new(
19600 child_idx,
19601 RawXmlNode::Element(elem),
19602 ));
19603 child_idx += 1;
19604 }
19605 #[cfg(not(feature = "extra-children"))]
19606 _ => {
19607 skip_element(reader)?;
19609 }
19610 }
19611 }
19612 Event::Empty(e) => {
19613 match e.local_name().as_ref() {
19614 b"dxf" => {
19615 f_dxf =
19616 Some(Box::new(DifferentialFormat::from_xml(reader, &e, true)?));
19617 #[cfg(feature = "extra-children")]
19618 {
19619 child_idx += 1;
19620 }
19621 }
19622 b"extLst" => {
19623 f_extension_list =
19624 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
19625 #[cfg(feature = "extra-children")]
19626 {
19627 child_idx += 1;
19628 }
19629 }
19630 #[cfg(feature = "extra-children")]
19631 _ => {
19632 let elem = RawXmlElement::from_empty(&e);
19634 extra_children.push(PositionedNode::new(
19635 child_idx,
19636 RawXmlNode::Element(elem),
19637 ));
19638 child_idx += 1;
19639 }
19640 #[cfg(not(feature = "extra-children"))]
19641 _ => {}
19642 }
19643 }
19644 Event::End(_) => break,
19645 Event::Eof => break,
19646 _ => {}
19647 }
19648 buf.clear();
19649 }
19650 }
19651
19652 Ok(Self {
19653 sheet_id: f_sheet_id
19654 .ok_or_else(|| ParseError::MissingAttribute("sheetId".to_string()))?,
19655 xf_dxf: f_xf_dxf,
19656 style_index: f_style_index,
19657 square_reference: f_square_reference
19658 .ok_or_else(|| ParseError::MissingAttribute("sqref".to_string()))?,
19659 start: f_start,
19660 length: f_length,
19661 dxf: f_dxf,
19662 extension_list: f_extension_list,
19663 #[cfg(feature = "extra-attrs")]
19664 extra_attrs,
19665 #[cfg(feature = "extra-children")]
19666 extra_children,
19667 })
19668 }
19669}
19670
19671impl FromXml for RevisionAutoFormatting {
19672 fn from_xml<R: BufRead>(
19673 reader: &mut Reader<R>,
19674 start_tag: &BytesStart,
19675 is_empty: bool,
19676 ) -> Result<Self, ParseError> {
19677 let mut f_sheet_id: Option<u32> = None;
19678 let mut f_auto_format_id = None;
19679 let mut f_apply_number_formats = None;
19680 let mut f_apply_border_formats = None;
19681 let mut f_apply_font_formats = None;
19682 let mut f_apply_pattern_formats = None;
19683 let mut f_apply_alignment_formats = None;
19684 let mut f_apply_width_height_formats = None;
19685 let mut f_reference: Option<Reference> = None;
19686 #[cfg(feature = "extra-attrs")]
19687 let mut extra_attrs = std::collections::HashMap::new();
19688
19689 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
19691 let val = String::from_utf8_lossy(&attr.value);
19692 match attr.key.local_name().as_ref() {
19693 b"sheetId" => {
19694 f_sheet_id = val.parse().ok();
19695 }
19696 b"autoFormatId" => {
19697 f_auto_format_id = val.parse().ok();
19698 }
19699 b"applyNumberFormats" => {
19700 f_apply_number_formats = Some(val == "true" || val == "1");
19701 }
19702 b"applyBorderFormats" => {
19703 f_apply_border_formats = Some(val == "true" || val == "1");
19704 }
19705 b"applyFontFormats" => {
19706 f_apply_font_formats = Some(val == "true" || val == "1");
19707 }
19708 b"applyPatternFormats" => {
19709 f_apply_pattern_formats = Some(val == "true" || val == "1");
19710 }
19711 b"applyAlignmentFormats" => {
19712 f_apply_alignment_formats = Some(val == "true" || val == "1");
19713 }
19714 b"applyWidthHeightFormats" => {
19715 f_apply_width_height_formats = Some(val == "true" || val == "1");
19716 }
19717 b"ref" => {
19718 f_reference = Some(val.into_owned());
19719 }
19720 #[cfg(feature = "extra-attrs")]
19721 unknown => {
19722 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
19723 extra_attrs.insert(key, val.into_owned());
19724 }
19725 #[cfg(not(feature = "extra-attrs"))]
19726 _ => {}
19727 }
19728 }
19729
19730 if !is_empty {
19731 let mut buf = Vec::new();
19732 loop {
19733 match reader.read_event_into(&mut buf)? {
19734 Event::End(_) => break,
19735 Event::Eof => break,
19736 _ => {}
19737 }
19738 buf.clear();
19739 }
19740 }
19741
19742 Ok(Self {
19743 sheet_id: f_sheet_id
19744 .ok_or_else(|| ParseError::MissingAttribute("sheetId".to_string()))?,
19745 auto_format_id: f_auto_format_id,
19746 apply_number_formats: f_apply_number_formats,
19747 apply_border_formats: f_apply_border_formats,
19748 apply_font_formats: f_apply_font_formats,
19749 apply_pattern_formats: f_apply_pattern_formats,
19750 apply_alignment_formats: f_apply_alignment_formats,
19751 apply_width_height_formats: f_apply_width_height_formats,
19752 reference: f_reference
19753 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
19754 #[cfg(feature = "extra-attrs")]
19755 extra_attrs,
19756 })
19757 }
19758}
19759
19760impl FromXml for RevisionComment {
19761 fn from_xml<R: BufRead>(
19762 reader: &mut Reader<R>,
19763 start_tag: &BytesStart,
19764 is_empty: bool,
19765 ) -> Result<Self, ParseError> {
19766 let mut f_sheet_id: Option<u32> = None;
19767 let mut f_cell: Option<CellRef> = None;
19768 let mut f_guid: Option<Guid> = None;
19769 let mut f_action = None;
19770 let mut f_always_show = None;
19771 let mut f_old = None;
19772 let mut f_hidden_row = None;
19773 let mut f_hidden_column = None;
19774 let mut f_author: Option<XmlString> = None;
19775 let mut f_old_length = None;
19776 let mut f_new_length = None;
19777 #[cfg(feature = "extra-attrs")]
19778 let mut extra_attrs = std::collections::HashMap::new();
19779
19780 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
19782 let val = String::from_utf8_lossy(&attr.value);
19783 match attr.key.local_name().as_ref() {
19784 b"sheetId" => {
19785 f_sheet_id = val.parse().ok();
19786 }
19787 b"cell" => {
19788 f_cell = Some(val.into_owned());
19789 }
19790 b"guid" => {
19791 f_guid = Some(val.into_owned());
19792 }
19793 b"action" => {
19794 f_action = val.parse().ok();
19795 }
19796 b"alwaysShow" => {
19797 f_always_show = Some(val == "true" || val == "1");
19798 }
19799 b"old" => {
19800 f_old = Some(val == "true" || val == "1");
19801 }
19802 b"hiddenRow" => {
19803 f_hidden_row = Some(val == "true" || val == "1");
19804 }
19805 b"hiddenColumn" => {
19806 f_hidden_column = Some(val == "true" || val == "1");
19807 }
19808 b"author" => {
19809 f_author = Some(val.into_owned());
19810 }
19811 b"oldLength" => {
19812 f_old_length = val.parse().ok();
19813 }
19814 b"newLength" => {
19815 f_new_length = val.parse().ok();
19816 }
19817 #[cfg(feature = "extra-attrs")]
19818 unknown => {
19819 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
19820 extra_attrs.insert(key, val.into_owned());
19821 }
19822 #[cfg(not(feature = "extra-attrs"))]
19823 _ => {}
19824 }
19825 }
19826
19827 if !is_empty {
19828 let mut buf = Vec::new();
19829 loop {
19830 match reader.read_event_into(&mut buf)? {
19831 Event::End(_) => break,
19832 Event::Eof => break,
19833 _ => {}
19834 }
19835 buf.clear();
19836 }
19837 }
19838
19839 Ok(Self {
19840 sheet_id: f_sheet_id
19841 .ok_or_else(|| ParseError::MissingAttribute("sheetId".to_string()))?,
19842 cell: f_cell.ok_or_else(|| ParseError::MissingAttribute("cell".to_string()))?,
19843 guid: f_guid.ok_or_else(|| ParseError::MissingAttribute("guid".to_string()))?,
19844 action: f_action,
19845 always_show: f_always_show,
19846 old: f_old,
19847 hidden_row: f_hidden_row,
19848 hidden_column: f_hidden_column,
19849 author: f_author.ok_or_else(|| ParseError::MissingAttribute("author".to_string()))?,
19850 old_length: f_old_length,
19851 new_length: f_new_length,
19852 #[cfg(feature = "extra-attrs")]
19853 extra_attrs,
19854 })
19855 }
19856}
19857
19858impl FromXml for RevisionDefinedName {
19859 fn from_xml<R: BufRead>(
19860 reader: &mut Reader<R>,
19861 start_tag: &BytesStart,
19862 is_empty: bool,
19863 ) -> Result<Self, ParseError> {
19864 let mut f_r_id: Option<u32> = None;
19865 let mut f_ua = None;
19866 let mut f_ra = None;
19867 let mut f_local_sheet_id = None;
19868 let mut f_custom_view = None;
19869 let mut f_name: Option<XmlString> = None;
19870 let mut f_function = None;
19871 let mut f_old_function = None;
19872 let mut f_function_group_id = None;
19873 let mut f_old_function_group_id = None;
19874 let mut f_shortcut_key = None;
19875 let mut f_old_shortcut_key = None;
19876 let mut f_hidden = None;
19877 let mut f_old_hidden = None;
19878 let mut f_custom_menu = None;
19879 let mut f_old_custom_menu = None;
19880 let mut f_description = None;
19881 let mut f_old_description = None;
19882 let mut f_help = None;
19883 let mut f_old_help = None;
19884 let mut f_status_bar = None;
19885 let mut f_old_status_bar = None;
19886 let mut f_comment = None;
19887 let mut f_old_comment = None;
19888 let mut f_formula = None;
19889 let mut f_old_formula = None;
19890 let mut f_extension_list = None;
19891 #[cfg(feature = "extra-attrs")]
19892 let mut extra_attrs = std::collections::HashMap::new();
19893 #[cfg(feature = "extra-children")]
19894 let mut extra_children = Vec::new();
19895 #[cfg(feature = "extra-children")]
19896 let mut child_idx: usize = 0;
19897
19898 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
19900 let val = String::from_utf8_lossy(&attr.value);
19901 match attr.key.local_name().as_ref() {
19902 b"rId" => {
19903 f_r_id = val.parse().ok();
19904 }
19905 b"ua" => {
19906 f_ua = Some(val == "true" || val == "1");
19907 }
19908 b"ra" => {
19909 f_ra = Some(val == "true" || val == "1");
19910 }
19911 b"localSheetId" => {
19912 f_local_sheet_id = val.parse().ok();
19913 }
19914 b"customView" => {
19915 f_custom_view = Some(val == "true" || val == "1");
19916 }
19917 b"name" => {
19918 f_name = Some(val.into_owned());
19919 }
19920 b"function" => {
19921 f_function = Some(val == "true" || val == "1");
19922 }
19923 b"oldFunction" => {
19924 f_old_function = Some(val == "true" || val == "1");
19925 }
19926 b"functionGroupId" => {
19927 f_function_group_id = val.parse().ok();
19928 }
19929 b"oldFunctionGroupId" => {
19930 f_old_function_group_id = val.parse().ok();
19931 }
19932 b"shortcutKey" => {
19933 f_shortcut_key = val.parse().ok();
19934 }
19935 b"oldShortcutKey" => {
19936 f_old_shortcut_key = val.parse().ok();
19937 }
19938 b"hidden" => {
19939 f_hidden = Some(val == "true" || val == "1");
19940 }
19941 b"oldHidden" => {
19942 f_old_hidden = Some(val == "true" || val == "1");
19943 }
19944 b"customMenu" => {
19945 f_custom_menu = Some(val.into_owned());
19946 }
19947 b"oldCustomMenu" => {
19948 f_old_custom_menu = Some(val.into_owned());
19949 }
19950 b"description" => {
19951 f_description = Some(val.into_owned());
19952 }
19953 b"oldDescription" => {
19954 f_old_description = Some(val.into_owned());
19955 }
19956 b"help" => {
19957 f_help = Some(val.into_owned());
19958 }
19959 b"oldHelp" => {
19960 f_old_help = Some(val.into_owned());
19961 }
19962 b"statusBar" => {
19963 f_status_bar = Some(val.into_owned());
19964 }
19965 b"oldStatusBar" => {
19966 f_old_status_bar = Some(val.into_owned());
19967 }
19968 b"comment" => {
19969 f_comment = Some(val.into_owned());
19970 }
19971 b"oldComment" => {
19972 f_old_comment = Some(val.into_owned());
19973 }
19974 #[cfg(feature = "extra-attrs")]
19975 unknown => {
19976 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
19977 extra_attrs.insert(key, val.into_owned());
19978 }
19979 #[cfg(not(feature = "extra-attrs"))]
19980 _ => {}
19981 }
19982 }
19983
19984 if !is_empty {
19986 let mut buf = Vec::new();
19987 loop {
19988 match reader.read_event_into(&mut buf)? {
19989 Event::Start(e) => {
19990 match e.local_name().as_ref() {
19991 b"formula" => {
19992 f_formula = Some(read_text_content(reader)?);
19993 #[cfg(feature = "extra-children")]
19994 {
19995 child_idx += 1;
19996 }
19997 }
19998 b"oldFormula" => {
19999 f_old_formula = Some(read_text_content(reader)?);
20000 #[cfg(feature = "extra-children")]
20001 {
20002 child_idx += 1;
20003 }
20004 }
20005 b"extLst" => {
20006 f_extension_list =
20007 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
20008 #[cfg(feature = "extra-children")]
20009 {
20010 child_idx += 1;
20011 }
20012 }
20013 #[cfg(feature = "extra-children")]
20014 _ => {
20015 let elem = RawXmlElement::from_reader(reader, &e)?;
20017 extra_children.push(PositionedNode::new(
20018 child_idx,
20019 RawXmlNode::Element(elem),
20020 ));
20021 child_idx += 1;
20022 }
20023 #[cfg(not(feature = "extra-children"))]
20024 _ => {
20025 skip_element(reader)?;
20027 }
20028 }
20029 }
20030 Event::Empty(e) => {
20031 match e.local_name().as_ref() {
20032 b"formula" => {
20033 f_formula = Some(String::new());
20034 #[cfg(feature = "extra-children")]
20035 {
20036 child_idx += 1;
20037 }
20038 }
20039 b"oldFormula" => {
20040 f_old_formula = Some(String::new());
20041 #[cfg(feature = "extra-children")]
20042 {
20043 child_idx += 1;
20044 }
20045 }
20046 b"extLst" => {
20047 f_extension_list =
20048 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
20049 #[cfg(feature = "extra-children")]
20050 {
20051 child_idx += 1;
20052 }
20053 }
20054 #[cfg(feature = "extra-children")]
20055 _ => {
20056 let elem = RawXmlElement::from_empty(&e);
20058 extra_children.push(PositionedNode::new(
20059 child_idx,
20060 RawXmlNode::Element(elem),
20061 ));
20062 child_idx += 1;
20063 }
20064 #[cfg(not(feature = "extra-children"))]
20065 _ => {}
20066 }
20067 }
20068 Event::End(_) => break,
20069 Event::Eof => break,
20070 _ => {}
20071 }
20072 buf.clear();
20073 }
20074 }
20075
20076 Ok(Self {
20077 r_id: f_r_id.ok_or_else(|| ParseError::MissingAttribute("rId".to_string()))?,
20078 ua: f_ua,
20079 ra: f_ra,
20080 local_sheet_id: f_local_sheet_id,
20081 custom_view: f_custom_view,
20082 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
20083 function: f_function,
20084 old_function: f_old_function,
20085 function_group_id: f_function_group_id,
20086 old_function_group_id: f_old_function_group_id,
20087 shortcut_key: f_shortcut_key,
20088 old_shortcut_key: f_old_shortcut_key,
20089 hidden: f_hidden,
20090 old_hidden: f_old_hidden,
20091 custom_menu: f_custom_menu,
20092 old_custom_menu: f_old_custom_menu,
20093 description: f_description,
20094 old_description: f_old_description,
20095 help: f_help,
20096 old_help: f_old_help,
20097 status_bar: f_status_bar,
20098 old_status_bar: f_old_status_bar,
20099 comment: f_comment,
20100 old_comment: f_old_comment,
20101 formula: f_formula,
20102 old_formula: f_old_formula,
20103 extension_list: f_extension_list,
20104 #[cfg(feature = "extra-attrs")]
20105 extra_attrs,
20106 #[cfg(feature = "extra-children")]
20107 extra_children,
20108 })
20109 }
20110}
20111
20112impl FromXml for RevisionConflict {
20113 fn from_xml<R: BufRead>(
20114 reader: &mut Reader<R>,
20115 start_tag: &BytesStart,
20116 is_empty: bool,
20117 ) -> Result<Self, ParseError> {
20118 let mut f_r_id: Option<u32> = None;
20119 let mut f_ua = None;
20120 let mut f_ra = None;
20121 let mut f_sheet_id = None;
20122 #[cfg(feature = "extra-attrs")]
20123 let mut extra_attrs = std::collections::HashMap::new();
20124
20125 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
20127 let val = String::from_utf8_lossy(&attr.value);
20128 match attr.key.local_name().as_ref() {
20129 b"rId" => {
20130 f_r_id = val.parse().ok();
20131 }
20132 b"ua" => {
20133 f_ua = Some(val == "true" || val == "1");
20134 }
20135 b"ra" => {
20136 f_ra = Some(val == "true" || val == "1");
20137 }
20138 b"sheetId" => {
20139 f_sheet_id = val.parse().ok();
20140 }
20141 #[cfg(feature = "extra-attrs")]
20142 unknown => {
20143 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
20144 extra_attrs.insert(key, val.into_owned());
20145 }
20146 #[cfg(not(feature = "extra-attrs"))]
20147 _ => {}
20148 }
20149 }
20150
20151 if !is_empty {
20152 let mut buf = Vec::new();
20153 loop {
20154 match reader.read_event_into(&mut buf)? {
20155 Event::End(_) => break,
20156 Event::Eof => break,
20157 _ => {}
20158 }
20159 buf.clear();
20160 }
20161 }
20162
20163 Ok(Self {
20164 r_id: f_r_id.ok_or_else(|| ParseError::MissingAttribute("rId".to_string()))?,
20165 ua: f_ua,
20166 ra: f_ra,
20167 sheet_id: f_sheet_id,
20168 #[cfg(feature = "extra-attrs")]
20169 extra_attrs,
20170 })
20171 }
20172}
20173
20174impl FromXml for RevisionQueryTableField {
20175 fn from_xml<R: BufRead>(
20176 reader: &mut Reader<R>,
20177 start_tag: &BytesStart,
20178 is_empty: bool,
20179 ) -> Result<Self, ParseError> {
20180 let mut f_sheet_id: Option<u32> = None;
20181 let mut f_reference: Option<Reference> = None;
20182 let mut f_field_id: Option<u32> = None;
20183 #[cfg(feature = "extra-attrs")]
20184 let mut extra_attrs = std::collections::HashMap::new();
20185
20186 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
20188 let val = String::from_utf8_lossy(&attr.value);
20189 match attr.key.local_name().as_ref() {
20190 b"sheetId" => {
20191 f_sheet_id = val.parse().ok();
20192 }
20193 b"ref" => {
20194 f_reference = Some(val.into_owned());
20195 }
20196 b"fieldId" => {
20197 f_field_id = val.parse().ok();
20198 }
20199 #[cfg(feature = "extra-attrs")]
20200 unknown => {
20201 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
20202 extra_attrs.insert(key, val.into_owned());
20203 }
20204 #[cfg(not(feature = "extra-attrs"))]
20205 _ => {}
20206 }
20207 }
20208
20209 if !is_empty {
20210 let mut buf = Vec::new();
20211 loop {
20212 match reader.read_event_into(&mut buf)? {
20213 Event::End(_) => break,
20214 Event::Eof => break,
20215 _ => {}
20216 }
20217 buf.clear();
20218 }
20219 }
20220
20221 Ok(Self {
20222 sheet_id: f_sheet_id
20223 .ok_or_else(|| ParseError::MissingAttribute("sheetId".to_string()))?,
20224 reference: f_reference
20225 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
20226 field_id: f_field_id
20227 .ok_or_else(|| ParseError::MissingAttribute("fieldId".to_string()))?,
20228 #[cfg(feature = "extra-attrs")]
20229 extra_attrs,
20230 })
20231 }
20232}
20233
20234impl FromXml for Users {
20235 fn from_xml<R: BufRead>(
20236 reader: &mut Reader<R>,
20237 start_tag: &BytesStart,
20238 is_empty: bool,
20239 ) -> Result<Self, ParseError> {
20240 let mut f_count = None;
20241 let mut f_user_info = Vec::new();
20242 #[cfg(feature = "extra-attrs")]
20243 let mut extra_attrs = std::collections::HashMap::new();
20244 #[cfg(feature = "extra-children")]
20245 let mut extra_children = Vec::new();
20246 #[cfg(feature = "extra-children")]
20247 let mut child_idx: usize = 0;
20248
20249 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
20251 let val = String::from_utf8_lossy(&attr.value);
20252 match attr.key.local_name().as_ref() {
20253 b"count" => {
20254 f_count = val.parse().ok();
20255 }
20256 #[cfg(feature = "extra-attrs")]
20257 unknown => {
20258 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
20259 extra_attrs.insert(key, val.into_owned());
20260 }
20261 #[cfg(not(feature = "extra-attrs"))]
20262 _ => {}
20263 }
20264 }
20265
20266 if !is_empty {
20268 let mut buf = Vec::new();
20269 loop {
20270 match reader.read_event_into(&mut buf)? {
20271 Event::Start(e) => {
20272 match e.local_name().as_ref() {
20273 b"userInfo" => {
20274 f_user_info.push(SharedUser::from_xml(reader, &e, false)?);
20275 #[cfg(feature = "extra-children")]
20276 {
20277 child_idx += 1;
20278 }
20279 }
20280 #[cfg(feature = "extra-children")]
20281 _ => {
20282 let elem = RawXmlElement::from_reader(reader, &e)?;
20284 extra_children.push(PositionedNode::new(
20285 child_idx,
20286 RawXmlNode::Element(elem),
20287 ));
20288 child_idx += 1;
20289 }
20290 #[cfg(not(feature = "extra-children"))]
20291 _ => {
20292 skip_element(reader)?;
20294 }
20295 }
20296 }
20297 Event::Empty(e) => {
20298 match e.local_name().as_ref() {
20299 b"userInfo" => {
20300 f_user_info.push(SharedUser::from_xml(reader, &e, true)?);
20301 #[cfg(feature = "extra-children")]
20302 {
20303 child_idx += 1;
20304 }
20305 }
20306 #[cfg(feature = "extra-children")]
20307 _ => {
20308 let elem = RawXmlElement::from_empty(&e);
20310 extra_children.push(PositionedNode::new(
20311 child_idx,
20312 RawXmlNode::Element(elem),
20313 ));
20314 child_idx += 1;
20315 }
20316 #[cfg(not(feature = "extra-children"))]
20317 _ => {}
20318 }
20319 }
20320 Event::End(_) => break,
20321 Event::Eof => break,
20322 _ => {}
20323 }
20324 buf.clear();
20325 }
20326 }
20327
20328 Ok(Self {
20329 count: f_count,
20330 user_info: f_user_info,
20331 #[cfg(feature = "extra-attrs")]
20332 extra_attrs,
20333 #[cfg(feature = "extra-children")]
20334 extra_children,
20335 })
20336 }
20337}
20338
20339impl FromXml for SharedUser {
20340 fn from_xml<R: BufRead>(
20341 reader: &mut Reader<R>,
20342 start_tag: &BytesStart,
20343 is_empty: bool,
20344 ) -> Result<Self, ParseError> {
20345 let mut f_guid: Option<Guid> = None;
20346 let mut f_name: Option<XmlString> = None;
20347 let mut f_id: Option<i32> = None;
20348 let mut f_date_time: Option<String> = None;
20349 let mut f_extension_list = None;
20350 #[cfg(feature = "extra-attrs")]
20351 let mut extra_attrs = std::collections::HashMap::new();
20352 #[cfg(feature = "extra-children")]
20353 let mut extra_children = Vec::new();
20354 #[cfg(feature = "extra-children")]
20355 let mut child_idx: usize = 0;
20356
20357 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
20359 let val = String::from_utf8_lossy(&attr.value);
20360 match attr.key.local_name().as_ref() {
20361 b"guid" => {
20362 f_guid = Some(val.into_owned());
20363 }
20364 b"name" => {
20365 f_name = Some(val.into_owned());
20366 }
20367 b"id" => {
20368 f_id = val.parse().ok();
20369 }
20370 b"dateTime" => {
20371 f_date_time = Some(val.into_owned());
20372 }
20373 #[cfg(feature = "extra-attrs")]
20374 unknown => {
20375 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
20376 extra_attrs.insert(key, val.into_owned());
20377 }
20378 #[cfg(not(feature = "extra-attrs"))]
20379 _ => {}
20380 }
20381 }
20382
20383 if !is_empty {
20385 let mut buf = Vec::new();
20386 loop {
20387 match reader.read_event_into(&mut buf)? {
20388 Event::Start(e) => {
20389 match e.local_name().as_ref() {
20390 b"extLst" => {
20391 f_extension_list =
20392 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
20393 #[cfg(feature = "extra-children")]
20394 {
20395 child_idx += 1;
20396 }
20397 }
20398 #[cfg(feature = "extra-children")]
20399 _ => {
20400 let elem = RawXmlElement::from_reader(reader, &e)?;
20402 extra_children.push(PositionedNode::new(
20403 child_idx,
20404 RawXmlNode::Element(elem),
20405 ));
20406 child_idx += 1;
20407 }
20408 #[cfg(not(feature = "extra-children"))]
20409 _ => {
20410 skip_element(reader)?;
20412 }
20413 }
20414 }
20415 Event::Empty(e) => {
20416 match e.local_name().as_ref() {
20417 b"extLst" => {
20418 f_extension_list =
20419 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
20420 #[cfg(feature = "extra-children")]
20421 {
20422 child_idx += 1;
20423 }
20424 }
20425 #[cfg(feature = "extra-children")]
20426 _ => {
20427 let elem = RawXmlElement::from_empty(&e);
20429 extra_children.push(PositionedNode::new(
20430 child_idx,
20431 RawXmlNode::Element(elem),
20432 ));
20433 child_idx += 1;
20434 }
20435 #[cfg(not(feature = "extra-children"))]
20436 _ => {}
20437 }
20438 }
20439 Event::End(_) => break,
20440 Event::Eof => break,
20441 _ => {}
20442 }
20443 buf.clear();
20444 }
20445 }
20446
20447 Ok(Self {
20448 guid: f_guid.ok_or_else(|| ParseError::MissingAttribute("guid".to_string()))?,
20449 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
20450 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
20451 date_time: f_date_time
20452 .ok_or_else(|| ParseError::MissingAttribute("dateTime".to_string()))?,
20453 extension_list: f_extension_list,
20454 #[cfg(feature = "extra-attrs")]
20455 extra_attrs,
20456 #[cfg(feature = "extra-children")]
20457 extra_children,
20458 })
20459 }
20460}
20461
20462impl FromXml for CTMacrosheet {
20463 fn from_xml<R: BufRead>(
20464 reader: &mut Reader<R>,
20465 start_tag: &BytesStart,
20466 is_empty: bool,
20467 ) -> Result<Self, ParseError> {
20468 let mut f_sheet_properties = None;
20469 let mut f_dimension = None;
20470 let mut f_sheet_views = None;
20471 let mut f_sheet_format = None;
20472 let mut f_cols = Vec::new();
20473 let mut f_sheet_data: Option<Box<SheetData>> = None;
20474 let mut f_sheet_protection = None;
20475 let mut f_auto_filter = None;
20476 let mut f_sort_state = None;
20477 let mut f_data_consolidate = None;
20478 let mut f_custom_sheet_views = None;
20479 let mut f_phonetic_pr = None;
20480 let mut f_conditional_formatting = Vec::new();
20481 let mut f_print_options = None;
20482 let mut f_page_margins = None;
20483 let mut f_page_setup = None;
20484 let mut f_header_footer = None;
20485 let mut f_row_breaks = None;
20486 let mut f_col_breaks = None;
20487 let mut f_custom_properties = None;
20488 let mut f_drawing = None;
20489 let mut f_legacy_drawing = None;
20490 let mut f_legacy_drawing_h_f = None;
20491 let mut f_drawing_h_f = None;
20492 let mut f_picture = None;
20493 let mut f_ole_objects = None;
20494 let mut f_extension_list = None;
20495 #[cfg(feature = "extra-children")]
20496 let mut extra_children = Vec::new();
20497 #[cfg(feature = "extra-children")]
20498 let mut child_idx: usize = 0;
20499
20500 if !is_empty {
20502 let mut buf = Vec::new();
20503 loop {
20504 match reader.read_event_into(&mut buf)? {
20505 Event::Start(e) => {
20506 match e.local_name().as_ref() {
20507 b"sheetPr" => {
20508 f_sheet_properties =
20509 Some(Box::new(SheetProperties::from_xml(reader, &e, false)?));
20510 #[cfg(feature = "extra-children")]
20511 {
20512 child_idx += 1;
20513 }
20514 }
20515 b"dimension" => {
20516 f_dimension =
20517 Some(Box::new(SheetDimension::from_xml(reader, &e, false)?));
20518 #[cfg(feature = "extra-children")]
20519 {
20520 child_idx += 1;
20521 }
20522 }
20523 b"sheetViews" => {
20524 f_sheet_views =
20525 Some(Box::new(SheetViews::from_xml(reader, &e, false)?));
20526 #[cfg(feature = "extra-children")]
20527 {
20528 child_idx += 1;
20529 }
20530 }
20531 b"sheetFormatPr" => {
20532 f_sheet_format =
20533 Some(Box::new(SheetFormat::from_xml(reader, &e, false)?));
20534 #[cfg(feature = "extra-children")]
20535 {
20536 child_idx += 1;
20537 }
20538 }
20539 b"cols" => {
20540 f_cols.push(Columns::from_xml(reader, &e, false)?);
20541 #[cfg(feature = "extra-children")]
20542 {
20543 child_idx += 1;
20544 }
20545 }
20546 b"sheetData" => {
20547 f_sheet_data =
20548 Some(Box::new(SheetData::from_xml(reader, &e, false)?));
20549 #[cfg(feature = "extra-children")]
20550 {
20551 child_idx += 1;
20552 }
20553 }
20554 b"sheetProtection" => {
20555 f_sheet_protection =
20556 Some(Box::new(SheetProtection::from_xml(reader, &e, false)?));
20557 #[cfg(feature = "extra-children")]
20558 {
20559 child_idx += 1;
20560 }
20561 }
20562 b"autoFilter" => {
20563 f_auto_filter =
20564 Some(Box::new(AutoFilter::from_xml(reader, &e, false)?));
20565 #[cfg(feature = "extra-children")]
20566 {
20567 child_idx += 1;
20568 }
20569 }
20570 b"sortState" => {
20571 f_sort_state =
20572 Some(Box::new(SortState::from_xml(reader, &e, false)?));
20573 #[cfg(feature = "extra-children")]
20574 {
20575 child_idx += 1;
20576 }
20577 }
20578 b"dataConsolidate" => {
20579 f_data_consolidate =
20580 Some(Box::new(CTDataConsolidate::from_xml(reader, &e, false)?));
20581 #[cfg(feature = "extra-children")]
20582 {
20583 child_idx += 1;
20584 }
20585 }
20586 b"customSheetViews" => {
20587 f_custom_sheet_views =
20588 Some(Box::new(CustomSheetViews::from_xml(reader, &e, false)?));
20589 #[cfg(feature = "extra-children")]
20590 {
20591 child_idx += 1;
20592 }
20593 }
20594 b"phoneticPr" => {
20595 f_phonetic_pr = Some(Box::new(PhoneticProperties::from_xml(
20596 reader, &e, false,
20597 )?));
20598 #[cfg(feature = "extra-children")]
20599 {
20600 child_idx += 1;
20601 }
20602 }
20603 b"conditionalFormatting" => {
20604 f_conditional_formatting
20605 .push(ConditionalFormatting::from_xml(reader, &e, false)?);
20606 #[cfg(feature = "extra-children")]
20607 {
20608 child_idx += 1;
20609 }
20610 }
20611 b"printOptions" => {
20612 f_print_options =
20613 Some(Box::new(PrintOptions::from_xml(reader, &e, false)?));
20614 #[cfg(feature = "extra-children")]
20615 {
20616 child_idx += 1;
20617 }
20618 }
20619 b"pageMargins" => {
20620 f_page_margins =
20621 Some(Box::new(PageMargins::from_xml(reader, &e, false)?));
20622 #[cfg(feature = "extra-children")]
20623 {
20624 child_idx += 1;
20625 }
20626 }
20627 b"pageSetup" => {
20628 f_page_setup =
20629 Some(Box::new(PageSetup::from_xml(reader, &e, false)?));
20630 #[cfg(feature = "extra-children")]
20631 {
20632 child_idx += 1;
20633 }
20634 }
20635 b"headerFooter" => {
20636 f_header_footer =
20637 Some(Box::new(HeaderFooter::from_xml(reader, &e, false)?));
20638 #[cfg(feature = "extra-children")]
20639 {
20640 child_idx += 1;
20641 }
20642 }
20643 b"rowBreaks" => {
20644 f_row_breaks =
20645 Some(Box::new(PageBreaks::from_xml(reader, &e, false)?));
20646 #[cfg(feature = "extra-children")]
20647 {
20648 child_idx += 1;
20649 }
20650 }
20651 b"colBreaks" => {
20652 f_col_breaks =
20653 Some(Box::new(PageBreaks::from_xml(reader, &e, false)?));
20654 #[cfg(feature = "extra-children")]
20655 {
20656 child_idx += 1;
20657 }
20658 }
20659 b"customProperties" => {
20660 f_custom_properties = Some(Box::new(CTCustomProperties::from_xml(
20661 reader, &e, false,
20662 )?));
20663 #[cfg(feature = "extra-children")]
20664 {
20665 child_idx += 1;
20666 }
20667 }
20668 b"drawing" => {
20669 f_drawing = Some(Box::new(Drawing::from_xml(reader, &e, false)?));
20670 #[cfg(feature = "extra-children")]
20671 {
20672 child_idx += 1;
20673 }
20674 }
20675 b"legacyDrawing" => {
20676 f_legacy_drawing =
20677 Some(Box::new(LegacyDrawing::from_xml(reader, &e, false)?));
20678 #[cfg(feature = "extra-children")]
20679 {
20680 child_idx += 1;
20681 }
20682 }
20683 b"legacyDrawingHF" => {
20684 f_legacy_drawing_h_f =
20685 Some(Box::new(LegacyDrawing::from_xml(reader, &e, false)?));
20686 #[cfg(feature = "extra-children")]
20687 {
20688 child_idx += 1;
20689 }
20690 }
20691 b"drawingHF" => {
20692 f_drawing_h_f = Some(Box::new(DrawingHeaderFooter::from_xml(
20693 reader, &e, false,
20694 )?));
20695 #[cfg(feature = "extra-children")]
20696 {
20697 child_idx += 1;
20698 }
20699 }
20700 b"picture" => {
20701 f_picture = Some(Box::new(SheetBackgroundPicture::from_xml(
20702 reader, &e, false,
20703 )?));
20704 #[cfg(feature = "extra-children")]
20705 {
20706 child_idx += 1;
20707 }
20708 }
20709 b"oleObjects" => {
20710 f_ole_objects =
20711 Some(Box::new(OleObjects::from_xml(reader, &e, false)?));
20712 #[cfg(feature = "extra-children")]
20713 {
20714 child_idx += 1;
20715 }
20716 }
20717 b"extLst" => {
20718 f_extension_list =
20719 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
20720 #[cfg(feature = "extra-children")]
20721 {
20722 child_idx += 1;
20723 }
20724 }
20725 #[cfg(feature = "extra-children")]
20726 _ => {
20727 let elem = RawXmlElement::from_reader(reader, &e)?;
20729 extra_children.push(PositionedNode::new(
20730 child_idx,
20731 RawXmlNode::Element(elem),
20732 ));
20733 child_idx += 1;
20734 }
20735 #[cfg(not(feature = "extra-children"))]
20736 _ => {
20737 skip_element(reader)?;
20739 }
20740 }
20741 }
20742 Event::Empty(e) => {
20743 match e.local_name().as_ref() {
20744 b"sheetPr" => {
20745 f_sheet_properties =
20746 Some(Box::new(SheetProperties::from_xml(reader, &e, true)?));
20747 #[cfg(feature = "extra-children")]
20748 {
20749 child_idx += 1;
20750 }
20751 }
20752 b"dimension" => {
20753 f_dimension =
20754 Some(Box::new(SheetDimension::from_xml(reader, &e, true)?));
20755 #[cfg(feature = "extra-children")]
20756 {
20757 child_idx += 1;
20758 }
20759 }
20760 b"sheetViews" => {
20761 f_sheet_views =
20762 Some(Box::new(SheetViews::from_xml(reader, &e, true)?));
20763 #[cfg(feature = "extra-children")]
20764 {
20765 child_idx += 1;
20766 }
20767 }
20768 b"sheetFormatPr" => {
20769 f_sheet_format =
20770 Some(Box::new(SheetFormat::from_xml(reader, &e, true)?));
20771 #[cfg(feature = "extra-children")]
20772 {
20773 child_idx += 1;
20774 }
20775 }
20776 b"cols" => {
20777 f_cols.push(Columns::from_xml(reader, &e, true)?);
20778 #[cfg(feature = "extra-children")]
20779 {
20780 child_idx += 1;
20781 }
20782 }
20783 b"sheetData" => {
20784 f_sheet_data =
20785 Some(Box::new(SheetData::from_xml(reader, &e, true)?));
20786 #[cfg(feature = "extra-children")]
20787 {
20788 child_idx += 1;
20789 }
20790 }
20791 b"sheetProtection" => {
20792 f_sheet_protection =
20793 Some(Box::new(SheetProtection::from_xml(reader, &e, true)?));
20794 #[cfg(feature = "extra-children")]
20795 {
20796 child_idx += 1;
20797 }
20798 }
20799 b"autoFilter" => {
20800 f_auto_filter =
20801 Some(Box::new(AutoFilter::from_xml(reader, &e, true)?));
20802 #[cfg(feature = "extra-children")]
20803 {
20804 child_idx += 1;
20805 }
20806 }
20807 b"sortState" => {
20808 f_sort_state =
20809 Some(Box::new(SortState::from_xml(reader, &e, true)?));
20810 #[cfg(feature = "extra-children")]
20811 {
20812 child_idx += 1;
20813 }
20814 }
20815 b"dataConsolidate" => {
20816 f_data_consolidate =
20817 Some(Box::new(CTDataConsolidate::from_xml(reader, &e, true)?));
20818 #[cfg(feature = "extra-children")]
20819 {
20820 child_idx += 1;
20821 }
20822 }
20823 b"customSheetViews" => {
20824 f_custom_sheet_views =
20825 Some(Box::new(CustomSheetViews::from_xml(reader, &e, true)?));
20826 #[cfg(feature = "extra-children")]
20827 {
20828 child_idx += 1;
20829 }
20830 }
20831 b"phoneticPr" => {
20832 f_phonetic_pr =
20833 Some(Box::new(PhoneticProperties::from_xml(reader, &e, true)?));
20834 #[cfg(feature = "extra-children")]
20835 {
20836 child_idx += 1;
20837 }
20838 }
20839 b"conditionalFormatting" => {
20840 f_conditional_formatting
20841 .push(ConditionalFormatting::from_xml(reader, &e, true)?);
20842 #[cfg(feature = "extra-children")]
20843 {
20844 child_idx += 1;
20845 }
20846 }
20847 b"printOptions" => {
20848 f_print_options =
20849 Some(Box::new(PrintOptions::from_xml(reader, &e, true)?));
20850 #[cfg(feature = "extra-children")]
20851 {
20852 child_idx += 1;
20853 }
20854 }
20855 b"pageMargins" => {
20856 f_page_margins =
20857 Some(Box::new(PageMargins::from_xml(reader, &e, true)?));
20858 #[cfg(feature = "extra-children")]
20859 {
20860 child_idx += 1;
20861 }
20862 }
20863 b"pageSetup" => {
20864 f_page_setup =
20865 Some(Box::new(PageSetup::from_xml(reader, &e, true)?));
20866 #[cfg(feature = "extra-children")]
20867 {
20868 child_idx += 1;
20869 }
20870 }
20871 b"headerFooter" => {
20872 f_header_footer =
20873 Some(Box::new(HeaderFooter::from_xml(reader, &e, true)?));
20874 #[cfg(feature = "extra-children")]
20875 {
20876 child_idx += 1;
20877 }
20878 }
20879 b"rowBreaks" => {
20880 f_row_breaks =
20881 Some(Box::new(PageBreaks::from_xml(reader, &e, true)?));
20882 #[cfg(feature = "extra-children")]
20883 {
20884 child_idx += 1;
20885 }
20886 }
20887 b"colBreaks" => {
20888 f_col_breaks =
20889 Some(Box::new(PageBreaks::from_xml(reader, &e, true)?));
20890 #[cfg(feature = "extra-children")]
20891 {
20892 child_idx += 1;
20893 }
20894 }
20895 b"customProperties" => {
20896 f_custom_properties =
20897 Some(Box::new(CTCustomProperties::from_xml(reader, &e, true)?));
20898 #[cfg(feature = "extra-children")]
20899 {
20900 child_idx += 1;
20901 }
20902 }
20903 b"drawing" => {
20904 f_drawing = Some(Box::new(Drawing::from_xml(reader, &e, true)?));
20905 #[cfg(feature = "extra-children")]
20906 {
20907 child_idx += 1;
20908 }
20909 }
20910 b"legacyDrawing" => {
20911 f_legacy_drawing =
20912 Some(Box::new(LegacyDrawing::from_xml(reader, &e, true)?));
20913 #[cfg(feature = "extra-children")]
20914 {
20915 child_idx += 1;
20916 }
20917 }
20918 b"legacyDrawingHF" => {
20919 f_legacy_drawing_h_f =
20920 Some(Box::new(LegacyDrawing::from_xml(reader, &e, true)?));
20921 #[cfg(feature = "extra-children")]
20922 {
20923 child_idx += 1;
20924 }
20925 }
20926 b"drawingHF" => {
20927 f_drawing_h_f = Some(Box::new(DrawingHeaderFooter::from_xml(
20928 reader, &e, true,
20929 )?));
20930 #[cfg(feature = "extra-children")]
20931 {
20932 child_idx += 1;
20933 }
20934 }
20935 b"picture" => {
20936 f_picture = Some(Box::new(SheetBackgroundPicture::from_xml(
20937 reader, &e, true,
20938 )?));
20939 #[cfg(feature = "extra-children")]
20940 {
20941 child_idx += 1;
20942 }
20943 }
20944 b"oleObjects" => {
20945 f_ole_objects =
20946 Some(Box::new(OleObjects::from_xml(reader, &e, true)?));
20947 #[cfg(feature = "extra-children")]
20948 {
20949 child_idx += 1;
20950 }
20951 }
20952 b"extLst" => {
20953 f_extension_list =
20954 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
20955 #[cfg(feature = "extra-children")]
20956 {
20957 child_idx += 1;
20958 }
20959 }
20960 #[cfg(feature = "extra-children")]
20961 _ => {
20962 let elem = RawXmlElement::from_empty(&e);
20964 extra_children.push(PositionedNode::new(
20965 child_idx,
20966 RawXmlNode::Element(elem),
20967 ));
20968 child_idx += 1;
20969 }
20970 #[cfg(not(feature = "extra-children"))]
20971 _ => {}
20972 }
20973 }
20974 Event::End(_) => break,
20975 Event::Eof => break,
20976 _ => {}
20977 }
20978 buf.clear();
20979 }
20980 }
20981
20982 Ok(Self {
20983 sheet_properties: f_sheet_properties,
20984 dimension: f_dimension,
20985 sheet_views: f_sheet_views,
20986 sheet_format: f_sheet_format,
20987 cols: f_cols,
20988 sheet_data: f_sheet_data
20989 .ok_or_else(|| ParseError::MissingAttribute("sheetData".to_string()))?,
20990 sheet_protection: f_sheet_protection,
20991 auto_filter: f_auto_filter,
20992 sort_state: f_sort_state,
20993 data_consolidate: f_data_consolidate,
20994 custom_sheet_views: f_custom_sheet_views,
20995 phonetic_pr: f_phonetic_pr,
20996 conditional_formatting: f_conditional_formatting,
20997 print_options: f_print_options,
20998 page_margins: f_page_margins,
20999 page_setup: f_page_setup,
21000 header_footer: f_header_footer,
21001 row_breaks: f_row_breaks,
21002 col_breaks: f_col_breaks,
21003 custom_properties: f_custom_properties,
21004 drawing: f_drawing,
21005 legacy_drawing: f_legacy_drawing,
21006 legacy_drawing_h_f: f_legacy_drawing_h_f,
21007 drawing_h_f: f_drawing_h_f,
21008 picture: f_picture,
21009 ole_objects: f_ole_objects,
21010 extension_list: f_extension_list,
21011 #[cfg(feature = "extra-children")]
21012 extra_children,
21013 })
21014 }
21015}
21016
21017impl FromXml for CTDialogsheet {
21018 fn from_xml<R: BufRead>(
21019 reader: &mut Reader<R>,
21020 start_tag: &BytesStart,
21021 is_empty: bool,
21022 ) -> Result<Self, ParseError> {
21023 let mut f_sheet_properties = None;
21024 let mut f_sheet_views = None;
21025 let mut f_sheet_format = None;
21026 let mut f_sheet_protection = None;
21027 let mut f_custom_sheet_views = None;
21028 let mut f_print_options = None;
21029 let mut f_page_margins = None;
21030 let mut f_page_setup = None;
21031 let mut f_header_footer = None;
21032 let mut f_drawing = None;
21033 let mut f_legacy_drawing = None;
21034 let mut f_legacy_drawing_h_f = None;
21035 let mut f_drawing_h_f = None;
21036 let mut f_ole_objects = None;
21037 let mut f_controls = None;
21038 let mut f_extension_list = None;
21039 #[cfg(feature = "extra-children")]
21040 let mut extra_children = Vec::new();
21041 #[cfg(feature = "extra-children")]
21042 let mut child_idx: usize = 0;
21043
21044 if !is_empty {
21046 let mut buf = Vec::new();
21047 loop {
21048 match reader.read_event_into(&mut buf)? {
21049 Event::Start(e) => {
21050 match e.local_name().as_ref() {
21051 b"sheetPr" => {
21052 f_sheet_properties =
21053 Some(Box::new(SheetProperties::from_xml(reader, &e, false)?));
21054 #[cfg(feature = "extra-children")]
21055 {
21056 child_idx += 1;
21057 }
21058 }
21059 b"sheetViews" => {
21060 f_sheet_views =
21061 Some(Box::new(SheetViews::from_xml(reader, &e, false)?));
21062 #[cfg(feature = "extra-children")]
21063 {
21064 child_idx += 1;
21065 }
21066 }
21067 b"sheetFormatPr" => {
21068 f_sheet_format =
21069 Some(Box::new(SheetFormat::from_xml(reader, &e, false)?));
21070 #[cfg(feature = "extra-children")]
21071 {
21072 child_idx += 1;
21073 }
21074 }
21075 b"sheetProtection" => {
21076 f_sheet_protection =
21077 Some(Box::new(SheetProtection::from_xml(reader, &e, false)?));
21078 #[cfg(feature = "extra-children")]
21079 {
21080 child_idx += 1;
21081 }
21082 }
21083 b"customSheetViews" => {
21084 f_custom_sheet_views =
21085 Some(Box::new(CustomSheetViews::from_xml(reader, &e, false)?));
21086 #[cfg(feature = "extra-children")]
21087 {
21088 child_idx += 1;
21089 }
21090 }
21091 b"printOptions" => {
21092 f_print_options =
21093 Some(Box::new(PrintOptions::from_xml(reader, &e, false)?));
21094 #[cfg(feature = "extra-children")]
21095 {
21096 child_idx += 1;
21097 }
21098 }
21099 b"pageMargins" => {
21100 f_page_margins =
21101 Some(Box::new(PageMargins::from_xml(reader, &e, false)?));
21102 #[cfg(feature = "extra-children")]
21103 {
21104 child_idx += 1;
21105 }
21106 }
21107 b"pageSetup" => {
21108 f_page_setup =
21109 Some(Box::new(PageSetup::from_xml(reader, &e, false)?));
21110 #[cfg(feature = "extra-children")]
21111 {
21112 child_idx += 1;
21113 }
21114 }
21115 b"headerFooter" => {
21116 f_header_footer =
21117 Some(Box::new(HeaderFooter::from_xml(reader, &e, false)?));
21118 #[cfg(feature = "extra-children")]
21119 {
21120 child_idx += 1;
21121 }
21122 }
21123 b"drawing" => {
21124 f_drawing = Some(Box::new(Drawing::from_xml(reader, &e, false)?));
21125 #[cfg(feature = "extra-children")]
21126 {
21127 child_idx += 1;
21128 }
21129 }
21130 b"legacyDrawing" => {
21131 f_legacy_drawing =
21132 Some(Box::new(LegacyDrawing::from_xml(reader, &e, false)?));
21133 #[cfg(feature = "extra-children")]
21134 {
21135 child_idx += 1;
21136 }
21137 }
21138 b"legacyDrawingHF" => {
21139 f_legacy_drawing_h_f =
21140 Some(Box::new(LegacyDrawing::from_xml(reader, &e, false)?));
21141 #[cfg(feature = "extra-children")]
21142 {
21143 child_idx += 1;
21144 }
21145 }
21146 b"drawingHF" => {
21147 f_drawing_h_f = Some(Box::new(DrawingHeaderFooter::from_xml(
21148 reader, &e, false,
21149 )?));
21150 #[cfg(feature = "extra-children")]
21151 {
21152 child_idx += 1;
21153 }
21154 }
21155 b"oleObjects" => {
21156 f_ole_objects =
21157 Some(Box::new(OleObjects::from_xml(reader, &e, false)?));
21158 #[cfg(feature = "extra-children")]
21159 {
21160 child_idx += 1;
21161 }
21162 }
21163 b"controls" => {
21164 f_controls = Some(Box::new(Controls::from_xml(reader, &e, false)?));
21165 #[cfg(feature = "extra-children")]
21166 {
21167 child_idx += 1;
21168 }
21169 }
21170 b"extLst" => {
21171 f_extension_list =
21172 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
21173 #[cfg(feature = "extra-children")]
21174 {
21175 child_idx += 1;
21176 }
21177 }
21178 #[cfg(feature = "extra-children")]
21179 _ => {
21180 let elem = RawXmlElement::from_reader(reader, &e)?;
21182 extra_children.push(PositionedNode::new(
21183 child_idx,
21184 RawXmlNode::Element(elem),
21185 ));
21186 child_idx += 1;
21187 }
21188 #[cfg(not(feature = "extra-children"))]
21189 _ => {
21190 skip_element(reader)?;
21192 }
21193 }
21194 }
21195 Event::Empty(e) => {
21196 match e.local_name().as_ref() {
21197 b"sheetPr" => {
21198 f_sheet_properties =
21199 Some(Box::new(SheetProperties::from_xml(reader, &e, true)?));
21200 #[cfg(feature = "extra-children")]
21201 {
21202 child_idx += 1;
21203 }
21204 }
21205 b"sheetViews" => {
21206 f_sheet_views =
21207 Some(Box::new(SheetViews::from_xml(reader, &e, true)?));
21208 #[cfg(feature = "extra-children")]
21209 {
21210 child_idx += 1;
21211 }
21212 }
21213 b"sheetFormatPr" => {
21214 f_sheet_format =
21215 Some(Box::new(SheetFormat::from_xml(reader, &e, true)?));
21216 #[cfg(feature = "extra-children")]
21217 {
21218 child_idx += 1;
21219 }
21220 }
21221 b"sheetProtection" => {
21222 f_sheet_protection =
21223 Some(Box::new(SheetProtection::from_xml(reader, &e, true)?));
21224 #[cfg(feature = "extra-children")]
21225 {
21226 child_idx += 1;
21227 }
21228 }
21229 b"customSheetViews" => {
21230 f_custom_sheet_views =
21231 Some(Box::new(CustomSheetViews::from_xml(reader, &e, true)?));
21232 #[cfg(feature = "extra-children")]
21233 {
21234 child_idx += 1;
21235 }
21236 }
21237 b"printOptions" => {
21238 f_print_options =
21239 Some(Box::new(PrintOptions::from_xml(reader, &e, true)?));
21240 #[cfg(feature = "extra-children")]
21241 {
21242 child_idx += 1;
21243 }
21244 }
21245 b"pageMargins" => {
21246 f_page_margins =
21247 Some(Box::new(PageMargins::from_xml(reader, &e, true)?));
21248 #[cfg(feature = "extra-children")]
21249 {
21250 child_idx += 1;
21251 }
21252 }
21253 b"pageSetup" => {
21254 f_page_setup =
21255 Some(Box::new(PageSetup::from_xml(reader, &e, true)?));
21256 #[cfg(feature = "extra-children")]
21257 {
21258 child_idx += 1;
21259 }
21260 }
21261 b"headerFooter" => {
21262 f_header_footer =
21263 Some(Box::new(HeaderFooter::from_xml(reader, &e, true)?));
21264 #[cfg(feature = "extra-children")]
21265 {
21266 child_idx += 1;
21267 }
21268 }
21269 b"drawing" => {
21270 f_drawing = Some(Box::new(Drawing::from_xml(reader, &e, true)?));
21271 #[cfg(feature = "extra-children")]
21272 {
21273 child_idx += 1;
21274 }
21275 }
21276 b"legacyDrawing" => {
21277 f_legacy_drawing =
21278 Some(Box::new(LegacyDrawing::from_xml(reader, &e, true)?));
21279 #[cfg(feature = "extra-children")]
21280 {
21281 child_idx += 1;
21282 }
21283 }
21284 b"legacyDrawingHF" => {
21285 f_legacy_drawing_h_f =
21286 Some(Box::new(LegacyDrawing::from_xml(reader, &e, true)?));
21287 #[cfg(feature = "extra-children")]
21288 {
21289 child_idx += 1;
21290 }
21291 }
21292 b"drawingHF" => {
21293 f_drawing_h_f = Some(Box::new(DrawingHeaderFooter::from_xml(
21294 reader, &e, true,
21295 )?));
21296 #[cfg(feature = "extra-children")]
21297 {
21298 child_idx += 1;
21299 }
21300 }
21301 b"oleObjects" => {
21302 f_ole_objects =
21303 Some(Box::new(OleObjects::from_xml(reader, &e, true)?));
21304 #[cfg(feature = "extra-children")]
21305 {
21306 child_idx += 1;
21307 }
21308 }
21309 b"controls" => {
21310 f_controls = Some(Box::new(Controls::from_xml(reader, &e, true)?));
21311 #[cfg(feature = "extra-children")]
21312 {
21313 child_idx += 1;
21314 }
21315 }
21316 b"extLst" => {
21317 f_extension_list =
21318 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
21319 #[cfg(feature = "extra-children")]
21320 {
21321 child_idx += 1;
21322 }
21323 }
21324 #[cfg(feature = "extra-children")]
21325 _ => {
21326 let elem = RawXmlElement::from_empty(&e);
21328 extra_children.push(PositionedNode::new(
21329 child_idx,
21330 RawXmlNode::Element(elem),
21331 ));
21332 child_idx += 1;
21333 }
21334 #[cfg(not(feature = "extra-children"))]
21335 _ => {}
21336 }
21337 }
21338 Event::End(_) => break,
21339 Event::Eof => break,
21340 _ => {}
21341 }
21342 buf.clear();
21343 }
21344 }
21345
21346 Ok(Self {
21347 sheet_properties: f_sheet_properties,
21348 sheet_views: f_sheet_views,
21349 sheet_format: f_sheet_format,
21350 sheet_protection: f_sheet_protection,
21351 custom_sheet_views: f_custom_sheet_views,
21352 print_options: f_print_options,
21353 page_margins: f_page_margins,
21354 page_setup: f_page_setup,
21355 header_footer: f_header_footer,
21356 drawing: f_drawing,
21357 legacy_drawing: f_legacy_drawing,
21358 legacy_drawing_h_f: f_legacy_drawing_h_f,
21359 drawing_h_f: f_drawing_h_f,
21360 ole_objects: f_ole_objects,
21361 controls: f_controls,
21362 extension_list: f_extension_list,
21363 #[cfg(feature = "extra-children")]
21364 extra_children,
21365 })
21366 }
21367}
21368
21369impl FromXml for Worksheet {
21370 fn from_xml<R: BufRead>(
21371 reader: &mut Reader<R>,
21372 start_tag: &BytesStart,
21373 is_empty: bool,
21374 ) -> Result<Self, ParseError> {
21375 #[cfg(feature = "sml-styling")]
21376 let mut f_sheet_properties = None;
21377 let mut f_dimension = None;
21378 let mut f_sheet_views = None;
21379 #[cfg(feature = "sml-styling")]
21380 let mut f_sheet_format = None;
21381 #[cfg(feature = "sml-styling")]
21382 let mut f_cols = Vec::new();
21383 let mut f_sheet_data: Option<Box<SheetData>> = None;
21384 #[cfg(feature = "sml-formulas")]
21385 let mut f_sheet_calc_pr = None;
21386 #[cfg(feature = "sml-protection")]
21387 let mut f_sheet_protection = None;
21388 #[cfg(feature = "sml-protection")]
21389 let mut f_protected_ranges = None;
21390 #[cfg(feature = "sml-formulas-advanced")]
21391 let mut f_scenarios = None;
21392 #[cfg(feature = "sml-filtering")]
21393 let mut f_auto_filter = None;
21394 #[cfg(feature = "sml-filtering")]
21395 let mut f_sort_state = None;
21396 #[cfg(feature = "sml-formulas-advanced")]
21397 let mut f_data_consolidate = None;
21398 #[cfg(feature = "sml-structure")]
21399 let mut f_custom_sheet_views = None;
21400 let mut f_merged_cells = None;
21401 #[cfg(feature = "sml-i18n")]
21402 let mut f_phonetic_pr = None;
21403 #[cfg(feature = "sml-styling")]
21404 let mut f_conditional_formatting = Vec::new();
21405 #[cfg(feature = "sml-validation")]
21406 let mut f_data_validations = None;
21407 #[cfg(feature = "sml-hyperlinks")]
21408 let mut f_hyperlinks = None;
21409 #[cfg(feature = "sml-layout")]
21410 let mut f_print_options = None;
21411 #[cfg(feature = "sml-layout")]
21412 let mut f_page_margins = None;
21413 #[cfg(feature = "sml-layout")]
21414 let mut f_page_setup = None;
21415 #[cfg(feature = "sml-layout")]
21416 let mut f_header_footer = None;
21417 #[cfg(feature = "sml-layout")]
21418 let mut f_row_breaks = None;
21419 #[cfg(feature = "sml-layout")]
21420 let mut f_col_breaks = None;
21421 #[cfg(feature = "sml-metadata")]
21422 let mut f_custom_properties = None;
21423 #[cfg(feature = "sml-formulas-advanced")]
21424 let mut f_cell_watches = None;
21425 #[cfg(feature = "sml-validation")]
21426 let mut f_ignored_errors = None;
21427 #[cfg(feature = "sml-metadata")]
21428 let mut f_smart_tags = None;
21429 #[cfg(feature = "sml-drawings")]
21430 let mut f_drawing = None;
21431 #[cfg(feature = "sml-comments")]
21432 let mut f_legacy_drawing = None;
21433 #[cfg(feature = "sml-layout")]
21434 let mut f_legacy_drawing_h_f = None;
21435 #[cfg(feature = "sml-drawings")]
21436 let mut f_drawing_h_f = None;
21437 #[cfg(feature = "sml-drawings")]
21438 let mut f_picture = None;
21439 #[cfg(feature = "sml-external")]
21440 let mut f_ole_objects = None;
21441 #[cfg(feature = "sml-external")]
21442 let mut f_controls = None;
21443 #[cfg(feature = "sml-external")]
21444 let mut f_web_publish_items = None;
21445 #[cfg(feature = "sml-tables")]
21446 let mut f_table_parts = None;
21447 #[cfg(feature = "sml-extensions")]
21448 let mut f_extension_list = None;
21449 #[cfg(feature = "extra-children")]
21450 let mut extra_children = Vec::new();
21451 #[cfg(feature = "extra-children")]
21452 let mut child_idx: usize = 0;
21453
21454 if !is_empty {
21456 let mut buf = Vec::new();
21457 loop {
21458 match reader.read_event_into(&mut buf)? {
21459 Event::Start(e) => {
21460 match e.local_name().as_ref() {
21461 #[cfg(feature = "sml-styling")]
21462 b"sheetPr" => {
21463 f_sheet_properties =
21464 Some(Box::new(SheetProperties::from_xml(reader, &e, false)?));
21465 #[cfg(feature = "extra-children")]
21466 {
21467 child_idx += 1;
21468 }
21469 }
21470 b"dimension" => {
21471 f_dimension =
21472 Some(Box::new(SheetDimension::from_xml(reader, &e, false)?));
21473 #[cfg(feature = "extra-children")]
21474 {
21475 child_idx += 1;
21476 }
21477 }
21478 b"sheetViews" => {
21479 f_sheet_views =
21480 Some(Box::new(SheetViews::from_xml(reader, &e, false)?));
21481 #[cfg(feature = "extra-children")]
21482 {
21483 child_idx += 1;
21484 }
21485 }
21486 #[cfg(feature = "sml-styling")]
21487 b"sheetFormatPr" => {
21488 f_sheet_format =
21489 Some(Box::new(SheetFormat::from_xml(reader, &e, false)?));
21490 #[cfg(feature = "extra-children")]
21491 {
21492 child_idx += 1;
21493 }
21494 }
21495 #[cfg(feature = "sml-styling")]
21496 b"cols" => {
21497 f_cols.push(Columns::from_xml(reader, &e, false)?);
21498 #[cfg(feature = "extra-children")]
21499 {
21500 child_idx += 1;
21501 }
21502 }
21503 b"sheetData" => {
21504 f_sheet_data =
21505 Some(Box::new(SheetData::from_xml(reader, &e, false)?));
21506 #[cfg(feature = "extra-children")]
21507 {
21508 child_idx += 1;
21509 }
21510 }
21511 #[cfg(feature = "sml-formulas")]
21512 b"sheetCalcPr" => {
21513 f_sheet_calc_pr = Some(Box::new(SheetCalcProperties::from_xml(
21514 reader, &e, false,
21515 )?));
21516 #[cfg(feature = "extra-children")]
21517 {
21518 child_idx += 1;
21519 }
21520 }
21521 #[cfg(feature = "sml-protection")]
21522 b"sheetProtection" => {
21523 f_sheet_protection =
21524 Some(Box::new(SheetProtection::from_xml(reader, &e, false)?));
21525 #[cfg(feature = "extra-children")]
21526 {
21527 child_idx += 1;
21528 }
21529 }
21530 #[cfg(feature = "sml-protection")]
21531 b"protectedRanges" => {
21532 f_protected_ranges =
21533 Some(Box::new(ProtectedRanges::from_xml(reader, &e, false)?));
21534 #[cfg(feature = "extra-children")]
21535 {
21536 child_idx += 1;
21537 }
21538 }
21539 #[cfg(feature = "sml-formulas-advanced")]
21540 b"scenarios" => {
21541 f_scenarios =
21542 Some(Box::new(Scenarios::from_xml(reader, &e, false)?));
21543 #[cfg(feature = "extra-children")]
21544 {
21545 child_idx += 1;
21546 }
21547 }
21548 #[cfg(feature = "sml-filtering")]
21549 b"autoFilter" => {
21550 f_auto_filter =
21551 Some(Box::new(AutoFilter::from_xml(reader, &e, false)?));
21552 #[cfg(feature = "extra-children")]
21553 {
21554 child_idx += 1;
21555 }
21556 }
21557 #[cfg(feature = "sml-filtering")]
21558 b"sortState" => {
21559 f_sort_state =
21560 Some(Box::new(SortState::from_xml(reader, &e, false)?));
21561 #[cfg(feature = "extra-children")]
21562 {
21563 child_idx += 1;
21564 }
21565 }
21566 #[cfg(feature = "sml-formulas-advanced")]
21567 b"dataConsolidate" => {
21568 f_data_consolidate =
21569 Some(Box::new(CTDataConsolidate::from_xml(reader, &e, false)?));
21570 #[cfg(feature = "extra-children")]
21571 {
21572 child_idx += 1;
21573 }
21574 }
21575 #[cfg(feature = "sml-structure")]
21576 b"customSheetViews" => {
21577 f_custom_sheet_views =
21578 Some(Box::new(CustomSheetViews::from_xml(reader, &e, false)?));
21579 #[cfg(feature = "extra-children")]
21580 {
21581 child_idx += 1;
21582 }
21583 }
21584 b"mergeCells" => {
21585 f_merged_cells =
21586 Some(Box::new(MergedCells::from_xml(reader, &e, false)?));
21587 #[cfg(feature = "extra-children")]
21588 {
21589 child_idx += 1;
21590 }
21591 }
21592 #[cfg(feature = "sml-i18n")]
21593 b"phoneticPr" => {
21594 f_phonetic_pr = Some(Box::new(PhoneticProperties::from_xml(
21595 reader, &e, false,
21596 )?));
21597 #[cfg(feature = "extra-children")]
21598 {
21599 child_idx += 1;
21600 }
21601 }
21602 #[cfg(feature = "sml-styling")]
21603 b"conditionalFormatting" => {
21604 f_conditional_formatting
21605 .push(ConditionalFormatting::from_xml(reader, &e, false)?);
21606 #[cfg(feature = "extra-children")]
21607 {
21608 child_idx += 1;
21609 }
21610 }
21611 #[cfg(feature = "sml-validation")]
21612 b"dataValidations" => {
21613 f_data_validations =
21614 Some(Box::new(DataValidations::from_xml(reader, &e, false)?));
21615 #[cfg(feature = "extra-children")]
21616 {
21617 child_idx += 1;
21618 }
21619 }
21620 #[cfg(feature = "sml-hyperlinks")]
21621 b"hyperlinks" => {
21622 f_hyperlinks =
21623 Some(Box::new(Hyperlinks::from_xml(reader, &e, false)?));
21624 #[cfg(feature = "extra-children")]
21625 {
21626 child_idx += 1;
21627 }
21628 }
21629 #[cfg(feature = "sml-layout")]
21630 b"printOptions" => {
21631 f_print_options =
21632 Some(Box::new(PrintOptions::from_xml(reader, &e, false)?));
21633 #[cfg(feature = "extra-children")]
21634 {
21635 child_idx += 1;
21636 }
21637 }
21638 #[cfg(feature = "sml-layout")]
21639 b"pageMargins" => {
21640 f_page_margins =
21641 Some(Box::new(PageMargins::from_xml(reader, &e, false)?));
21642 #[cfg(feature = "extra-children")]
21643 {
21644 child_idx += 1;
21645 }
21646 }
21647 #[cfg(feature = "sml-layout")]
21648 b"pageSetup" => {
21649 f_page_setup =
21650 Some(Box::new(PageSetup::from_xml(reader, &e, false)?));
21651 #[cfg(feature = "extra-children")]
21652 {
21653 child_idx += 1;
21654 }
21655 }
21656 #[cfg(feature = "sml-layout")]
21657 b"headerFooter" => {
21658 f_header_footer =
21659 Some(Box::new(HeaderFooter::from_xml(reader, &e, false)?));
21660 #[cfg(feature = "extra-children")]
21661 {
21662 child_idx += 1;
21663 }
21664 }
21665 #[cfg(feature = "sml-layout")]
21666 b"rowBreaks" => {
21667 f_row_breaks =
21668 Some(Box::new(PageBreaks::from_xml(reader, &e, false)?));
21669 #[cfg(feature = "extra-children")]
21670 {
21671 child_idx += 1;
21672 }
21673 }
21674 #[cfg(feature = "sml-layout")]
21675 b"colBreaks" => {
21676 f_col_breaks =
21677 Some(Box::new(PageBreaks::from_xml(reader, &e, false)?));
21678 #[cfg(feature = "extra-children")]
21679 {
21680 child_idx += 1;
21681 }
21682 }
21683 #[cfg(feature = "sml-metadata")]
21684 b"customProperties" => {
21685 f_custom_properties = Some(Box::new(CTCustomProperties::from_xml(
21686 reader, &e, false,
21687 )?));
21688 #[cfg(feature = "extra-children")]
21689 {
21690 child_idx += 1;
21691 }
21692 }
21693 #[cfg(feature = "sml-formulas-advanced")]
21694 b"cellWatches" => {
21695 f_cell_watches =
21696 Some(Box::new(CellWatches::from_xml(reader, &e, false)?));
21697 #[cfg(feature = "extra-children")]
21698 {
21699 child_idx += 1;
21700 }
21701 }
21702 #[cfg(feature = "sml-validation")]
21703 b"ignoredErrors" => {
21704 f_ignored_errors =
21705 Some(Box::new(IgnoredErrors::from_xml(reader, &e, false)?));
21706 #[cfg(feature = "extra-children")]
21707 {
21708 child_idx += 1;
21709 }
21710 }
21711 #[cfg(feature = "sml-metadata")]
21712 b"smartTags" => {
21713 f_smart_tags =
21714 Some(Box::new(SmartTags::from_xml(reader, &e, false)?));
21715 #[cfg(feature = "extra-children")]
21716 {
21717 child_idx += 1;
21718 }
21719 }
21720 #[cfg(feature = "sml-drawings")]
21721 b"drawing" => {
21722 f_drawing = Some(Box::new(Drawing::from_xml(reader, &e, false)?));
21723 #[cfg(feature = "extra-children")]
21724 {
21725 child_idx += 1;
21726 }
21727 }
21728 #[cfg(feature = "sml-comments")]
21729 b"legacyDrawing" => {
21730 f_legacy_drawing =
21731 Some(Box::new(LegacyDrawing::from_xml(reader, &e, false)?));
21732 #[cfg(feature = "extra-children")]
21733 {
21734 child_idx += 1;
21735 }
21736 }
21737 #[cfg(feature = "sml-layout")]
21738 b"legacyDrawingHF" => {
21739 f_legacy_drawing_h_f =
21740 Some(Box::new(LegacyDrawing::from_xml(reader, &e, false)?));
21741 #[cfg(feature = "extra-children")]
21742 {
21743 child_idx += 1;
21744 }
21745 }
21746 #[cfg(feature = "sml-drawings")]
21747 b"drawingHF" => {
21748 f_drawing_h_f = Some(Box::new(DrawingHeaderFooter::from_xml(
21749 reader, &e, false,
21750 )?));
21751 #[cfg(feature = "extra-children")]
21752 {
21753 child_idx += 1;
21754 }
21755 }
21756 #[cfg(feature = "sml-drawings")]
21757 b"picture" => {
21758 f_picture = Some(Box::new(SheetBackgroundPicture::from_xml(
21759 reader, &e, false,
21760 )?));
21761 #[cfg(feature = "extra-children")]
21762 {
21763 child_idx += 1;
21764 }
21765 }
21766 #[cfg(feature = "sml-external")]
21767 b"oleObjects" => {
21768 f_ole_objects =
21769 Some(Box::new(OleObjects::from_xml(reader, &e, false)?));
21770 #[cfg(feature = "extra-children")]
21771 {
21772 child_idx += 1;
21773 }
21774 }
21775 #[cfg(feature = "sml-external")]
21776 b"controls" => {
21777 f_controls = Some(Box::new(Controls::from_xml(reader, &e, false)?));
21778 #[cfg(feature = "extra-children")]
21779 {
21780 child_idx += 1;
21781 }
21782 }
21783 #[cfg(feature = "sml-external")]
21784 b"webPublishItems" => {
21785 f_web_publish_items =
21786 Some(Box::new(WebPublishItems::from_xml(reader, &e, false)?));
21787 #[cfg(feature = "extra-children")]
21788 {
21789 child_idx += 1;
21790 }
21791 }
21792 #[cfg(feature = "sml-tables")]
21793 b"tableParts" => {
21794 f_table_parts =
21795 Some(Box::new(TableParts::from_xml(reader, &e, false)?));
21796 #[cfg(feature = "extra-children")]
21797 {
21798 child_idx += 1;
21799 }
21800 }
21801 #[cfg(feature = "sml-extensions")]
21802 b"extLst" => {
21803 f_extension_list =
21804 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
21805 #[cfg(feature = "extra-children")]
21806 {
21807 child_idx += 1;
21808 }
21809 }
21810 #[cfg(feature = "extra-children")]
21811 _ => {
21812 let elem = RawXmlElement::from_reader(reader, &e)?;
21814 extra_children.push(PositionedNode::new(
21815 child_idx,
21816 RawXmlNode::Element(elem),
21817 ));
21818 child_idx += 1;
21819 }
21820 #[cfg(not(feature = "extra-children"))]
21821 _ => {
21822 skip_element(reader)?;
21824 }
21825 }
21826 }
21827 Event::Empty(e) => {
21828 match e.local_name().as_ref() {
21829 #[cfg(feature = "sml-styling")]
21830 b"sheetPr" => {
21831 f_sheet_properties =
21832 Some(Box::new(SheetProperties::from_xml(reader, &e, true)?));
21833 #[cfg(feature = "extra-children")]
21834 {
21835 child_idx += 1;
21836 }
21837 }
21838 b"dimension" => {
21839 f_dimension =
21840 Some(Box::new(SheetDimension::from_xml(reader, &e, true)?));
21841 #[cfg(feature = "extra-children")]
21842 {
21843 child_idx += 1;
21844 }
21845 }
21846 b"sheetViews" => {
21847 f_sheet_views =
21848 Some(Box::new(SheetViews::from_xml(reader, &e, true)?));
21849 #[cfg(feature = "extra-children")]
21850 {
21851 child_idx += 1;
21852 }
21853 }
21854 #[cfg(feature = "sml-styling")]
21855 b"sheetFormatPr" => {
21856 f_sheet_format =
21857 Some(Box::new(SheetFormat::from_xml(reader, &e, true)?));
21858 #[cfg(feature = "extra-children")]
21859 {
21860 child_idx += 1;
21861 }
21862 }
21863 #[cfg(feature = "sml-styling")]
21864 b"cols" => {
21865 f_cols.push(Columns::from_xml(reader, &e, true)?);
21866 #[cfg(feature = "extra-children")]
21867 {
21868 child_idx += 1;
21869 }
21870 }
21871 b"sheetData" => {
21872 f_sheet_data =
21873 Some(Box::new(SheetData::from_xml(reader, &e, true)?));
21874 #[cfg(feature = "extra-children")]
21875 {
21876 child_idx += 1;
21877 }
21878 }
21879 #[cfg(feature = "sml-formulas")]
21880 b"sheetCalcPr" => {
21881 f_sheet_calc_pr = Some(Box::new(SheetCalcProperties::from_xml(
21882 reader, &e, true,
21883 )?));
21884 #[cfg(feature = "extra-children")]
21885 {
21886 child_idx += 1;
21887 }
21888 }
21889 #[cfg(feature = "sml-protection")]
21890 b"sheetProtection" => {
21891 f_sheet_protection =
21892 Some(Box::new(SheetProtection::from_xml(reader, &e, true)?));
21893 #[cfg(feature = "extra-children")]
21894 {
21895 child_idx += 1;
21896 }
21897 }
21898 #[cfg(feature = "sml-protection")]
21899 b"protectedRanges" => {
21900 f_protected_ranges =
21901 Some(Box::new(ProtectedRanges::from_xml(reader, &e, true)?));
21902 #[cfg(feature = "extra-children")]
21903 {
21904 child_idx += 1;
21905 }
21906 }
21907 #[cfg(feature = "sml-formulas-advanced")]
21908 b"scenarios" => {
21909 f_scenarios =
21910 Some(Box::new(Scenarios::from_xml(reader, &e, true)?));
21911 #[cfg(feature = "extra-children")]
21912 {
21913 child_idx += 1;
21914 }
21915 }
21916 #[cfg(feature = "sml-filtering")]
21917 b"autoFilter" => {
21918 f_auto_filter =
21919 Some(Box::new(AutoFilter::from_xml(reader, &e, true)?));
21920 #[cfg(feature = "extra-children")]
21921 {
21922 child_idx += 1;
21923 }
21924 }
21925 #[cfg(feature = "sml-filtering")]
21926 b"sortState" => {
21927 f_sort_state =
21928 Some(Box::new(SortState::from_xml(reader, &e, true)?));
21929 #[cfg(feature = "extra-children")]
21930 {
21931 child_idx += 1;
21932 }
21933 }
21934 #[cfg(feature = "sml-formulas-advanced")]
21935 b"dataConsolidate" => {
21936 f_data_consolidate =
21937 Some(Box::new(CTDataConsolidate::from_xml(reader, &e, true)?));
21938 #[cfg(feature = "extra-children")]
21939 {
21940 child_idx += 1;
21941 }
21942 }
21943 #[cfg(feature = "sml-structure")]
21944 b"customSheetViews" => {
21945 f_custom_sheet_views =
21946 Some(Box::new(CustomSheetViews::from_xml(reader, &e, true)?));
21947 #[cfg(feature = "extra-children")]
21948 {
21949 child_idx += 1;
21950 }
21951 }
21952 b"mergeCells" => {
21953 f_merged_cells =
21954 Some(Box::new(MergedCells::from_xml(reader, &e, true)?));
21955 #[cfg(feature = "extra-children")]
21956 {
21957 child_idx += 1;
21958 }
21959 }
21960 #[cfg(feature = "sml-i18n")]
21961 b"phoneticPr" => {
21962 f_phonetic_pr =
21963 Some(Box::new(PhoneticProperties::from_xml(reader, &e, true)?));
21964 #[cfg(feature = "extra-children")]
21965 {
21966 child_idx += 1;
21967 }
21968 }
21969 #[cfg(feature = "sml-styling")]
21970 b"conditionalFormatting" => {
21971 f_conditional_formatting
21972 .push(ConditionalFormatting::from_xml(reader, &e, true)?);
21973 #[cfg(feature = "extra-children")]
21974 {
21975 child_idx += 1;
21976 }
21977 }
21978 #[cfg(feature = "sml-validation")]
21979 b"dataValidations" => {
21980 f_data_validations =
21981 Some(Box::new(DataValidations::from_xml(reader, &e, true)?));
21982 #[cfg(feature = "extra-children")]
21983 {
21984 child_idx += 1;
21985 }
21986 }
21987 #[cfg(feature = "sml-hyperlinks")]
21988 b"hyperlinks" => {
21989 f_hyperlinks =
21990 Some(Box::new(Hyperlinks::from_xml(reader, &e, true)?));
21991 #[cfg(feature = "extra-children")]
21992 {
21993 child_idx += 1;
21994 }
21995 }
21996 #[cfg(feature = "sml-layout")]
21997 b"printOptions" => {
21998 f_print_options =
21999 Some(Box::new(PrintOptions::from_xml(reader, &e, true)?));
22000 #[cfg(feature = "extra-children")]
22001 {
22002 child_idx += 1;
22003 }
22004 }
22005 #[cfg(feature = "sml-layout")]
22006 b"pageMargins" => {
22007 f_page_margins =
22008 Some(Box::new(PageMargins::from_xml(reader, &e, true)?));
22009 #[cfg(feature = "extra-children")]
22010 {
22011 child_idx += 1;
22012 }
22013 }
22014 #[cfg(feature = "sml-layout")]
22015 b"pageSetup" => {
22016 f_page_setup =
22017 Some(Box::new(PageSetup::from_xml(reader, &e, true)?));
22018 #[cfg(feature = "extra-children")]
22019 {
22020 child_idx += 1;
22021 }
22022 }
22023 #[cfg(feature = "sml-layout")]
22024 b"headerFooter" => {
22025 f_header_footer =
22026 Some(Box::new(HeaderFooter::from_xml(reader, &e, true)?));
22027 #[cfg(feature = "extra-children")]
22028 {
22029 child_idx += 1;
22030 }
22031 }
22032 #[cfg(feature = "sml-layout")]
22033 b"rowBreaks" => {
22034 f_row_breaks =
22035 Some(Box::new(PageBreaks::from_xml(reader, &e, true)?));
22036 #[cfg(feature = "extra-children")]
22037 {
22038 child_idx += 1;
22039 }
22040 }
22041 #[cfg(feature = "sml-layout")]
22042 b"colBreaks" => {
22043 f_col_breaks =
22044 Some(Box::new(PageBreaks::from_xml(reader, &e, true)?));
22045 #[cfg(feature = "extra-children")]
22046 {
22047 child_idx += 1;
22048 }
22049 }
22050 #[cfg(feature = "sml-metadata")]
22051 b"customProperties" => {
22052 f_custom_properties =
22053 Some(Box::new(CTCustomProperties::from_xml(reader, &e, true)?));
22054 #[cfg(feature = "extra-children")]
22055 {
22056 child_idx += 1;
22057 }
22058 }
22059 #[cfg(feature = "sml-formulas-advanced")]
22060 b"cellWatches" => {
22061 f_cell_watches =
22062 Some(Box::new(CellWatches::from_xml(reader, &e, true)?));
22063 #[cfg(feature = "extra-children")]
22064 {
22065 child_idx += 1;
22066 }
22067 }
22068 #[cfg(feature = "sml-validation")]
22069 b"ignoredErrors" => {
22070 f_ignored_errors =
22071 Some(Box::new(IgnoredErrors::from_xml(reader, &e, true)?));
22072 #[cfg(feature = "extra-children")]
22073 {
22074 child_idx += 1;
22075 }
22076 }
22077 #[cfg(feature = "sml-metadata")]
22078 b"smartTags" => {
22079 f_smart_tags =
22080 Some(Box::new(SmartTags::from_xml(reader, &e, true)?));
22081 #[cfg(feature = "extra-children")]
22082 {
22083 child_idx += 1;
22084 }
22085 }
22086 #[cfg(feature = "sml-drawings")]
22087 b"drawing" => {
22088 f_drawing = Some(Box::new(Drawing::from_xml(reader, &e, true)?));
22089 #[cfg(feature = "extra-children")]
22090 {
22091 child_idx += 1;
22092 }
22093 }
22094 #[cfg(feature = "sml-comments")]
22095 b"legacyDrawing" => {
22096 f_legacy_drawing =
22097 Some(Box::new(LegacyDrawing::from_xml(reader, &e, true)?));
22098 #[cfg(feature = "extra-children")]
22099 {
22100 child_idx += 1;
22101 }
22102 }
22103 #[cfg(feature = "sml-layout")]
22104 b"legacyDrawingHF" => {
22105 f_legacy_drawing_h_f =
22106 Some(Box::new(LegacyDrawing::from_xml(reader, &e, true)?));
22107 #[cfg(feature = "extra-children")]
22108 {
22109 child_idx += 1;
22110 }
22111 }
22112 #[cfg(feature = "sml-drawings")]
22113 b"drawingHF" => {
22114 f_drawing_h_f = Some(Box::new(DrawingHeaderFooter::from_xml(
22115 reader, &e, true,
22116 )?));
22117 #[cfg(feature = "extra-children")]
22118 {
22119 child_idx += 1;
22120 }
22121 }
22122 #[cfg(feature = "sml-drawings")]
22123 b"picture" => {
22124 f_picture = Some(Box::new(SheetBackgroundPicture::from_xml(
22125 reader, &e, true,
22126 )?));
22127 #[cfg(feature = "extra-children")]
22128 {
22129 child_idx += 1;
22130 }
22131 }
22132 #[cfg(feature = "sml-external")]
22133 b"oleObjects" => {
22134 f_ole_objects =
22135 Some(Box::new(OleObjects::from_xml(reader, &e, true)?));
22136 #[cfg(feature = "extra-children")]
22137 {
22138 child_idx += 1;
22139 }
22140 }
22141 #[cfg(feature = "sml-external")]
22142 b"controls" => {
22143 f_controls = Some(Box::new(Controls::from_xml(reader, &e, true)?));
22144 #[cfg(feature = "extra-children")]
22145 {
22146 child_idx += 1;
22147 }
22148 }
22149 #[cfg(feature = "sml-external")]
22150 b"webPublishItems" => {
22151 f_web_publish_items =
22152 Some(Box::new(WebPublishItems::from_xml(reader, &e, true)?));
22153 #[cfg(feature = "extra-children")]
22154 {
22155 child_idx += 1;
22156 }
22157 }
22158 #[cfg(feature = "sml-tables")]
22159 b"tableParts" => {
22160 f_table_parts =
22161 Some(Box::new(TableParts::from_xml(reader, &e, true)?));
22162 #[cfg(feature = "extra-children")]
22163 {
22164 child_idx += 1;
22165 }
22166 }
22167 #[cfg(feature = "sml-extensions")]
22168 b"extLst" => {
22169 f_extension_list =
22170 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
22171 #[cfg(feature = "extra-children")]
22172 {
22173 child_idx += 1;
22174 }
22175 }
22176 #[cfg(feature = "extra-children")]
22177 _ => {
22178 let elem = RawXmlElement::from_empty(&e);
22180 extra_children.push(PositionedNode::new(
22181 child_idx,
22182 RawXmlNode::Element(elem),
22183 ));
22184 child_idx += 1;
22185 }
22186 #[cfg(not(feature = "extra-children"))]
22187 _ => {}
22188 }
22189 }
22190 Event::End(_) => break,
22191 Event::Eof => break,
22192 _ => {}
22193 }
22194 buf.clear();
22195 }
22196 }
22197
22198 Ok(Self {
22199 #[cfg(feature = "sml-styling")]
22200 sheet_properties: f_sheet_properties,
22201 dimension: f_dimension,
22202 sheet_views: f_sheet_views,
22203 #[cfg(feature = "sml-styling")]
22204 sheet_format: f_sheet_format,
22205 #[cfg(feature = "sml-styling")]
22206 cols: f_cols,
22207 sheet_data: f_sheet_data
22208 .ok_or_else(|| ParseError::MissingAttribute("sheetData".to_string()))?,
22209 #[cfg(feature = "sml-formulas")]
22210 sheet_calc_pr: f_sheet_calc_pr,
22211 #[cfg(feature = "sml-protection")]
22212 sheet_protection: f_sheet_protection,
22213 #[cfg(feature = "sml-protection")]
22214 protected_ranges: f_protected_ranges,
22215 #[cfg(feature = "sml-formulas-advanced")]
22216 scenarios: f_scenarios,
22217 #[cfg(feature = "sml-filtering")]
22218 auto_filter: f_auto_filter,
22219 #[cfg(feature = "sml-filtering")]
22220 sort_state: f_sort_state,
22221 #[cfg(feature = "sml-formulas-advanced")]
22222 data_consolidate: f_data_consolidate,
22223 #[cfg(feature = "sml-structure")]
22224 custom_sheet_views: f_custom_sheet_views,
22225 merged_cells: f_merged_cells,
22226 #[cfg(feature = "sml-i18n")]
22227 phonetic_pr: f_phonetic_pr,
22228 #[cfg(feature = "sml-styling")]
22229 conditional_formatting: f_conditional_formatting,
22230 #[cfg(feature = "sml-validation")]
22231 data_validations: f_data_validations,
22232 #[cfg(feature = "sml-hyperlinks")]
22233 hyperlinks: f_hyperlinks,
22234 #[cfg(feature = "sml-layout")]
22235 print_options: f_print_options,
22236 #[cfg(feature = "sml-layout")]
22237 page_margins: f_page_margins,
22238 #[cfg(feature = "sml-layout")]
22239 page_setup: f_page_setup,
22240 #[cfg(feature = "sml-layout")]
22241 header_footer: f_header_footer,
22242 #[cfg(feature = "sml-layout")]
22243 row_breaks: f_row_breaks,
22244 #[cfg(feature = "sml-layout")]
22245 col_breaks: f_col_breaks,
22246 #[cfg(feature = "sml-metadata")]
22247 custom_properties: f_custom_properties,
22248 #[cfg(feature = "sml-formulas-advanced")]
22249 cell_watches: f_cell_watches,
22250 #[cfg(feature = "sml-validation")]
22251 ignored_errors: f_ignored_errors,
22252 #[cfg(feature = "sml-metadata")]
22253 smart_tags: f_smart_tags,
22254 #[cfg(feature = "sml-drawings")]
22255 drawing: f_drawing,
22256 #[cfg(feature = "sml-comments")]
22257 legacy_drawing: f_legacy_drawing,
22258 #[cfg(feature = "sml-layout")]
22259 legacy_drawing_h_f: f_legacy_drawing_h_f,
22260 #[cfg(feature = "sml-drawings")]
22261 drawing_h_f: f_drawing_h_f,
22262 #[cfg(feature = "sml-drawings")]
22263 picture: f_picture,
22264 #[cfg(feature = "sml-external")]
22265 ole_objects: f_ole_objects,
22266 #[cfg(feature = "sml-external")]
22267 controls: f_controls,
22268 #[cfg(feature = "sml-external")]
22269 web_publish_items: f_web_publish_items,
22270 #[cfg(feature = "sml-tables")]
22271 table_parts: f_table_parts,
22272 #[cfg(feature = "sml-extensions")]
22273 extension_list: f_extension_list,
22274 #[cfg(feature = "extra-children")]
22275 extra_children,
22276 })
22277 }
22278}
22279
22280impl FromXml for SheetData {
22281 fn from_xml<R: BufRead>(
22282 reader: &mut Reader<R>,
22283 start_tag: &BytesStart,
22284 is_empty: bool,
22285 ) -> Result<Self, ParseError> {
22286 let mut f_row = Vec::new();
22287 #[cfg(feature = "extra-children")]
22288 let mut extra_children = Vec::new();
22289 #[cfg(feature = "extra-children")]
22290 let mut child_idx: usize = 0;
22291
22292 if !is_empty {
22294 let mut buf = Vec::new();
22295 loop {
22296 match reader.read_event_into(&mut buf)? {
22297 Event::Start(e) => {
22298 match e.local_name().as_ref() {
22299 b"row" => {
22300 f_row.push(Row::from_xml(reader, &e, false)?);
22301 #[cfg(feature = "extra-children")]
22302 {
22303 child_idx += 1;
22304 }
22305 }
22306 #[cfg(feature = "extra-children")]
22307 _ => {
22308 let elem = RawXmlElement::from_reader(reader, &e)?;
22310 extra_children.push(PositionedNode::new(
22311 child_idx,
22312 RawXmlNode::Element(elem),
22313 ));
22314 child_idx += 1;
22315 }
22316 #[cfg(not(feature = "extra-children"))]
22317 _ => {
22318 skip_element(reader)?;
22320 }
22321 }
22322 }
22323 Event::Empty(e) => {
22324 match e.local_name().as_ref() {
22325 b"row" => {
22326 f_row.push(Row::from_xml(reader, &e, true)?);
22327 #[cfg(feature = "extra-children")]
22328 {
22329 child_idx += 1;
22330 }
22331 }
22332 #[cfg(feature = "extra-children")]
22333 _ => {
22334 let elem = RawXmlElement::from_empty(&e);
22336 extra_children.push(PositionedNode::new(
22337 child_idx,
22338 RawXmlNode::Element(elem),
22339 ));
22340 child_idx += 1;
22341 }
22342 #[cfg(not(feature = "extra-children"))]
22343 _ => {}
22344 }
22345 }
22346 Event::End(_) => break,
22347 Event::Eof => break,
22348 _ => {}
22349 }
22350 buf.clear();
22351 }
22352 }
22353
22354 Ok(Self {
22355 row: f_row,
22356 #[cfg(feature = "extra-children")]
22357 extra_children,
22358 })
22359 }
22360}
22361
22362impl FromXml for SheetCalcProperties {
22363 fn from_xml<R: BufRead>(
22364 reader: &mut Reader<R>,
22365 start_tag: &BytesStart,
22366 is_empty: bool,
22367 ) -> Result<Self, ParseError> {
22368 let mut f_full_calc_on_load = None;
22369 #[cfg(feature = "extra-attrs")]
22370 let mut extra_attrs = std::collections::HashMap::new();
22371
22372 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
22374 let val = String::from_utf8_lossy(&attr.value);
22375 match attr.key.local_name().as_ref() {
22376 b"fullCalcOnLoad" => {
22377 f_full_calc_on_load = Some(val == "true" || val == "1");
22378 }
22379 #[cfg(feature = "extra-attrs")]
22380 unknown => {
22381 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
22382 extra_attrs.insert(key, val.into_owned());
22383 }
22384 #[cfg(not(feature = "extra-attrs"))]
22385 _ => {}
22386 }
22387 }
22388
22389 if !is_empty {
22390 let mut buf = Vec::new();
22391 loop {
22392 match reader.read_event_into(&mut buf)? {
22393 Event::End(_) => break,
22394 Event::Eof => break,
22395 _ => {}
22396 }
22397 buf.clear();
22398 }
22399 }
22400
22401 Ok(Self {
22402 full_calc_on_load: f_full_calc_on_load,
22403 #[cfg(feature = "extra-attrs")]
22404 extra_attrs,
22405 })
22406 }
22407}
22408
22409impl FromXml for SheetFormat {
22410 fn from_xml<R: BufRead>(
22411 reader: &mut Reader<R>,
22412 start_tag: &BytesStart,
22413 is_empty: bool,
22414 ) -> Result<Self, ParseError> {
22415 let mut f_base_col_width = None;
22416 let mut f_default_col_width = None;
22417 let mut f_default_row_height: Option<f64> = None;
22418 let mut f_custom_height = None;
22419 let mut f_zero_height = None;
22420 let mut f_thick_top = None;
22421 let mut f_thick_bottom = None;
22422 let mut f_outline_level_row = None;
22423 let mut f_outline_level_col = None;
22424 #[cfg(feature = "extra-attrs")]
22425 let mut extra_attrs = std::collections::HashMap::new();
22426
22427 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
22429 let val = String::from_utf8_lossy(&attr.value);
22430 match attr.key.local_name().as_ref() {
22431 b"baseColWidth" => {
22432 f_base_col_width = val.parse().ok();
22433 }
22434 b"defaultColWidth" => {
22435 f_default_col_width = val.parse().ok();
22436 }
22437 b"defaultRowHeight" => {
22438 f_default_row_height = val.parse().ok();
22439 }
22440 b"customHeight" => {
22441 f_custom_height = Some(val == "true" || val == "1");
22442 }
22443 b"zeroHeight" => {
22444 f_zero_height = Some(val == "true" || val == "1");
22445 }
22446 b"thickTop" => {
22447 f_thick_top = Some(val == "true" || val == "1");
22448 }
22449 b"thickBottom" => {
22450 f_thick_bottom = Some(val == "true" || val == "1");
22451 }
22452 b"outlineLevelRow" => {
22453 f_outline_level_row = val.parse().ok();
22454 }
22455 b"outlineLevelCol" => {
22456 f_outline_level_col = val.parse().ok();
22457 }
22458 #[cfg(feature = "extra-attrs")]
22459 unknown => {
22460 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
22461 extra_attrs.insert(key, val.into_owned());
22462 }
22463 #[cfg(not(feature = "extra-attrs"))]
22464 _ => {}
22465 }
22466 }
22467
22468 if !is_empty {
22469 let mut buf = Vec::new();
22470 loop {
22471 match reader.read_event_into(&mut buf)? {
22472 Event::End(_) => break,
22473 Event::Eof => break,
22474 _ => {}
22475 }
22476 buf.clear();
22477 }
22478 }
22479
22480 Ok(Self {
22481 base_col_width: f_base_col_width,
22482 default_col_width: f_default_col_width,
22483 default_row_height: f_default_row_height
22484 .ok_or_else(|| ParseError::MissingAttribute("defaultRowHeight".to_string()))?,
22485 custom_height: f_custom_height,
22486 zero_height: f_zero_height,
22487 thick_top: f_thick_top,
22488 thick_bottom: f_thick_bottom,
22489 outline_level_row: f_outline_level_row,
22490 outline_level_col: f_outline_level_col,
22491 #[cfg(feature = "extra-attrs")]
22492 extra_attrs,
22493 })
22494 }
22495}
22496
22497impl FromXml for Columns {
22498 fn from_xml<R: BufRead>(
22499 reader: &mut Reader<R>,
22500 start_tag: &BytesStart,
22501 is_empty: bool,
22502 ) -> Result<Self, ParseError> {
22503 let mut f_col = Vec::new();
22504 #[cfg(feature = "extra-children")]
22505 let mut extra_children = Vec::new();
22506 #[cfg(feature = "extra-children")]
22507 let mut child_idx: usize = 0;
22508
22509 if !is_empty {
22511 let mut buf = Vec::new();
22512 loop {
22513 match reader.read_event_into(&mut buf)? {
22514 Event::Start(e) => {
22515 match e.local_name().as_ref() {
22516 b"col" => {
22517 f_col.push(Column::from_xml(reader, &e, false)?);
22518 #[cfg(feature = "extra-children")]
22519 {
22520 child_idx += 1;
22521 }
22522 }
22523 #[cfg(feature = "extra-children")]
22524 _ => {
22525 let elem = RawXmlElement::from_reader(reader, &e)?;
22527 extra_children.push(PositionedNode::new(
22528 child_idx,
22529 RawXmlNode::Element(elem),
22530 ));
22531 child_idx += 1;
22532 }
22533 #[cfg(not(feature = "extra-children"))]
22534 _ => {
22535 skip_element(reader)?;
22537 }
22538 }
22539 }
22540 Event::Empty(e) => {
22541 match e.local_name().as_ref() {
22542 b"col" => {
22543 f_col.push(Column::from_xml(reader, &e, true)?);
22544 #[cfg(feature = "extra-children")]
22545 {
22546 child_idx += 1;
22547 }
22548 }
22549 #[cfg(feature = "extra-children")]
22550 _ => {
22551 let elem = RawXmlElement::from_empty(&e);
22553 extra_children.push(PositionedNode::new(
22554 child_idx,
22555 RawXmlNode::Element(elem),
22556 ));
22557 child_idx += 1;
22558 }
22559 #[cfg(not(feature = "extra-children"))]
22560 _ => {}
22561 }
22562 }
22563 Event::End(_) => break,
22564 Event::Eof => break,
22565 _ => {}
22566 }
22567 buf.clear();
22568 }
22569 }
22570
22571 Ok(Self {
22572 col: f_col,
22573 #[cfg(feature = "extra-children")]
22574 extra_children,
22575 })
22576 }
22577}
22578
22579impl FromXml for Column {
22580 fn from_xml<R: BufRead>(
22581 reader: &mut Reader<R>,
22582 start_tag: &BytesStart,
22583 is_empty: bool,
22584 ) -> Result<Self, ParseError> {
22585 #[cfg(feature = "sml-styling")]
22586 let mut f_start_column: Option<u32> = None;
22587 #[cfg(feature = "sml-styling")]
22588 let mut f_end_column: Option<u32> = None;
22589 #[cfg(feature = "sml-styling")]
22590 let mut f_width = None;
22591 #[cfg(feature = "sml-styling")]
22592 let mut f_style = None;
22593 #[cfg(feature = "sml-structure")]
22594 let mut f_hidden = None;
22595 #[cfg(feature = "sml-styling")]
22596 let mut f_best_fit = None;
22597 #[cfg(feature = "sml-styling")]
22598 let mut f_custom_width = None;
22599 #[cfg(feature = "sml-i18n")]
22600 let mut f_phonetic = None;
22601 #[cfg(feature = "sml-structure")]
22602 let mut f_outline_level = None;
22603 #[cfg(feature = "sml-structure")]
22604 let mut f_collapsed = None;
22605 #[cfg(feature = "extra-attrs")]
22606 let mut extra_attrs = std::collections::HashMap::new();
22607
22608 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
22610 let val = String::from_utf8_lossy(&attr.value);
22611 match attr.key.local_name().as_ref() {
22612 #[cfg(feature = "sml-styling")]
22613 b"min" => {
22614 f_start_column = val.parse().ok();
22615 }
22616 #[cfg(feature = "sml-styling")]
22617 b"max" => {
22618 f_end_column = val.parse().ok();
22619 }
22620 #[cfg(feature = "sml-styling")]
22621 b"width" => {
22622 f_width = val.parse().ok();
22623 }
22624 #[cfg(feature = "sml-styling")]
22625 b"style" => {
22626 f_style = val.parse().ok();
22627 }
22628 #[cfg(feature = "sml-structure")]
22629 b"hidden" => {
22630 f_hidden = Some(val == "true" || val == "1");
22631 }
22632 #[cfg(feature = "sml-styling")]
22633 b"bestFit" => {
22634 f_best_fit = Some(val == "true" || val == "1");
22635 }
22636 #[cfg(feature = "sml-styling")]
22637 b"customWidth" => {
22638 f_custom_width = Some(val == "true" || val == "1");
22639 }
22640 #[cfg(feature = "sml-i18n")]
22641 b"phonetic" => {
22642 f_phonetic = Some(val == "true" || val == "1");
22643 }
22644 #[cfg(feature = "sml-structure")]
22645 b"outlineLevel" => {
22646 f_outline_level = val.parse().ok();
22647 }
22648 #[cfg(feature = "sml-structure")]
22649 b"collapsed" => {
22650 f_collapsed = Some(val == "true" || val == "1");
22651 }
22652 #[cfg(feature = "extra-attrs")]
22653 unknown => {
22654 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
22655 extra_attrs.insert(key, val.into_owned());
22656 }
22657 #[cfg(not(feature = "extra-attrs"))]
22658 _ => {}
22659 }
22660 }
22661
22662 if !is_empty {
22663 let mut buf = Vec::new();
22664 loop {
22665 match reader.read_event_into(&mut buf)? {
22666 Event::End(_) => break,
22667 Event::Eof => break,
22668 _ => {}
22669 }
22670 buf.clear();
22671 }
22672 }
22673
22674 Ok(Self {
22675 #[cfg(feature = "sml-styling")]
22676 start_column: f_start_column
22677 .ok_or_else(|| ParseError::MissingAttribute("min".to_string()))?,
22678 #[cfg(feature = "sml-styling")]
22679 end_column: f_end_column
22680 .ok_or_else(|| ParseError::MissingAttribute("max".to_string()))?,
22681 #[cfg(feature = "sml-styling")]
22682 width: f_width,
22683 #[cfg(feature = "sml-styling")]
22684 style: f_style,
22685 #[cfg(feature = "sml-structure")]
22686 hidden: f_hidden,
22687 #[cfg(feature = "sml-styling")]
22688 best_fit: f_best_fit,
22689 #[cfg(feature = "sml-styling")]
22690 custom_width: f_custom_width,
22691 #[cfg(feature = "sml-i18n")]
22692 phonetic: f_phonetic,
22693 #[cfg(feature = "sml-structure")]
22694 outline_level: f_outline_level,
22695 #[cfg(feature = "sml-structure")]
22696 collapsed: f_collapsed,
22697 #[cfg(feature = "extra-attrs")]
22698 extra_attrs,
22699 })
22700 }
22701}
22702
22703impl FromXml for Row {
22704 fn from_xml<R: BufRead>(
22705 reader: &mut Reader<R>,
22706 start_tag: &BytesStart,
22707 is_empty: bool,
22708 ) -> Result<Self, ParseError> {
22709 let mut f_reference = None;
22710 let mut f_cell_spans = None;
22711 let mut f_style_index = None;
22712 #[cfg(feature = "sml-styling")]
22713 let mut f_custom_format = None;
22714 #[cfg(feature = "sml-styling")]
22715 let mut f_height = None;
22716 #[cfg(feature = "sml-structure")]
22717 let mut f_hidden = None;
22718 #[cfg(feature = "sml-styling")]
22719 let mut f_custom_height = None;
22720 #[cfg(feature = "sml-structure")]
22721 let mut f_outline_level = None;
22722 #[cfg(feature = "sml-structure")]
22723 let mut f_collapsed = None;
22724 #[cfg(feature = "sml-styling")]
22725 let mut f_thick_top = None;
22726 #[cfg(feature = "sml-styling")]
22727 let mut f_thick_bot = None;
22728 #[cfg(feature = "sml-i18n")]
22729 let mut f_placeholder = None;
22730 let mut f_cells = Vec::new();
22731 #[cfg(feature = "sml-extensions")]
22732 let mut f_extension_list = None;
22733 #[cfg(feature = "extra-attrs")]
22734 let mut extra_attrs = std::collections::HashMap::new();
22735 #[cfg(feature = "extra-children")]
22736 let mut extra_children = Vec::new();
22737 #[cfg(feature = "extra-children")]
22738 let mut child_idx: usize = 0;
22739
22740 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
22742 let val = String::from_utf8_lossy(&attr.value);
22743 match attr.key.local_name().as_ref() {
22744 b"r" => {
22745 f_reference = val.parse().ok();
22746 }
22747 b"spans" => {
22748 f_cell_spans = Some(val.into_owned());
22749 }
22750 b"s" => {
22751 f_style_index = val.parse().ok();
22752 }
22753 #[cfg(feature = "sml-styling")]
22754 b"customFormat" => {
22755 f_custom_format = Some(val == "true" || val == "1");
22756 }
22757 #[cfg(feature = "sml-styling")]
22758 b"ht" => {
22759 f_height = val.parse().ok();
22760 }
22761 #[cfg(feature = "sml-structure")]
22762 b"hidden" => {
22763 f_hidden = Some(val == "true" || val == "1");
22764 }
22765 #[cfg(feature = "sml-styling")]
22766 b"customHeight" => {
22767 f_custom_height = Some(val == "true" || val == "1");
22768 }
22769 #[cfg(feature = "sml-structure")]
22770 b"outlineLevel" => {
22771 f_outline_level = val.parse().ok();
22772 }
22773 #[cfg(feature = "sml-structure")]
22774 b"collapsed" => {
22775 f_collapsed = Some(val == "true" || val == "1");
22776 }
22777 #[cfg(feature = "sml-styling")]
22778 b"thickTop" => {
22779 f_thick_top = Some(val == "true" || val == "1");
22780 }
22781 #[cfg(feature = "sml-styling")]
22782 b"thickBot" => {
22783 f_thick_bot = Some(val == "true" || val == "1");
22784 }
22785 #[cfg(feature = "sml-i18n")]
22786 b"ph" => {
22787 f_placeholder = Some(val == "true" || val == "1");
22788 }
22789 #[cfg(feature = "extra-attrs")]
22790 unknown => {
22791 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
22792 extra_attrs.insert(key, val.into_owned());
22793 }
22794 #[cfg(not(feature = "extra-attrs"))]
22795 _ => {}
22796 }
22797 }
22798
22799 if !is_empty {
22801 let mut buf = Vec::new();
22802 loop {
22803 match reader.read_event_into(&mut buf)? {
22804 Event::Start(e) => {
22805 match e.local_name().as_ref() {
22806 b"c" => {
22807 f_cells.push(Cell::from_xml(reader, &e, false)?);
22808 #[cfg(feature = "extra-children")]
22809 {
22810 child_idx += 1;
22811 }
22812 }
22813 #[cfg(feature = "sml-extensions")]
22814 b"extLst" => {
22815 f_extension_list =
22816 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
22817 #[cfg(feature = "extra-children")]
22818 {
22819 child_idx += 1;
22820 }
22821 }
22822 #[cfg(feature = "extra-children")]
22823 _ => {
22824 let elem = RawXmlElement::from_reader(reader, &e)?;
22826 extra_children.push(PositionedNode::new(
22827 child_idx,
22828 RawXmlNode::Element(elem),
22829 ));
22830 child_idx += 1;
22831 }
22832 #[cfg(not(feature = "extra-children"))]
22833 _ => {
22834 skip_element(reader)?;
22836 }
22837 }
22838 }
22839 Event::Empty(e) => {
22840 match e.local_name().as_ref() {
22841 b"c" => {
22842 f_cells.push(Cell::from_xml(reader, &e, true)?);
22843 #[cfg(feature = "extra-children")]
22844 {
22845 child_idx += 1;
22846 }
22847 }
22848 #[cfg(feature = "sml-extensions")]
22849 b"extLst" => {
22850 f_extension_list =
22851 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
22852 #[cfg(feature = "extra-children")]
22853 {
22854 child_idx += 1;
22855 }
22856 }
22857 #[cfg(feature = "extra-children")]
22858 _ => {
22859 let elem = RawXmlElement::from_empty(&e);
22861 extra_children.push(PositionedNode::new(
22862 child_idx,
22863 RawXmlNode::Element(elem),
22864 ));
22865 child_idx += 1;
22866 }
22867 #[cfg(not(feature = "extra-children"))]
22868 _ => {}
22869 }
22870 }
22871 Event::End(_) => break,
22872 Event::Eof => break,
22873 _ => {}
22874 }
22875 buf.clear();
22876 }
22877 }
22878
22879 Ok(Self {
22880 reference: f_reference,
22881 cell_spans: f_cell_spans,
22882 style_index: f_style_index,
22883 #[cfg(feature = "sml-styling")]
22884 custom_format: f_custom_format,
22885 #[cfg(feature = "sml-styling")]
22886 height: f_height,
22887 #[cfg(feature = "sml-structure")]
22888 hidden: f_hidden,
22889 #[cfg(feature = "sml-styling")]
22890 custom_height: f_custom_height,
22891 #[cfg(feature = "sml-structure")]
22892 outline_level: f_outline_level,
22893 #[cfg(feature = "sml-structure")]
22894 collapsed: f_collapsed,
22895 #[cfg(feature = "sml-styling")]
22896 thick_top: f_thick_top,
22897 #[cfg(feature = "sml-styling")]
22898 thick_bot: f_thick_bot,
22899 #[cfg(feature = "sml-i18n")]
22900 placeholder: f_placeholder,
22901 cells: f_cells,
22902 #[cfg(feature = "sml-extensions")]
22903 extension_list: f_extension_list,
22904 #[cfg(feature = "extra-attrs")]
22905 extra_attrs,
22906 #[cfg(feature = "extra-children")]
22907 extra_children,
22908 })
22909 }
22910}
22911
22912impl FromXml for Cell {
22913 fn from_xml<R: BufRead>(
22914 reader: &mut Reader<R>,
22915 start_tag: &BytesStart,
22916 is_empty: bool,
22917 ) -> Result<Self, ParseError> {
22918 let mut f_reference = None;
22919 let mut f_style_index = None;
22920 let mut f_cell_type = None;
22921 #[cfg(feature = "sml-metadata")]
22922 let mut f_cm = None;
22923 #[cfg(feature = "sml-metadata")]
22924 let mut f_vm = None;
22925 #[cfg(feature = "sml-i18n")]
22926 let mut f_placeholder = None;
22927 let mut f_formula = None;
22928 let mut f_value = None;
22929 let mut f_is = None;
22930 #[cfg(feature = "sml-extensions")]
22931 let mut f_extension_list = None;
22932 #[cfg(feature = "extra-attrs")]
22933 let mut extra_attrs = std::collections::HashMap::new();
22934 #[cfg(feature = "extra-children")]
22935 let mut extra_children = Vec::new();
22936 #[cfg(feature = "extra-children")]
22937 let mut child_idx: usize = 0;
22938
22939 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
22941 let val = String::from_utf8_lossy(&attr.value);
22942 match attr.key.local_name().as_ref() {
22943 b"r" => {
22944 f_reference = Some(val.into_owned());
22945 }
22946 b"s" => {
22947 f_style_index = val.parse().ok();
22948 }
22949 b"t" => {
22950 f_cell_type = val.parse().ok();
22951 }
22952 #[cfg(feature = "sml-metadata")]
22953 b"cm" => {
22954 f_cm = val.parse().ok();
22955 }
22956 #[cfg(feature = "sml-metadata")]
22957 b"vm" => {
22958 f_vm = val.parse().ok();
22959 }
22960 #[cfg(feature = "sml-i18n")]
22961 b"ph" => {
22962 f_placeholder = Some(val == "true" || val == "1");
22963 }
22964 #[cfg(feature = "extra-attrs")]
22965 unknown => {
22966 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
22967 extra_attrs.insert(key, val.into_owned());
22968 }
22969 #[cfg(not(feature = "extra-attrs"))]
22970 _ => {}
22971 }
22972 }
22973
22974 if !is_empty {
22976 let mut buf = Vec::new();
22977 loop {
22978 match reader.read_event_into(&mut buf)? {
22979 Event::Start(e) => {
22980 match e.local_name().as_ref() {
22981 b"f" => {
22982 f_formula =
22983 Some(Box::new(CellFormula::from_xml(reader, &e, false)?));
22984 #[cfg(feature = "extra-children")]
22985 {
22986 child_idx += 1;
22987 }
22988 }
22989 b"v" => {
22990 f_value = Some(read_text_content(reader)?);
22991 #[cfg(feature = "extra-children")]
22992 {
22993 child_idx += 1;
22994 }
22995 }
22996 b"is" => {
22997 f_is = Some(Box::new(RichString::from_xml(reader, &e, false)?));
22998 #[cfg(feature = "extra-children")]
22999 {
23000 child_idx += 1;
23001 }
23002 }
23003 #[cfg(feature = "sml-extensions")]
23004 b"extLst" => {
23005 f_extension_list =
23006 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
23007 #[cfg(feature = "extra-children")]
23008 {
23009 child_idx += 1;
23010 }
23011 }
23012 #[cfg(feature = "extra-children")]
23013 _ => {
23014 let elem = RawXmlElement::from_reader(reader, &e)?;
23016 extra_children.push(PositionedNode::new(
23017 child_idx,
23018 RawXmlNode::Element(elem),
23019 ));
23020 child_idx += 1;
23021 }
23022 #[cfg(not(feature = "extra-children"))]
23023 _ => {
23024 skip_element(reader)?;
23026 }
23027 }
23028 }
23029 Event::Empty(e) => {
23030 match e.local_name().as_ref() {
23031 b"f" => {
23032 f_formula =
23033 Some(Box::new(CellFormula::from_xml(reader, &e, true)?));
23034 #[cfg(feature = "extra-children")]
23035 {
23036 child_idx += 1;
23037 }
23038 }
23039 b"v" => {
23040 f_value = Some(String::new());
23041 #[cfg(feature = "extra-children")]
23042 {
23043 child_idx += 1;
23044 }
23045 }
23046 b"is" => {
23047 f_is = Some(Box::new(RichString::from_xml(reader, &e, true)?));
23048 #[cfg(feature = "extra-children")]
23049 {
23050 child_idx += 1;
23051 }
23052 }
23053 #[cfg(feature = "sml-extensions")]
23054 b"extLst" => {
23055 f_extension_list =
23056 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
23057 #[cfg(feature = "extra-children")]
23058 {
23059 child_idx += 1;
23060 }
23061 }
23062 #[cfg(feature = "extra-children")]
23063 _ => {
23064 let elem = RawXmlElement::from_empty(&e);
23066 extra_children.push(PositionedNode::new(
23067 child_idx,
23068 RawXmlNode::Element(elem),
23069 ));
23070 child_idx += 1;
23071 }
23072 #[cfg(not(feature = "extra-children"))]
23073 _ => {}
23074 }
23075 }
23076 Event::End(_) => break,
23077 Event::Eof => break,
23078 _ => {}
23079 }
23080 buf.clear();
23081 }
23082 }
23083
23084 Ok(Self {
23085 reference: f_reference,
23086 style_index: f_style_index,
23087 cell_type: f_cell_type,
23088 #[cfg(feature = "sml-metadata")]
23089 cm: f_cm,
23090 #[cfg(feature = "sml-metadata")]
23091 vm: f_vm,
23092 #[cfg(feature = "sml-i18n")]
23093 placeholder: f_placeholder,
23094 formula: f_formula,
23095 value: f_value,
23096 is: f_is,
23097 #[cfg(feature = "sml-extensions")]
23098 extension_list: f_extension_list,
23099 #[cfg(feature = "extra-attrs")]
23100 extra_attrs,
23101 #[cfg(feature = "extra-children")]
23102 extra_children,
23103 })
23104 }
23105}
23106
23107impl FromXml for SheetProperties {
23108 fn from_xml<R: BufRead>(
23109 reader: &mut Reader<R>,
23110 start_tag: &BytesStart,
23111 is_empty: bool,
23112 ) -> Result<Self, ParseError> {
23113 #[cfg(feature = "sml-structure")]
23114 let mut f_sync_horizontal = None;
23115 #[cfg(feature = "sml-structure")]
23116 let mut f_sync_vertical = None;
23117 #[cfg(feature = "sml-structure")]
23118 let mut f_sync_ref = None;
23119 #[cfg(feature = "sml-formulas")]
23120 let mut f_transition_evaluation = None;
23121 #[cfg(feature = "sml-formulas")]
23122 let mut f_transition_entry = None;
23123 #[cfg(feature = "sml-external")]
23124 let mut f_published = None;
23125 #[cfg(feature = "sml-structure")]
23126 let mut f_code_name = None;
23127 #[cfg(feature = "sml-filtering")]
23128 let mut f_filter_mode = None;
23129 #[cfg(feature = "sml-styling")]
23130 let mut f_enable_format_conditions_calculation = None;
23131 #[cfg(feature = "sml-styling")]
23132 let mut f_tab_color = None;
23133 #[cfg(feature = "sml-structure")]
23134 let mut f_outline_pr = None;
23135 #[cfg(feature = "sml-layout")]
23136 let mut f_page_set_up_pr = None;
23137 #[cfg(feature = "extra-attrs")]
23138 let mut extra_attrs = std::collections::HashMap::new();
23139 #[cfg(feature = "extra-children")]
23140 let mut extra_children = Vec::new();
23141 #[cfg(feature = "extra-children")]
23142 let mut child_idx: usize = 0;
23143
23144 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
23146 let val = String::from_utf8_lossy(&attr.value);
23147 match attr.key.local_name().as_ref() {
23148 #[cfg(feature = "sml-structure")]
23149 b"syncHorizontal" => {
23150 f_sync_horizontal = Some(val == "true" || val == "1");
23151 }
23152 #[cfg(feature = "sml-structure")]
23153 b"syncVertical" => {
23154 f_sync_vertical = Some(val == "true" || val == "1");
23155 }
23156 #[cfg(feature = "sml-structure")]
23157 b"syncRef" => {
23158 f_sync_ref = Some(val.into_owned());
23159 }
23160 #[cfg(feature = "sml-formulas")]
23161 b"transitionEvaluation" => {
23162 f_transition_evaluation = Some(val == "true" || val == "1");
23163 }
23164 #[cfg(feature = "sml-formulas")]
23165 b"transitionEntry" => {
23166 f_transition_entry = Some(val == "true" || val == "1");
23167 }
23168 #[cfg(feature = "sml-external")]
23169 b"published" => {
23170 f_published = Some(val == "true" || val == "1");
23171 }
23172 #[cfg(feature = "sml-structure")]
23173 b"codeName" => {
23174 f_code_name = Some(val.into_owned());
23175 }
23176 #[cfg(feature = "sml-filtering")]
23177 b"filterMode" => {
23178 f_filter_mode = Some(val == "true" || val == "1");
23179 }
23180 #[cfg(feature = "sml-styling")]
23181 b"enableFormatConditionsCalculation" => {
23182 f_enable_format_conditions_calculation = Some(val == "true" || val == "1");
23183 }
23184 #[cfg(feature = "extra-attrs")]
23185 unknown => {
23186 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
23187 extra_attrs.insert(key, val.into_owned());
23188 }
23189 #[cfg(not(feature = "extra-attrs"))]
23190 _ => {}
23191 }
23192 }
23193
23194 if !is_empty {
23196 let mut buf = Vec::new();
23197 loop {
23198 match reader.read_event_into(&mut buf)? {
23199 Event::Start(e) => {
23200 match e.local_name().as_ref() {
23201 #[cfg(feature = "sml-styling")]
23202 b"tabColor" => {
23203 f_tab_color = Some(Box::new(Color::from_xml(reader, &e, false)?));
23204 #[cfg(feature = "extra-children")]
23205 {
23206 child_idx += 1;
23207 }
23208 }
23209 #[cfg(feature = "sml-structure")]
23210 b"outlinePr" => {
23211 f_outline_pr =
23212 Some(Box::new(OutlineProperties::from_xml(reader, &e, false)?));
23213 #[cfg(feature = "extra-children")]
23214 {
23215 child_idx += 1;
23216 }
23217 }
23218 #[cfg(feature = "sml-layout")]
23219 b"pageSetUpPr" => {
23220 f_page_set_up_pr = Some(Box::new(PageSetupProperties::from_xml(
23221 reader, &e, false,
23222 )?));
23223 #[cfg(feature = "extra-children")]
23224 {
23225 child_idx += 1;
23226 }
23227 }
23228 #[cfg(feature = "extra-children")]
23229 _ => {
23230 let elem = RawXmlElement::from_reader(reader, &e)?;
23232 extra_children.push(PositionedNode::new(
23233 child_idx,
23234 RawXmlNode::Element(elem),
23235 ));
23236 child_idx += 1;
23237 }
23238 #[cfg(not(feature = "extra-children"))]
23239 _ => {
23240 skip_element(reader)?;
23242 }
23243 }
23244 }
23245 Event::Empty(e) => {
23246 match e.local_name().as_ref() {
23247 #[cfg(feature = "sml-styling")]
23248 b"tabColor" => {
23249 f_tab_color = Some(Box::new(Color::from_xml(reader, &e, true)?));
23250 #[cfg(feature = "extra-children")]
23251 {
23252 child_idx += 1;
23253 }
23254 }
23255 #[cfg(feature = "sml-structure")]
23256 b"outlinePr" => {
23257 f_outline_pr =
23258 Some(Box::new(OutlineProperties::from_xml(reader, &e, true)?));
23259 #[cfg(feature = "extra-children")]
23260 {
23261 child_idx += 1;
23262 }
23263 }
23264 #[cfg(feature = "sml-layout")]
23265 b"pageSetUpPr" => {
23266 f_page_set_up_pr = Some(Box::new(PageSetupProperties::from_xml(
23267 reader, &e, true,
23268 )?));
23269 #[cfg(feature = "extra-children")]
23270 {
23271 child_idx += 1;
23272 }
23273 }
23274 #[cfg(feature = "extra-children")]
23275 _ => {
23276 let elem = RawXmlElement::from_empty(&e);
23278 extra_children.push(PositionedNode::new(
23279 child_idx,
23280 RawXmlNode::Element(elem),
23281 ));
23282 child_idx += 1;
23283 }
23284 #[cfg(not(feature = "extra-children"))]
23285 _ => {}
23286 }
23287 }
23288 Event::End(_) => break,
23289 Event::Eof => break,
23290 _ => {}
23291 }
23292 buf.clear();
23293 }
23294 }
23295
23296 Ok(Self {
23297 #[cfg(feature = "sml-structure")]
23298 sync_horizontal: f_sync_horizontal,
23299 #[cfg(feature = "sml-structure")]
23300 sync_vertical: f_sync_vertical,
23301 #[cfg(feature = "sml-structure")]
23302 sync_ref: f_sync_ref,
23303 #[cfg(feature = "sml-formulas")]
23304 transition_evaluation: f_transition_evaluation,
23305 #[cfg(feature = "sml-formulas")]
23306 transition_entry: f_transition_entry,
23307 #[cfg(feature = "sml-external")]
23308 published: f_published,
23309 #[cfg(feature = "sml-structure")]
23310 code_name: f_code_name,
23311 #[cfg(feature = "sml-filtering")]
23312 filter_mode: f_filter_mode,
23313 #[cfg(feature = "sml-styling")]
23314 enable_format_conditions_calculation: f_enable_format_conditions_calculation,
23315 #[cfg(feature = "sml-styling")]
23316 tab_color: f_tab_color,
23317 #[cfg(feature = "sml-structure")]
23318 outline_pr: f_outline_pr,
23319 #[cfg(feature = "sml-layout")]
23320 page_set_up_pr: f_page_set_up_pr,
23321 #[cfg(feature = "extra-attrs")]
23322 extra_attrs,
23323 #[cfg(feature = "extra-children")]
23324 extra_children,
23325 })
23326 }
23327}
23328
23329impl FromXml for SheetDimension {
23330 fn from_xml<R: BufRead>(
23331 reader: &mut Reader<R>,
23332 start_tag: &BytesStart,
23333 is_empty: bool,
23334 ) -> Result<Self, ParseError> {
23335 let mut f_reference: Option<Reference> = None;
23336 #[cfg(feature = "extra-attrs")]
23337 let mut extra_attrs = std::collections::HashMap::new();
23338
23339 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
23341 let val = String::from_utf8_lossy(&attr.value);
23342 match attr.key.local_name().as_ref() {
23343 b"ref" => {
23344 f_reference = Some(val.into_owned());
23345 }
23346 #[cfg(feature = "extra-attrs")]
23347 unknown => {
23348 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
23349 extra_attrs.insert(key, val.into_owned());
23350 }
23351 #[cfg(not(feature = "extra-attrs"))]
23352 _ => {}
23353 }
23354 }
23355
23356 if !is_empty {
23357 let mut buf = Vec::new();
23358 loop {
23359 match reader.read_event_into(&mut buf)? {
23360 Event::End(_) => break,
23361 Event::Eof => break,
23362 _ => {}
23363 }
23364 buf.clear();
23365 }
23366 }
23367
23368 Ok(Self {
23369 reference: f_reference
23370 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
23371 #[cfg(feature = "extra-attrs")]
23372 extra_attrs,
23373 })
23374 }
23375}
23376
23377impl FromXml for SheetViews {
23378 fn from_xml<R: BufRead>(
23379 reader: &mut Reader<R>,
23380 start_tag: &BytesStart,
23381 is_empty: bool,
23382 ) -> Result<Self, ParseError> {
23383 let mut f_sheet_view = Vec::new();
23384 let mut f_extension_list = None;
23385 #[cfg(feature = "extra-children")]
23386 let mut extra_children = Vec::new();
23387 #[cfg(feature = "extra-children")]
23388 let mut child_idx: usize = 0;
23389
23390 if !is_empty {
23392 let mut buf = Vec::new();
23393 loop {
23394 match reader.read_event_into(&mut buf)? {
23395 Event::Start(e) => {
23396 match e.local_name().as_ref() {
23397 b"sheetView" => {
23398 f_sheet_view.push(SheetView::from_xml(reader, &e, false)?);
23399 #[cfg(feature = "extra-children")]
23400 {
23401 child_idx += 1;
23402 }
23403 }
23404 b"extLst" => {
23405 f_extension_list =
23406 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
23407 #[cfg(feature = "extra-children")]
23408 {
23409 child_idx += 1;
23410 }
23411 }
23412 #[cfg(feature = "extra-children")]
23413 _ => {
23414 let elem = RawXmlElement::from_reader(reader, &e)?;
23416 extra_children.push(PositionedNode::new(
23417 child_idx,
23418 RawXmlNode::Element(elem),
23419 ));
23420 child_idx += 1;
23421 }
23422 #[cfg(not(feature = "extra-children"))]
23423 _ => {
23424 skip_element(reader)?;
23426 }
23427 }
23428 }
23429 Event::Empty(e) => {
23430 match e.local_name().as_ref() {
23431 b"sheetView" => {
23432 f_sheet_view.push(SheetView::from_xml(reader, &e, true)?);
23433 #[cfg(feature = "extra-children")]
23434 {
23435 child_idx += 1;
23436 }
23437 }
23438 b"extLst" => {
23439 f_extension_list =
23440 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
23441 #[cfg(feature = "extra-children")]
23442 {
23443 child_idx += 1;
23444 }
23445 }
23446 #[cfg(feature = "extra-children")]
23447 _ => {
23448 let elem = RawXmlElement::from_empty(&e);
23450 extra_children.push(PositionedNode::new(
23451 child_idx,
23452 RawXmlNode::Element(elem),
23453 ));
23454 child_idx += 1;
23455 }
23456 #[cfg(not(feature = "extra-children"))]
23457 _ => {}
23458 }
23459 }
23460 Event::End(_) => break,
23461 Event::Eof => break,
23462 _ => {}
23463 }
23464 buf.clear();
23465 }
23466 }
23467
23468 Ok(Self {
23469 sheet_view: f_sheet_view,
23470 extension_list: f_extension_list,
23471 #[cfg(feature = "extra-children")]
23472 extra_children,
23473 })
23474 }
23475}
23476
23477impl FromXml for SheetView {
23478 fn from_xml<R: BufRead>(
23479 reader: &mut Reader<R>,
23480 start_tag: &BytesStart,
23481 is_empty: bool,
23482 ) -> Result<Self, ParseError> {
23483 #[cfg(feature = "sml-protection")]
23484 let mut f_window_protection = None;
23485 #[cfg(feature = "sml-formulas")]
23486 let mut f_show_formulas = None;
23487 #[cfg(feature = "sml-styling")]
23488 let mut f_show_grid_lines = None;
23489 #[cfg(feature = "sml-styling")]
23490 let mut f_show_row_col_headers = None;
23491 #[cfg(feature = "sml-styling")]
23492 let mut f_show_zeros = None;
23493 #[cfg(feature = "sml-i18n")]
23494 let mut f_right_to_left = None;
23495 let mut f_tab_selected = None;
23496 #[cfg(feature = "sml-layout")]
23497 let mut f_show_ruler = None;
23498 #[cfg(feature = "sml-structure")]
23499 let mut f_show_outline_symbols = None;
23500 #[cfg(feature = "sml-styling")]
23501 let mut f_default_grid_color = None;
23502 #[cfg(feature = "sml-layout")]
23503 let mut f_show_white_space = None;
23504 let mut f_view = None;
23505 let mut f_top_left_cell = None;
23506 #[cfg(feature = "sml-styling")]
23507 let mut f_color_id = None;
23508 let mut f_zoom_scale = None;
23509 let mut f_zoom_scale_normal = None;
23510 #[cfg(feature = "sml-layout")]
23511 let mut f_zoom_scale_sheet_layout_view = None;
23512 #[cfg(feature = "sml-layout")]
23513 let mut f_zoom_scale_page_layout_view = None;
23514 let mut f_workbook_view_id: Option<u32> = None;
23515 #[cfg(feature = "sml-structure")]
23516 let mut f_pane = None;
23517 let mut f_selection = Vec::new();
23518 #[cfg(feature = "sml-pivot")]
23519 let mut f_pivot_selection = Vec::new();
23520 #[cfg(feature = "sml-extensions")]
23521 let mut f_extension_list = None;
23522 #[cfg(feature = "extra-attrs")]
23523 let mut extra_attrs = std::collections::HashMap::new();
23524 #[cfg(feature = "extra-children")]
23525 let mut extra_children = Vec::new();
23526 #[cfg(feature = "extra-children")]
23527 let mut child_idx: usize = 0;
23528
23529 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
23531 let val = String::from_utf8_lossy(&attr.value);
23532 match attr.key.local_name().as_ref() {
23533 #[cfg(feature = "sml-protection")]
23534 b"windowProtection" => {
23535 f_window_protection = Some(val == "true" || val == "1");
23536 }
23537 #[cfg(feature = "sml-formulas")]
23538 b"showFormulas" => {
23539 f_show_formulas = Some(val == "true" || val == "1");
23540 }
23541 #[cfg(feature = "sml-styling")]
23542 b"showGridLines" => {
23543 f_show_grid_lines = Some(val == "true" || val == "1");
23544 }
23545 #[cfg(feature = "sml-styling")]
23546 b"showRowColHeaders" => {
23547 f_show_row_col_headers = Some(val == "true" || val == "1");
23548 }
23549 #[cfg(feature = "sml-styling")]
23550 b"showZeros" => {
23551 f_show_zeros = Some(val == "true" || val == "1");
23552 }
23553 #[cfg(feature = "sml-i18n")]
23554 b"rightToLeft" => {
23555 f_right_to_left = Some(val == "true" || val == "1");
23556 }
23557 b"tabSelected" => {
23558 f_tab_selected = Some(val == "true" || val == "1");
23559 }
23560 #[cfg(feature = "sml-layout")]
23561 b"showRuler" => {
23562 f_show_ruler = Some(val == "true" || val == "1");
23563 }
23564 #[cfg(feature = "sml-structure")]
23565 b"showOutlineSymbols" => {
23566 f_show_outline_symbols = Some(val == "true" || val == "1");
23567 }
23568 #[cfg(feature = "sml-styling")]
23569 b"defaultGridColor" => {
23570 f_default_grid_color = Some(val == "true" || val == "1");
23571 }
23572 #[cfg(feature = "sml-layout")]
23573 b"showWhiteSpace" => {
23574 f_show_white_space = Some(val == "true" || val == "1");
23575 }
23576 b"view" => {
23577 f_view = val.parse().ok();
23578 }
23579 b"topLeftCell" => {
23580 f_top_left_cell = Some(val.into_owned());
23581 }
23582 #[cfg(feature = "sml-styling")]
23583 b"colorId" => {
23584 f_color_id = val.parse().ok();
23585 }
23586 b"zoomScale" => {
23587 f_zoom_scale = val.parse().ok();
23588 }
23589 b"zoomScaleNormal" => {
23590 f_zoom_scale_normal = val.parse().ok();
23591 }
23592 #[cfg(feature = "sml-layout")]
23593 b"zoomScaleSheetLayoutView" => {
23594 f_zoom_scale_sheet_layout_view = val.parse().ok();
23595 }
23596 #[cfg(feature = "sml-layout")]
23597 b"zoomScalePageLayoutView" => {
23598 f_zoom_scale_page_layout_view = val.parse().ok();
23599 }
23600 b"workbookViewId" => {
23601 f_workbook_view_id = val.parse().ok();
23602 }
23603 #[cfg(feature = "extra-attrs")]
23604 unknown => {
23605 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
23606 extra_attrs.insert(key, val.into_owned());
23607 }
23608 #[cfg(not(feature = "extra-attrs"))]
23609 _ => {}
23610 }
23611 }
23612
23613 if !is_empty {
23615 let mut buf = Vec::new();
23616 loop {
23617 match reader.read_event_into(&mut buf)? {
23618 Event::Start(e) => {
23619 match e.local_name().as_ref() {
23620 #[cfg(feature = "sml-structure")]
23621 b"pane" => {
23622 f_pane = Some(Box::new(Pane::from_xml(reader, &e, false)?));
23623 #[cfg(feature = "extra-children")]
23624 {
23625 child_idx += 1;
23626 }
23627 }
23628 b"selection" => {
23629 f_selection.push(Selection::from_xml(reader, &e, false)?);
23630 #[cfg(feature = "extra-children")]
23631 {
23632 child_idx += 1;
23633 }
23634 }
23635 #[cfg(feature = "sml-pivot")]
23636 b"pivotSelection" => {
23637 f_pivot_selection
23638 .push(CTPivotSelection::from_xml(reader, &e, false)?);
23639 #[cfg(feature = "extra-children")]
23640 {
23641 child_idx += 1;
23642 }
23643 }
23644 #[cfg(feature = "sml-extensions")]
23645 b"extLst" => {
23646 f_extension_list =
23647 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
23648 #[cfg(feature = "extra-children")]
23649 {
23650 child_idx += 1;
23651 }
23652 }
23653 #[cfg(feature = "extra-children")]
23654 _ => {
23655 let elem = RawXmlElement::from_reader(reader, &e)?;
23657 extra_children.push(PositionedNode::new(
23658 child_idx,
23659 RawXmlNode::Element(elem),
23660 ));
23661 child_idx += 1;
23662 }
23663 #[cfg(not(feature = "extra-children"))]
23664 _ => {
23665 skip_element(reader)?;
23667 }
23668 }
23669 }
23670 Event::Empty(e) => {
23671 match e.local_name().as_ref() {
23672 #[cfg(feature = "sml-structure")]
23673 b"pane" => {
23674 f_pane = Some(Box::new(Pane::from_xml(reader, &e, true)?));
23675 #[cfg(feature = "extra-children")]
23676 {
23677 child_idx += 1;
23678 }
23679 }
23680 b"selection" => {
23681 f_selection.push(Selection::from_xml(reader, &e, true)?);
23682 #[cfg(feature = "extra-children")]
23683 {
23684 child_idx += 1;
23685 }
23686 }
23687 #[cfg(feature = "sml-pivot")]
23688 b"pivotSelection" => {
23689 f_pivot_selection
23690 .push(CTPivotSelection::from_xml(reader, &e, true)?);
23691 #[cfg(feature = "extra-children")]
23692 {
23693 child_idx += 1;
23694 }
23695 }
23696 #[cfg(feature = "sml-extensions")]
23697 b"extLst" => {
23698 f_extension_list =
23699 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
23700 #[cfg(feature = "extra-children")]
23701 {
23702 child_idx += 1;
23703 }
23704 }
23705 #[cfg(feature = "extra-children")]
23706 _ => {
23707 let elem = RawXmlElement::from_empty(&e);
23709 extra_children.push(PositionedNode::new(
23710 child_idx,
23711 RawXmlNode::Element(elem),
23712 ));
23713 child_idx += 1;
23714 }
23715 #[cfg(not(feature = "extra-children"))]
23716 _ => {}
23717 }
23718 }
23719 Event::End(_) => break,
23720 Event::Eof => break,
23721 _ => {}
23722 }
23723 buf.clear();
23724 }
23725 }
23726
23727 Ok(Self {
23728 #[cfg(feature = "sml-protection")]
23729 window_protection: f_window_protection,
23730 #[cfg(feature = "sml-formulas")]
23731 show_formulas: f_show_formulas,
23732 #[cfg(feature = "sml-styling")]
23733 show_grid_lines: f_show_grid_lines,
23734 #[cfg(feature = "sml-styling")]
23735 show_row_col_headers: f_show_row_col_headers,
23736 #[cfg(feature = "sml-styling")]
23737 show_zeros: f_show_zeros,
23738 #[cfg(feature = "sml-i18n")]
23739 right_to_left: f_right_to_left,
23740 tab_selected: f_tab_selected,
23741 #[cfg(feature = "sml-layout")]
23742 show_ruler: f_show_ruler,
23743 #[cfg(feature = "sml-structure")]
23744 show_outline_symbols: f_show_outline_symbols,
23745 #[cfg(feature = "sml-styling")]
23746 default_grid_color: f_default_grid_color,
23747 #[cfg(feature = "sml-layout")]
23748 show_white_space: f_show_white_space,
23749 view: f_view,
23750 top_left_cell: f_top_left_cell,
23751 #[cfg(feature = "sml-styling")]
23752 color_id: f_color_id,
23753 zoom_scale: f_zoom_scale,
23754 zoom_scale_normal: f_zoom_scale_normal,
23755 #[cfg(feature = "sml-layout")]
23756 zoom_scale_sheet_layout_view: f_zoom_scale_sheet_layout_view,
23757 #[cfg(feature = "sml-layout")]
23758 zoom_scale_page_layout_view: f_zoom_scale_page_layout_view,
23759 workbook_view_id: f_workbook_view_id
23760 .ok_or_else(|| ParseError::MissingAttribute("workbookViewId".to_string()))?,
23761 #[cfg(feature = "sml-structure")]
23762 pane: f_pane,
23763 selection: f_selection,
23764 #[cfg(feature = "sml-pivot")]
23765 pivot_selection: f_pivot_selection,
23766 #[cfg(feature = "sml-extensions")]
23767 extension_list: f_extension_list,
23768 #[cfg(feature = "extra-attrs")]
23769 extra_attrs,
23770 #[cfg(feature = "extra-children")]
23771 extra_children,
23772 })
23773 }
23774}
23775
23776impl FromXml for Pane {
23777 fn from_xml<R: BufRead>(
23778 reader: &mut Reader<R>,
23779 start_tag: &BytesStart,
23780 is_empty: bool,
23781 ) -> Result<Self, ParseError> {
23782 #[cfg(feature = "sml-structure")]
23783 let mut f_x_split = None;
23784 #[cfg(feature = "sml-structure")]
23785 let mut f_y_split = None;
23786 #[cfg(feature = "sml-structure")]
23787 let mut f_top_left_cell = None;
23788 #[cfg(feature = "sml-structure")]
23789 let mut f_active_pane = None;
23790 #[cfg(feature = "sml-structure")]
23791 let mut f_state = None;
23792 #[cfg(feature = "extra-attrs")]
23793 let mut extra_attrs = std::collections::HashMap::new();
23794
23795 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
23797 let val = String::from_utf8_lossy(&attr.value);
23798 match attr.key.local_name().as_ref() {
23799 #[cfg(feature = "sml-structure")]
23800 b"xSplit" => {
23801 f_x_split = val.parse().ok();
23802 }
23803 #[cfg(feature = "sml-structure")]
23804 b"ySplit" => {
23805 f_y_split = val.parse().ok();
23806 }
23807 #[cfg(feature = "sml-structure")]
23808 b"topLeftCell" => {
23809 f_top_left_cell = Some(val.into_owned());
23810 }
23811 #[cfg(feature = "sml-structure")]
23812 b"activePane" => {
23813 f_active_pane = val.parse().ok();
23814 }
23815 #[cfg(feature = "sml-structure")]
23816 b"state" => {
23817 f_state = val.parse().ok();
23818 }
23819 #[cfg(feature = "extra-attrs")]
23820 unknown => {
23821 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
23822 extra_attrs.insert(key, val.into_owned());
23823 }
23824 #[cfg(not(feature = "extra-attrs"))]
23825 _ => {}
23826 }
23827 }
23828
23829 if !is_empty {
23830 let mut buf = Vec::new();
23831 loop {
23832 match reader.read_event_into(&mut buf)? {
23833 Event::End(_) => break,
23834 Event::Eof => break,
23835 _ => {}
23836 }
23837 buf.clear();
23838 }
23839 }
23840
23841 Ok(Self {
23842 #[cfg(feature = "sml-structure")]
23843 x_split: f_x_split,
23844 #[cfg(feature = "sml-structure")]
23845 y_split: f_y_split,
23846 #[cfg(feature = "sml-structure")]
23847 top_left_cell: f_top_left_cell,
23848 #[cfg(feature = "sml-structure")]
23849 active_pane: f_active_pane,
23850 #[cfg(feature = "sml-structure")]
23851 state: f_state,
23852 #[cfg(feature = "extra-attrs")]
23853 extra_attrs,
23854 })
23855 }
23856}
23857
23858impl FromXml for CTPivotSelection {
23859 fn from_xml<R: BufRead>(
23860 reader: &mut Reader<R>,
23861 start_tag: &BytesStart,
23862 is_empty: bool,
23863 ) -> Result<Self, ParseError> {
23864 let mut f_pane = None;
23865 let mut f_show_header = None;
23866 let mut f_label = None;
23867 let mut f_data = None;
23868 let mut f_extendable = None;
23869 let mut f_count = None;
23870 let mut f_axis = None;
23871 let mut f_dimension = None;
23872 let mut f_start = None;
23873 let mut f_start_column = None;
23874 let mut f_end_column = None;
23875 let mut f_active_row = None;
23876 let mut f_active_col = None;
23877 let mut f_previous_row = None;
23878 let mut f_previous_col = None;
23879 let mut f_click = None;
23880 let mut f_id = None;
23881 let mut f_pivot_area: Option<Box<PivotArea>> = None;
23882 #[cfg(feature = "extra-attrs")]
23883 let mut extra_attrs = std::collections::HashMap::new();
23884 #[cfg(feature = "extra-children")]
23885 let mut extra_children = Vec::new();
23886 #[cfg(feature = "extra-children")]
23887 let mut child_idx: usize = 0;
23888
23889 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
23891 let val = String::from_utf8_lossy(&attr.value);
23892 match attr.key.local_name().as_ref() {
23893 b"pane" => {
23894 f_pane = val.parse().ok();
23895 }
23896 b"showHeader" => {
23897 f_show_header = Some(val == "true" || val == "1");
23898 }
23899 b"label" => {
23900 f_label = Some(val == "true" || val == "1");
23901 }
23902 b"data" => {
23903 f_data = Some(val == "true" || val == "1");
23904 }
23905 b"extendable" => {
23906 f_extendable = Some(val == "true" || val == "1");
23907 }
23908 b"count" => {
23909 f_count = val.parse().ok();
23910 }
23911 b"axis" => {
23912 f_axis = val.parse().ok();
23913 }
23914 b"dimension" => {
23915 f_dimension = val.parse().ok();
23916 }
23917 b"start" => {
23918 f_start = val.parse().ok();
23919 }
23920 b"min" => {
23921 f_start_column = val.parse().ok();
23922 }
23923 b"max" => {
23924 f_end_column = val.parse().ok();
23925 }
23926 b"activeRow" => {
23927 f_active_row = val.parse().ok();
23928 }
23929 b"activeCol" => {
23930 f_active_col = val.parse().ok();
23931 }
23932 b"previousRow" => {
23933 f_previous_row = val.parse().ok();
23934 }
23935 b"previousCol" => {
23936 f_previous_col = val.parse().ok();
23937 }
23938 b"click" => {
23939 f_click = val.parse().ok();
23940 }
23941 b"id" => {
23942 f_id = Some(val.into_owned());
23943 }
23944 #[cfg(feature = "extra-attrs")]
23945 unknown => {
23946 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
23947 extra_attrs.insert(key, val.into_owned());
23948 }
23949 #[cfg(not(feature = "extra-attrs"))]
23950 _ => {}
23951 }
23952 }
23953
23954 if !is_empty {
23956 let mut buf = Vec::new();
23957 loop {
23958 match reader.read_event_into(&mut buf)? {
23959 Event::Start(e) => {
23960 match e.local_name().as_ref() {
23961 b"pivotArea" => {
23962 f_pivot_area =
23963 Some(Box::new(PivotArea::from_xml(reader, &e, false)?));
23964 #[cfg(feature = "extra-children")]
23965 {
23966 child_idx += 1;
23967 }
23968 }
23969 #[cfg(feature = "extra-children")]
23970 _ => {
23971 let elem = RawXmlElement::from_reader(reader, &e)?;
23973 extra_children.push(PositionedNode::new(
23974 child_idx,
23975 RawXmlNode::Element(elem),
23976 ));
23977 child_idx += 1;
23978 }
23979 #[cfg(not(feature = "extra-children"))]
23980 _ => {
23981 skip_element(reader)?;
23983 }
23984 }
23985 }
23986 Event::Empty(e) => {
23987 match e.local_name().as_ref() {
23988 b"pivotArea" => {
23989 f_pivot_area =
23990 Some(Box::new(PivotArea::from_xml(reader, &e, true)?));
23991 #[cfg(feature = "extra-children")]
23992 {
23993 child_idx += 1;
23994 }
23995 }
23996 #[cfg(feature = "extra-children")]
23997 _ => {
23998 let elem = RawXmlElement::from_empty(&e);
24000 extra_children.push(PositionedNode::new(
24001 child_idx,
24002 RawXmlNode::Element(elem),
24003 ));
24004 child_idx += 1;
24005 }
24006 #[cfg(not(feature = "extra-children"))]
24007 _ => {}
24008 }
24009 }
24010 Event::End(_) => break,
24011 Event::Eof => break,
24012 _ => {}
24013 }
24014 buf.clear();
24015 }
24016 }
24017
24018 Ok(Self {
24019 pane: f_pane,
24020 show_header: f_show_header,
24021 label: f_label,
24022 data: f_data,
24023 extendable: f_extendable,
24024 count: f_count,
24025 axis: f_axis,
24026 dimension: f_dimension,
24027 start: f_start,
24028 start_column: f_start_column,
24029 end_column: f_end_column,
24030 active_row: f_active_row,
24031 active_col: f_active_col,
24032 previous_row: f_previous_row,
24033 previous_col: f_previous_col,
24034 click: f_click,
24035 id: f_id,
24036 pivot_area: f_pivot_area
24037 .ok_or_else(|| ParseError::MissingAttribute("pivotArea".to_string()))?,
24038 #[cfg(feature = "extra-attrs")]
24039 extra_attrs,
24040 #[cfg(feature = "extra-children")]
24041 extra_children,
24042 })
24043 }
24044}
24045
24046impl FromXml for Selection {
24047 fn from_xml<R: BufRead>(
24048 reader: &mut Reader<R>,
24049 start_tag: &BytesStart,
24050 is_empty: bool,
24051 ) -> Result<Self, ParseError> {
24052 let mut f_pane = None;
24053 let mut f_active_cell = None;
24054 let mut f_active_cell_id = None;
24055 let mut f_square_reference = None;
24056 #[cfg(feature = "extra-attrs")]
24057 let mut extra_attrs = std::collections::HashMap::new();
24058
24059 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24061 let val = String::from_utf8_lossy(&attr.value);
24062 match attr.key.local_name().as_ref() {
24063 b"pane" => {
24064 f_pane = val.parse().ok();
24065 }
24066 b"activeCell" => {
24067 f_active_cell = Some(val.into_owned());
24068 }
24069 b"activeCellId" => {
24070 f_active_cell_id = val.parse().ok();
24071 }
24072 b"sqref" => {
24073 f_square_reference = Some(val.into_owned());
24074 }
24075 #[cfg(feature = "extra-attrs")]
24076 unknown => {
24077 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24078 extra_attrs.insert(key, val.into_owned());
24079 }
24080 #[cfg(not(feature = "extra-attrs"))]
24081 _ => {}
24082 }
24083 }
24084
24085 if !is_empty {
24086 let mut buf = Vec::new();
24087 loop {
24088 match reader.read_event_into(&mut buf)? {
24089 Event::End(_) => break,
24090 Event::Eof => break,
24091 _ => {}
24092 }
24093 buf.clear();
24094 }
24095 }
24096
24097 Ok(Self {
24098 pane: f_pane,
24099 active_cell: f_active_cell,
24100 active_cell_id: f_active_cell_id,
24101 square_reference: f_square_reference,
24102 #[cfg(feature = "extra-attrs")]
24103 extra_attrs,
24104 })
24105 }
24106}
24107
24108impl FromXml for PageBreaks {
24109 fn from_xml<R: BufRead>(
24110 reader: &mut Reader<R>,
24111 start_tag: &BytesStart,
24112 is_empty: bool,
24113 ) -> Result<Self, ParseError> {
24114 #[cfg(feature = "sml-layout")]
24115 let mut f_count = None;
24116 #[cfg(feature = "sml-layout")]
24117 let mut f_manual_break_count = None;
24118 #[cfg(feature = "sml-layout")]
24119 let mut f_brk = Vec::new();
24120 #[cfg(feature = "extra-attrs")]
24121 let mut extra_attrs = std::collections::HashMap::new();
24122 #[cfg(feature = "extra-children")]
24123 let mut extra_children = Vec::new();
24124 #[cfg(feature = "extra-children")]
24125 let mut child_idx: usize = 0;
24126
24127 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24129 let val = String::from_utf8_lossy(&attr.value);
24130 match attr.key.local_name().as_ref() {
24131 #[cfg(feature = "sml-layout")]
24132 b"count" => {
24133 f_count = val.parse().ok();
24134 }
24135 #[cfg(feature = "sml-layout")]
24136 b"manualBreakCount" => {
24137 f_manual_break_count = val.parse().ok();
24138 }
24139 #[cfg(feature = "extra-attrs")]
24140 unknown => {
24141 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24142 extra_attrs.insert(key, val.into_owned());
24143 }
24144 #[cfg(not(feature = "extra-attrs"))]
24145 _ => {}
24146 }
24147 }
24148
24149 if !is_empty {
24151 let mut buf = Vec::new();
24152 loop {
24153 match reader.read_event_into(&mut buf)? {
24154 Event::Start(e) => {
24155 match e.local_name().as_ref() {
24156 #[cfg(feature = "sml-layout")]
24157 b"brk" => {
24158 f_brk.push(PageBreak::from_xml(reader, &e, false)?);
24159 #[cfg(feature = "extra-children")]
24160 {
24161 child_idx += 1;
24162 }
24163 }
24164 #[cfg(feature = "extra-children")]
24165 _ => {
24166 let elem = RawXmlElement::from_reader(reader, &e)?;
24168 extra_children.push(PositionedNode::new(
24169 child_idx,
24170 RawXmlNode::Element(elem),
24171 ));
24172 child_idx += 1;
24173 }
24174 #[cfg(not(feature = "extra-children"))]
24175 _ => {
24176 skip_element(reader)?;
24178 }
24179 }
24180 }
24181 Event::Empty(e) => {
24182 match e.local_name().as_ref() {
24183 #[cfg(feature = "sml-layout")]
24184 b"brk" => {
24185 f_brk.push(PageBreak::from_xml(reader, &e, true)?);
24186 #[cfg(feature = "extra-children")]
24187 {
24188 child_idx += 1;
24189 }
24190 }
24191 #[cfg(feature = "extra-children")]
24192 _ => {
24193 let elem = RawXmlElement::from_empty(&e);
24195 extra_children.push(PositionedNode::new(
24196 child_idx,
24197 RawXmlNode::Element(elem),
24198 ));
24199 child_idx += 1;
24200 }
24201 #[cfg(not(feature = "extra-children"))]
24202 _ => {}
24203 }
24204 }
24205 Event::End(_) => break,
24206 Event::Eof => break,
24207 _ => {}
24208 }
24209 buf.clear();
24210 }
24211 }
24212
24213 Ok(Self {
24214 #[cfg(feature = "sml-layout")]
24215 count: f_count,
24216 #[cfg(feature = "sml-layout")]
24217 manual_break_count: f_manual_break_count,
24218 #[cfg(feature = "sml-layout")]
24219 brk: f_brk,
24220 #[cfg(feature = "extra-attrs")]
24221 extra_attrs,
24222 #[cfg(feature = "extra-children")]
24223 extra_children,
24224 })
24225 }
24226}
24227
24228impl FromXml for PageBreak {
24229 fn from_xml<R: BufRead>(
24230 reader: &mut Reader<R>,
24231 start_tag: &BytesStart,
24232 is_empty: bool,
24233 ) -> Result<Self, ParseError> {
24234 let mut f_id = None;
24235 let mut f_start_column = None;
24236 let mut f_end_column = None;
24237 let mut f_man = None;
24238 let mut f_pt = None;
24239 #[cfg(feature = "extra-attrs")]
24240 let mut extra_attrs = std::collections::HashMap::new();
24241
24242 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24244 let val = String::from_utf8_lossy(&attr.value);
24245 match attr.key.local_name().as_ref() {
24246 b"id" => {
24247 f_id = val.parse().ok();
24248 }
24249 b"min" => {
24250 f_start_column = val.parse().ok();
24251 }
24252 b"max" => {
24253 f_end_column = val.parse().ok();
24254 }
24255 b"man" => {
24256 f_man = Some(val == "true" || val == "1");
24257 }
24258 b"pt" => {
24259 f_pt = Some(val == "true" || val == "1");
24260 }
24261 #[cfg(feature = "extra-attrs")]
24262 unknown => {
24263 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24264 extra_attrs.insert(key, val.into_owned());
24265 }
24266 #[cfg(not(feature = "extra-attrs"))]
24267 _ => {}
24268 }
24269 }
24270
24271 if !is_empty {
24272 let mut buf = Vec::new();
24273 loop {
24274 match reader.read_event_into(&mut buf)? {
24275 Event::End(_) => break,
24276 Event::Eof => break,
24277 _ => {}
24278 }
24279 buf.clear();
24280 }
24281 }
24282
24283 Ok(Self {
24284 id: f_id,
24285 start_column: f_start_column,
24286 end_column: f_end_column,
24287 man: f_man,
24288 pt: f_pt,
24289 #[cfg(feature = "extra-attrs")]
24290 extra_attrs,
24291 })
24292 }
24293}
24294
24295impl FromXml for OutlineProperties {
24296 fn from_xml<R: BufRead>(
24297 reader: &mut Reader<R>,
24298 start_tag: &BytesStart,
24299 is_empty: bool,
24300 ) -> Result<Self, ParseError> {
24301 let mut f_apply_styles = None;
24302 let mut f_summary_below = None;
24303 let mut f_summary_right = None;
24304 let mut f_show_outline_symbols = None;
24305 #[cfg(feature = "extra-attrs")]
24306 let mut extra_attrs = std::collections::HashMap::new();
24307
24308 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24310 let val = String::from_utf8_lossy(&attr.value);
24311 match attr.key.local_name().as_ref() {
24312 b"applyStyles" => {
24313 f_apply_styles = Some(val == "true" || val == "1");
24314 }
24315 b"summaryBelow" => {
24316 f_summary_below = Some(val == "true" || val == "1");
24317 }
24318 b"summaryRight" => {
24319 f_summary_right = Some(val == "true" || val == "1");
24320 }
24321 b"showOutlineSymbols" => {
24322 f_show_outline_symbols = Some(val == "true" || val == "1");
24323 }
24324 #[cfg(feature = "extra-attrs")]
24325 unknown => {
24326 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24327 extra_attrs.insert(key, val.into_owned());
24328 }
24329 #[cfg(not(feature = "extra-attrs"))]
24330 _ => {}
24331 }
24332 }
24333
24334 if !is_empty {
24335 let mut buf = Vec::new();
24336 loop {
24337 match reader.read_event_into(&mut buf)? {
24338 Event::End(_) => break,
24339 Event::Eof => break,
24340 _ => {}
24341 }
24342 buf.clear();
24343 }
24344 }
24345
24346 Ok(Self {
24347 apply_styles: f_apply_styles,
24348 summary_below: f_summary_below,
24349 summary_right: f_summary_right,
24350 show_outline_symbols: f_show_outline_symbols,
24351 #[cfg(feature = "extra-attrs")]
24352 extra_attrs,
24353 })
24354 }
24355}
24356
24357impl FromXml for PageSetupProperties {
24358 fn from_xml<R: BufRead>(
24359 reader: &mut Reader<R>,
24360 start_tag: &BytesStart,
24361 is_empty: bool,
24362 ) -> Result<Self, ParseError> {
24363 let mut f_auto_page_breaks = None;
24364 let mut f_fit_to_page = None;
24365 #[cfg(feature = "extra-attrs")]
24366 let mut extra_attrs = std::collections::HashMap::new();
24367
24368 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24370 let val = String::from_utf8_lossy(&attr.value);
24371 match attr.key.local_name().as_ref() {
24372 b"autoPageBreaks" => {
24373 f_auto_page_breaks = Some(val == "true" || val == "1");
24374 }
24375 b"fitToPage" => {
24376 f_fit_to_page = Some(val == "true" || val == "1");
24377 }
24378 #[cfg(feature = "extra-attrs")]
24379 unknown => {
24380 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24381 extra_attrs.insert(key, val.into_owned());
24382 }
24383 #[cfg(not(feature = "extra-attrs"))]
24384 _ => {}
24385 }
24386 }
24387
24388 if !is_empty {
24389 let mut buf = Vec::new();
24390 loop {
24391 match reader.read_event_into(&mut buf)? {
24392 Event::End(_) => break,
24393 Event::Eof => break,
24394 _ => {}
24395 }
24396 buf.clear();
24397 }
24398 }
24399
24400 Ok(Self {
24401 auto_page_breaks: f_auto_page_breaks,
24402 fit_to_page: f_fit_to_page,
24403 #[cfg(feature = "extra-attrs")]
24404 extra_attrs,
24405 })
24406 }
24407}
24408
24409impl FromXml for CTDataConsolidate {
24410 fn from_xml<R: BufRead>(
24411 reader: &mut Reader<R>,
24412 start_tag: &BytesStart,
24413 is_empty: bool,
24414 ) -> Result<Self, ParseError> {
24415 let mut f_function = None;
24416 let mut f_start_labels = None;
24417 let mut f_left_labels = None;
24418 let mut f_top_labels = None;
24419 let mut f_link = None;
24420 let mut f_data_refs = None;
24421 #[cfg(feature = "extra-attrs")]
24422 let mut extra_attrs = std::collections::HashMap::new();
24423 #[cfg(feature = "extra-children")]
24424 let mut extra_children = Vec::new();
24425 #[cfg(feature = "extra-children")]
24426 let mut child_idx: usize = 0;
24427
24428 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24430 let val = String::from_utf8_lossy(&attr.value);
24431 match attr.key.local_name().as_ref() {
24432 b"function" => {
24433 f_function = val.parse().ok();
24434 }
24435 b"startLabels" => {
24436 f_start_labels = Some(val == "true" || val == "1");
24437 }
24438 b"leftLabels" => {
24439 f_left_labels = Some(val == "true" || val == "1");
24440 }
24441 b"topLabels" => {
24442 f_top_labels = Some(val == "true" || val == "1");
24443 }
24444 b"link" => {
24445 f_link = Some(val == "true" || val == "1");
24446 }
24447 #[cfg(feature = "extra-attrs")]
24448 unknown => {
24449 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24450 extra_attrs.insert(key, val.into_owned());
24451 }
24452 #[cfg(not(feature = "extra-attrs"))]
24453 _ => {}
24454 }
24455 }
24456
24457 if !is_empty {
24459 let mut buf = Vec::new();
24460 loop {
24461 match reader.read_event_into(&mut buf)? {
24462 Event::Start(e) => {
24463 match e.local_name().as_ref() {
24464 b"dataRefs" => {
24465 f_data_refs =
24466 Some(Box::new(CTDataRefs::from_xml(reader, &e, false)?));
24467 #[cfg(feature = "extra-children")]
24468 {
24469 child_idx += 1;
24470 }
24471 }
24472 #[cfg(feature = "extra-children")]
24473 _ => {
24474 let elem = RawXmlElement::from_reader(reader, &e)?;
24476 extra_children.push(PositionedNode::new(
24477 child_idx,
24478 RawXmlNode::Element(elem),
24479 ));
24480 child_idx += 1;
24481 }
24482 #[cfg(not(feature = "extra-children"))]
24483 _ => {
24484 skip_element(reader)?;
24486 }
24487 }
24488 }
24489 Event::Empty(e) => {
24490 match e.local_name().as_ref() {
24491 b"dataRefs" => {
24492 f_data_refs =
24493 Some(Box::new(CTDataRefs::from_xml(reader, &e, true)?));
24494 #[cfg(feature = "extra-children")]
24495 {
24496 child_idx += 1;
24497 }
24498 }
24499 #[cfg(feature = "extra-children")]
24500 _ => {
24501 let elem = RawXmlElement::from_empty(&e);
24503 extra_children.push(PositionedNode::new(
24504 child_idx,
24505 RawXmlNode::Element(elem),
24506 ));
24507 child_idx += 1;
24508 }
24509 #[cfg(not(feature = "extra-children"))]
24510 _ => {}
24511 }
24512 }
24513 Event::End(_) => break,
24514 Event::Eof => break,
24515 _ => {}
24516 }
24517 buf.clear();
24518 }
24519 }
24520
24521 Ok(Self {
24522 function: f_function,
24523 start_labels: f_start_labels,
24524 left_labels: f_left_labels,
24525 top_labels: f_top_labels,
24526 link: f_link,
24527 data_refs: f_data_refs,
24528 #[cfg(feature = "extra-attrs")]
24529 extra_attrs,
24530 #[cfg(feature = "extra-children")]
24531 extra_children,
24532 })
24533 }
24534}
24535
24536impl FromXml for CTDataRefs {
24537 fn from_xml<R: BufRead>(
24538 reader: &mut Reader<R>,
24539 start_tag: &BytesStart,
24540 is_empty: bool,
24541 ) -> Result<Self, ParseError> {
24542 let mut f_count = None;
24543 let mut f_data_ref = Vec::new();
24544 #[cfg(feature = "extra-attrs")]
24545 let mut extra_attrs = std::collections::HashMap::new();
24546 #[cfg(feature = "extra-children")]
24547 let mut extra_children = Vec::new();
24548 #[cfg(feature = "extra-children")]
24549 let mut child_idx: usize = 0;
24550
24551 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24553 let val = String::from_utf8_lossy(&attr.value);
24554 match attr.key.local_name().as_ref() {
24555 b"count" => {
24556 f_count = val.parse().ok();
24557 }
24558 #[cfg(feature = "extra-attrs")]
24559 unknown => {
24560 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24561 extra_attrs.insert(key, val.into_owned());
24562 }
24563 #[cfg(not(feature = "extra-attrs"))]
24564 _ => {}
24565 }
24566 }
24567
24568 if !is_empty {
24570 let mut buf = Vec::new();
24571 loop {
24572 match reader.read_event_into(&mut buf)? {
24573 Event::Start(e) => {
24574 match e.local_name().as_ref() {
24575 b"dataRef" => {
24576 f_data_ref.push(CTDataRef::from_xml(reader, &e, false)?);
24577 #[cfg(feature = "extra-children")]
24578 {
24579 child_idx += 1;
24580 }
24581 }
24582 #[cfg(feature = "extra-children")]
24583 _ => {
24584 let elem = RawXmlElement::from_reader(reader, &e)?;
24586 extra_children.push(PositionedNode::new(
24587 child_idx,
24588 RawXmlNode::Element(elem),
24589 ));
24590 child_idx += 1;
24591 }
24592 #[cfg(not(feature = "extra-children"))]
24593 _ => {
24594 skip_element(reader)?;
24596 }
24597 }
24598 }
24599 Event::Empty(e) => {
24600 match e.local_name().as_ref() {
24601 b"dataRef" => {
24602 f_data_ref.push(CTDataRef::from_xml(reader, &e, true)?);
24603 #[cfg(feature = "extra-children")]
24604 {
24605 child_idx += 1;
24606 }
24607 }
24608 #[cfg(feature = "extra-children")]
24609 _ => {
24610 let elem = RawXmlElement::from_empty(&e);
24612 extra_children.push(PositionedNode::new(
24613 child_idx,
24614 RawXmlNode::Element(elem),
24615 ));
24616 child_idx += 1;
24617 }
24618 #[cfg(not(feature = "extra-children"))]
24619 _ => {}
24620 }
24621 }
24622 Event::End(_) => break,
24623 Event::Eof => break,
24624 _ => {}
24625 }
24626 buf.clear();
24627 }
24628 }
24629
24630 Ok(Self {
24631 count: f_count,
24632 data_ref: f_data_ref,
24633 #[cfg(feature = "extra-attrs")]
24634 extra_attrs,
24635 #[cfg(feature = "extra-children")]
24636 extra_children,
24637 })
24638 }
24639}
24640
24641impl FromXml for CTDataRef {
24642 fn from_xml<R: BufRead>(
24643 reader: &mut Reader<R>,
24644 start_tag: &BytesStart,
24645 is_empty: bool,
24646 ) -> Result<Self, ParseError> {
24647 let mut f_reference = None;
24648 let mut f_name = None;
24649 let mut f_sheet = None;
24650 let mut f_id = None;
24651 #[cfg(feature = "extra-attrs")]
24652 let mut extra_attrs = std::collections::HashMap::new();
24653
24654 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24656 let val = String::from_utf8_lossy(&attr.value);
24657 match attr.key.local_name().as_ref() {
24658 b"ref" => {
24659 f_reference = Some(val.into_owned());
24660 }
24661 b"name" => {
24662 f_name = Some(val.into_owned());
24663 }
24664 b"sheet" => {
24665 f_sheet = Some(val.into_owned());
24666 }
24667 b"id" => {
24668 f_id = Some(val.into_owned());
24669 }
24670 #[cfg(feature = "extra-attrs")]
24671 unknown => {
24672 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24673 extra_attrs.insert(key, val.into_owned());
24674 }
24675 #[cfg(not(feature = "extra-attrs"))]
24676 _ => {}
24677 }
24678 }
24679
24680 if !is_empty {
24681 let mut buf = Vec::new();
24682 loop {
24683 match reader.read_event_into(&mut buf)? {
24684 Event::End(_) => break,
24685 Event::Eof => break,
24686 _ => {}
24687 }
24688 buf.clear();
24689 }
24690 }
24691
24692 Ok(Self {
24693 reference: f_reference,
24694 name: f_name,
24695 sheet: f_sheet,
24696 id: f_id,
24697 #[cfg(feature = "extra-attrs")]
24698 extra_attrs,
24699 })
24700 }
24701}
24702
24703impl FromXml for MergedCells {
24704 fn from_xml<R: BufRead>(
24705 reader: &mut Reader<R>,
24706 start_tag: &BytesStart,
24707 is_empty: bool,
24708 ) -> Result<Self, ParseError> {
24709 let mut f_count = None;
24710 let mut f_merge_cell = Vec::new();
24711 #[cfg(feature = "extra-attrs")]
24712 let mut extra_attrs = std::collections::HashMap::new();
24713 #[cfg(feature = "extra-children")]
24714 let mut extra_children = Vec::new();
24715 #[cfg(feature = "extra-children")]
24716 let mut child_idx: usize = 0;
24717
24718 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24720 let val = String::from_utf8_lossy(&attr.value);
24721 match attr.key.local_name().as_ref() {
24722 b"count" => {
24723 f_count = val.parse().ok();
24724 }
24725 #[cfg(feature = "extra-attrs")]
24726 unknown => {
24727 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24728 extra_attrs.insert(key, val.into_owned());
24729 }
24730 #[cfg(not(feature = "extra-attrs"))]
24731 _ => {}
24732 }
24733 }
24734
24735 if !is_empty {
24737 let mut buf = Vec::new();
24738 loop {
24739 match reader.read_event_into(&mut buf)? {
24740 Event::Start(e) => {
24741 match e.local_name().as_ref() {
24742 b"mergeCell" => {
24743 f_merge_cell.push(MergedCell::from_xml(reader, &e, false)?);
24744 #[cfg(feature = "extra-children")]
24745 {
24746 child_idx += 1;
24747 }
24748 }
24749 #[cfg(feature = "extra-children")]
24750 _ => {
24751 let elem = RawXmlElement::from_reader(reader, &e)?;
24753 extra_children.push(PositionedNode::new(
24754 child_idx,
24755 RawXmlNode::Element(elem),
24756 ));
24757 child_idx += 1;
24758 }
24759 #[cfg(not(feature = "extra-children"))]
24760 _ => {
24761 skip_element(reader)?;
24763 }
24764 }
24765 }
24766 Event::Empty(e) => {
24767 match e.local_name().as_ref() {
24768 b"mergeCell" => {
24769 f_merge_cell.push(MergedCell::from_xml(reader, &e, true)?);
24770 #[cfg(feature = "extra-children")]
24771 {
24772 child_idx += 1;
24773 }
24774 }
24775 #[cfg(feature = "extra-children")]
24776 _ => {
24777 let elem = RawXmlElement::from_empty(&e);
24779 extra_children.push(PositionedNode::new(
24780 child_idx,
24781 RawXmlNode::Element(elem),
24782 ));
24783 child_idx += 1;
24784 }
24785 #[cfg(not(feature = "extra-children"))]
24786 _ => {}
24787 }
24788 }
24789 Event::End(_) => break,
24790 Event::Eof => break,
24791 _ => {}
24792 }
24793 buf.clear();
24794 }
24795 }
24796
24797 Ok(Self {
24798 count: f_count,
24799 merge_cell: f_merge_cell,
24800 #[cfg(feature = "extra-attrs")]
24801 extra_attrs,
24802 #[cfg(feature = "extra-children")]
24803 extra_children,
24804 })
24805 }
24806}
24807
24808impl FromXml for MergedCell {
24809 fn from_xml<R: BufRead>(
24810 reader: &mut Reader<R>,
24811 start_tag: &BytesStart,
24812 is_empty: bool,
24813 ) -> Result<Self, ParseError> {
24814 let mut f_reference: Option<Reference> = None;
24815 #[cfg(feature = "extra-attrs")]
24816 let mut extra_attrs = std::collections::HashMap::new();
24817
24818 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24820 let val = String::from_utf8_lossy(&attr.value);
24821 match attr.key.local_name().as_ref() {
24822 b"ref" => {
24823 f_reference = Some(val.into_owned());
24824 }
24825 #[cfg(feature = "extra-attrs")]
24826 unknown => {
24827 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24828 extra_attrs.insert(key, val.into_owned());
24829 }
24830 #[cfg(not(feature = "extra-attrs"))]
24831 _ => {}
24832 }
24833 }
24834
24835 if !is_empty {
24836 let mut buf = Vec::new();
24837 loop {
24838 match reader.read_event_into(&mut buf)? {
24839 Event::End(_) => break,
24840 Event::Eof => break,
24841 _ => {}
24842 }
24843 buf.clear();
24844 }
24845 }
24846
24847 Ok(Self {
24848 reference: f_reference
24849 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
24850 #[cfg(feature = "extra-attrs")]
24851 extra_attrs,
24852 })
24853 }
24854}
24855
24856impl FromXml for SmartTags {
24857 fn from_xml<R: BufRead>(
24858 reader: &mut Reader<R>,
24859 start_tag: &BytesStart,
24860 is_empty: bool,
24861 ) -> Result<Self, ParseError> {
24862 let mut f_cell_smart_tags = Vec::new();
24863 #[cfg(feature = "extra-children")]
24864 let mut extra_children = Vec::new();
24865 #[cfg(feature = "extra-children")]
24866 let mut child_idx: usize = 0;
24867
24868 if !is_empty {
24870 let mut buf = Vec::new();
24871 loop {
24872 match reader.read_event_into(&mut buf)? {
24873 Event::Start(e) => {
24874 match e.local_name().as_ref() {
24875 b"cellSmartTags" => {
24876 f_cell_smart_tags.push(CellSmartTags::from_xml(reader, &e, false)?);
24877 #[cfg(feature = "extra-children")]
24878 {
24879 child_idx += 1;
24880 }
24881 }
24882 #[cfg(feature = "extra-children")]
24883 _ => {
24884 let elem = RawXmlElement::from_reader(reader, &e)?;
24886 extra_children.push(PositionedNode::new(
24887 child_idx,
24888 RawXmlNode::Element(elem),
24889 ));
24890 child_idx += 1;
24891 }
24892 #[cfg(not(feature = "extra-children"))]
24893 _ => {
24894 skip_element(reader)?;
24896 }
24897 }
24898 }
24899 Event::Empty(e) => {
24900 match e.local_name().as_ref() {
24901 b"cellSmartTags" => {
24902 f_cell_smart_tags.push(CellSmartTags::from_xml(reader, &e, true)?);
24903 #[cfg(feature = "extra-children")]
24904 {
24905 child_idx += 1;
24906 }
24907 }
24908 #[cfg(feature = "extra-children")]
24909 _ => {
24910 let elem = RawXmlElement::from_empty(&e);
24912 extra_children.push(PositionedNode::new(
24913 child_idx,
24914 RawXmlNode::Element(elem),
24915 ));
24916 child_idx += 1;
24917 }
24918 #[cfg(not(feature = "extra-children"))]
24919 _ => {}
24920 }
24921 }
24922 Event::End(_) => break,
24923 Event::Eof => break,
24924 _ => {}
24925 }
24926 buf.clear();
24927 }
24928 }
24929
24930 Ok(Self {
24931 cell_smart_tags: f_cell_smart_tags,
24932 #[cfg(feature = "extra-children")]
24933 extra_children,
24934 })
24935 }
24936}
24937
24938impl FromXml for CellSmartTags {
24939 fn from_xml<R: BufRead>(
24940 reader: &mut Reader<R>,
24941 start_tag: &BytesStart,
24942 is_empty: bool,
24943 ) -> Result<Self, ParseError> {
24944 let mut f_reference: Option<CellRef> = None;
24945 let mut f_cell_smart_tag = Vec::new();
24946 #[cfg(feature = "extra-attrs")]
24947 let mut extra_attrs = std::collections::HashMap::new();
24948 #[cfg(feature = "extra-children")]
24949 let mut extra_children = Vec::new();
24950 #[cfg(feature = "extra-children")]
24951 let mut child_idx: usize = 0;
24952
24953 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
24955 let val = String::from_utf8_lossy(&attr.value);
24956 match attr.key.local_name().as_ref() {
24957 b"r" => {
24958 f_reference = Some(val.into_owned());
24959 }
24960 #[cfg(feature = "extra-attrs")]
24961 unknown => {
24962 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
24963 extra_attrs.insert(key, val.into_owned());
24964 }
24965 #[cfg(not(feature = "extra-attrs"))]
24966 _ => {}
24967 }
24968 }
24969
24970 if !is_empty {
24972 let mut buf = Vec::new();
24973 loop {
24974 match reader.read_event_into(&mut buf)? {
24975 Event::Start(e) => {
24976 match e.local_name().as_ref() {
24977 b"cellSmartTag" => {
24978 f_cell_smart_tag.push(CellSmartTag::from_xml(reader, &e, false)?);
24979 #[cfg(feature = "extra-children")]
24980 {
24981 child_idx += 1;
24982 }
24983 }
24984 #[cfg(feature = "extra-children")]
24985 _ => {
24986 let elem = RawXmlElement::from_reader(reader, &e)?;
24988 extra_children.push(PositionedNode::new(
24989 child_idx,
24990 RawXmlNode::Element(elem),
24991 ));
24992 child_idx += 1;
24993 }
24994 #[cfg(not(feature = "extra-children"))]
24995 _ => {
24996 skip_element(reader)?;
24998 }
24999 }
25000 }
25001 Event::Empty(e) => {
25002 match e.local_name().as_ref() {
25003 b"cellSmartTag" => {
25004 f_cell_smart_tag.push(CellSmartTag::from_xml(reader, &e, true)?);
25005 #[cfg(feature = "extra-children")]
25006 {
25007 child_idx += 1;
25008 }
25009 }
25010 #[cfg(feature = "extra-children")]
25011 _ => {
25012 let elem = RawXmlElement::from_empty(&e);
25014 extra_children.push(PositionedNode::new(
25015 child_idx,
25016 RawXmlNode::Element(elem),
25017 ));
25018 child_idx += 1;
25019 }
25020 #[cfg(not(feature = "extra-children"))]
25021 _ => {}
25022 }
25023 }
25024 Event::End(_) => break,
25025 Event::Eof => break,
25026 _ => {}
25027 }
25028 buf.clear();
25029 }
25030 }
25031
25032 Ok(Self {
25033 reference: f_reference.ok_or_else(|| ParseError::MissingAttribute("r".to_string()))?,
25034 cell_smart_tag: f_cell_smart_tag,
25035 #[cfg(feature = "extra-attrs")]
25036 extra_attrs,
25037 #[cfg(feature = "extra-children")]
25038 extra_children,
25039 })
25040 }
25041}
25042
25043impl FromXml for CellSmartTag {
25044 fn from_xml<R: BufRead>(
25045 reader: &mut Reader<R>,
25046 start_tag: &BytesStart,
25047 is_empty: bool,
25048 ) -> Result<Self, ParseError> {
25049 let mut f_type: Option<u32> = None;
25050 let mut f_deleted = None;
25051 let mut f_xml_based = None;
25052 let mut f_cell_smart_tag_pr = Vec::new();
25053 #[cfg(feature = "extra-attrs")]
25054 let mut extra_attrs = std::collections::HashMap::new();
25055 #[cfg(feature = "extra-children")]
25056 let mut extra_children = Vec::new();
25057 #[cfg(feature = "extra-children")]
25058 let mut child_idx: usize = 0;
25059
25060 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
25062 let val = String::from_utf8_lossy(&attr.value);
25063 match attr.key.local_name().as_ref() {
25064 b"type" => {
25065 f_type = val.parse().ok();
25066 }
25067 b"deleted" => {
25068 f_deleted = Some(val == "true" || val == "1");
25069 }
25070 b"xmlBased" => {
25071 f_xml_based = Some(val == "true" || val == "1");
25072 }
25073 #[cfg(feature = "extra-attrs")]
25074 unknown => {
25075 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
25076 extra_attrs.insert(key, val.into_owned());
25077 }
25078 #[cfg(not(feature = "extra-attrs"))]
25079 _ => {}
25080 }
25081 }
25082
25083 if !is_empty {
25085 let mut buf = Vec::new();
25086 loop {
25087 match reader.read_event_into(&mut buf)? {
25088 Event::Start(e) => {
25089 match e.local_name().as_ref() {
25090 b"cellSmartTagPr" => {
25091 f_cell_smart_tag_pr
25092 .push(CTCellSmartTagPr::from_xml(reader, &e, false)?);
25093 #[cfg(feature = "extra-children")]
25094 {
25095 child_idx += 1;
25096 }
25097 }
25098 #[cfg(feature = "extra-children")]
25099 _ => {
25100 let elem = RawXmlElement::from_reader(reader, &e)?;
25102 extra_children.push(PositionedNode::new(
25103 child_idx,
25104 RawXmlNode::Element(elem),
25105 ));
25106 child_idx += 1;
25107 }
25108 #[cfg(not(feature = "extra-children"))]
25109 _ => {
25110 skip_element(reader)?;
25112 }
25113 }
25114 }
25115 Event::Empty(e) => {
25116 match e.local_name().as_ref() {
25117 b"cellSmartTagPr" => {
25118 f_cell_smart_tag_pr
25119 .push(CTCellSmartTagPr::from_xml(reader, &e, true)?);
25120 #[cfg(feature = "extra-children")]
25121 {
25122 child_idx += 1;
25123 }
25124 }
25125 #[cfg(feature = "extra-children")]
25126 _ => {
25127 let elem = RawXmlElement::from_empty(&e);
25129 extra_children.push(PositionedNode::new(
25130 child_idx,
25131 RawXmlNode::Element(elem),
25132 ));
25133 child_idx += 1;
25134 }
25135 #[cfg(not(feature = "extra-children"))]
25136 _ => {}
25137 }
25138 }
25139 Event::End(_) => break,
25140 Event::Eof => break,
25141 _ => {}
25142 }
25143 buf.clear();
25144 }
25145 }
25146
25147 Ok(Self {
25148 r#type: f_type.ok_or_else(|| ParseError::MissingAttribute("type".to_string()))?,
25149 deleted: f_deleted,
25150 xml_based: f_xml_based,
25151 cell_smart_tag_pr: f_cell_smart_tag_pr,
25152 #[cfg(feature = "extra-attrs")]
25153 extra_attrs,
25154 #[cfg(feature = "extra-children")]
25155 extra_children,
25156 })
25157 }
25158}
25159
25160impl FromXml for CTCellSmartTagPr {
25161 fn from_xml<R: BufRead>(
25162 reader: &mut Reader<R>,
25163 start_tag: &BytesStart,
25164 is_empty: bool,
25165 ) -> Result<Self, ParseError> {
25166 let mut f_key: Option<XmlString> = None;
25167 let mut f_value: Option<XmlString> = None;
25168 #[cfg(feature = "extra-attrs")]
25169 let mut extra_attrs = std::collections::HashMap::new();
25170
25171 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
25173 let val = String::from_utf8_lossy(&attr.value);
25174 match attr.key.local_name().as_ref() {
25175 b"key" => {
25176 f_key = Some(val.into_owned());
25177 }
25178 b"val" => {
25179 f_value = Some(val.into_owned());
25180 }
25181 #[cfg(feature = "extra-attrs")]
25182 unknown => {
25183 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
25184 extra_attrs.insert(key, val.into_owned());
25185 }
25186 #[cfg(not(feature = "extra-attrs"))]
25187 _ => {}
25188 }
25189 }
25190
25191 if !is_empty {
25192 let mut buf = Vec::new();
25193 loop {
25194 match reader.read_event_into(&mut buf)? {
25195 Event::End(_) => break,
25196 Event::Eof => break,
25197 _ => {}
25198 }
25199 buf.clear();
25200 }
25201 }
25202
25203 Ok(Self {
25204 key: f_key.ok_or_else(|| ParseError::MissingAttribute("key".to_string()))?,
25205 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
25206 #[cfg(feature = "extra-attrs")]
25207 extra_attrs,
25208 })
25209 }
25210}
25211
25212impl FromXml for Drawing {
25213 fn from_xml<R: BufRead>(
25214 reader: &mut Reader<R>,
25215 start_tag: &BytesStart,
25216 is_empty: bool,
25217 ) -> Result<Self, ParseError> {
25218 let mut f_id: Option<STRelationshipId> = None;
25219 #[cfg(feature = "extra-attrs")]
25220 let mut extra_attrs = std::collections::HashMap::new();
25221
25222 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
25224 let val = String::from_utf8_lossy(&attr.value);
25225 match attr.key.local_name().as_ref() {
25226 b"id" => {
25227 f_id = Some(val.into_owned());
25228 }
25229 #[cfg(feature = "extra-attrs")]
25230 unknown => {
25231 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
25232 extra_attrs.insert(key, val.into_owned());
25233 }
25234 #[cfg(not(feature = "extra-attrs"))]
25235 _ => {}
25236 }
25237 }
25238
25239 if !is_empty {
25240 let mut buf = Vec::new();
25241 loop {
25242 match reader.read_event_into(&mut buf)? {
25243 Event::End(_) => break,
25244 Event::Eof => break,
25245 _ => {}
25246 }
25247 buf.clear();
25248 }
25249 }
25250
25251 Ok(Self {
25252 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
25253 #[cfg(feature = "extra-attrs")]
25254 extra_attrs,
25255 })
25256 }
25257}
25258
25259impl FromXml for LegacyDrawing {
25260 fn from_xml<R: BufRead>(
25261 reader: &mut Reader<R>,
25262 start_tag: &BytesStart,
25263 is_empty: bool,
25264 ) -> Result<Self, ParseError> {
25265 let mut f_id: Option<STRelationshipId> = None;
25266 #[cfg(feature = "extra-attrs")]
25267 let mut extra_attrs = std::collections::HashMap::new();
25268
25269 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
25271 let val = String::from_utf8_lossy(&attr.value);
25272 match attr.key.local_name().as_ref() {
25273 b"id" => {
25274 f_id = Some(val.into_owned());
25275 }
25276 #[cfg(feature = "extra-attrs")]
25277 unknown => {
25278 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
25279 extra_attrs.insert(key, val.into_owned());
25280 }
25281 #[cfg(not(feature = "extra-attrs"))]
25282 _ => {}
25283 }
25284 }
25285
25286 if !is_empty {
25287 let mut buf = Vec::new();
25288 loop {
25289 match reader.read_event_into(&mut buf)? {
25290 Event::End(_) => break,
25291 Event::Eof => break,
25292 _ => {}
25293 }
25294 buf.clear();
25295 }
25296 }
25297
25298 Ok(Self {
25299 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
25300 #[cfg(feature = "extra-attrs")]
25301 extra_attrs,
25302 })
25303 }
25304}
25305
25306impl FromXml for DrawingHeaderFooter {
25307 fn from_xml<R: BufRead>(
25308 reader: &mut Reader<R>,
25309 start_tag: &BytesStart,
25310 is_empty: bool,
25311 ) -> Result<Self, ParseError> {
25312 let mut f_id: Option<STRelationshipId> = None;
25313 let mut f_lho = None;
25314 let mut f_lhe = None;
25315 let mut f_lhf = None;
25316 let mut f_cho = None;
25317 let mut f_che = None;
25318 let mut f_chf = None;
25319 let mut f_rho = None;
25320 let mut f_rhe = None;
25321 let mut f_rhf = None;
25322 let mut f_lfo = None;
25323 let mut f_lfe = None;
25324 let mut f_lff = None;
25325 let mut f_cfo = None;
25326 let mut f_cfe = None;
25327 let mut f_cff = None;
25328 let mut f_rfo = None;
25329 let mut f_rfe = None;
25330 let mut f_rff = None;
25331 #[cfg(feature = "extra-attrs")]
25332 let mut extra_attrs = std::collections::HashMap::new();
25333
25334 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
25336 let val = String::from_utf8_lossy(&attr.value);
25337 match attr.key.local_name().as_ref() {
25338 b"id" => {
25339 f_id = Some(val.into_owned());
25340 }
25341 b"lho" => {
25342 f_lho = val.parse().ok();
25343 }
25344 b"lhe" => {
25345 f_lhe = val.parse().ok();
25346 }
25347 b"lhf" => {
25348 f_lhf = val.parse().ok();
25349 }
25350 b"cho" => {
25351 f_cho = val.parse().ok();
25352 }
25353 b"che" => {
25354 f_che = val.parse().ok();
25355 }
25356 b"chf" => {
25357 f_chf = val.parse().ok();
25358 }
25359 b"rho" => {
25360 f_rho = val.parse().ok();
25361 }
25362 b"rhe" => {
25363 f_rhe = val.parse().ok();
25364 }
25365 b"rhf" => {
25366 f_rhf = val.parse().ok();
25367 }
25368 b"lfo" => {
25369 f_lfo = val.parse().ok();
25370 }
25371 b"lfe" => {
25372 f_lfe = val.parse().ok();
25373 }
25374 b"lff" => {
25375 f_lff = val.parse().ok();
25376 }
25377 b"cfo" => {
25378 f_cfo = val.parse().ok();
25379 }
25380 b"cfe" => {
25381 f_cfe = val.parse().ok();
25382 }
25383 b"cff" => {
25384 f_cff = val.parse().ok();
25385 }
25386 b"rfo" => {
25387 f_rfo = val.parse().ok();
25388 }
25389 b"rfe" => {
25390 f_rfe = val.parse().ok();
25391 }
25392 b"rff" => {
25393 f_rff = val.parse().ok();
25394 }
25395 #[cfg(feature = "extra-attrs")]
25396 unknown => {
25397 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
25398 extra_attrs.insert(key, val.into_owned());
25399 }
25400 #[cfg(not(feature = "extra-attrs"))]
25401 _ => {}
25402 }
25403 }
25404
25405 if !is_empty {
25406 let mut buf = Vec::new();
25407 loop {
25408 match reader.read_event_into(&mut buf)? {
25409 Event::End(_) => break,
25410 Event::Eof => break,
25411 _ => {}
25412 }
25413 buf.clear();
25414 }
25415 }
25416
25417 Ok(Self {
25418 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
25419 lho: f_lho,
25420 lhe: f_lhe,
25421 lhf: f_lhf,
25422 cho: f_cho,
25423 che: f_che,
25424 chf: f_chf,
25425 rho: f_rho,
25426 rhe: f_rhe,
25427 rhf: f_rhf,
25428 lfo: f_lfo,
25429 lfe: f_lfe,
25430 lff: f_lff,
25431 cfo: f_cfo,
25432 cfe: f_cfe,
25433 cff: f_cff,
25434 rfo: f_rfo,
25435 rfe: f_rfe,
25436 rff: f_rff,
25437 #[cfg(feature = "extra-attrs")]
25438 extra_attrs,
25439 })
25440 }
25441}
25442
25443impl FromXml for CustomSheetViews {
25444 fn from_xml<R: BufRead>(
25445 reader: &mut Reader<R>,
25446 start_tag: &BytesStart,
25447 is_empty: bool,
25448 ) -> Result<Self, ParseError> {
25449 let mut f_custom_sheet_view = Vec::new();
25450 #[cfg(feature = "extra-children")]
25451 let mut extra_children = Vec::new();
25452 #[cfg(feature = "extra-children")]
25453 let mut child_idx: usize = 0;
25454
25455 if !is_empty {
25457 let mut buf = Vec::new();
25458 loop {
25459 match reader.read_event_into(&mut buf)? {
25460 Event::Start(e) => {
25461 match e.local_name().as_ref() {
25462 b"customSheetView" => {
25463 f_custom_sheet_view
25464 .push(CustomSheetView::from_xml(reader, &e, false)?);
25465 #[cfg(feature = "extra-children")]
25466 {
25467 child_idx += 1;
25468 }
25469 }
25470 #[cfg(feature = "extra-children")]
25471 _ => {
25472 let elem = RawXmlElement::from_reader(reader, &e)?;
25474 extra_children.push(PositionedNode::new(
25475 child_idx,
25476 RawXmlNode::Element(elem),
25477 ));
25478 child_idx += 1;
25479 }
25480 #[cfg(not(feature = "extra-children"))]
25481 _ => {
25482 skip_element(reader)?;
25484 }
25485 }
25486 }
25487 Event::Empty(e) => {
25488 match e.local_name().as_ref() {
25489 b"customSheetView" => {
25490 f_custom_sheet_view
25491 .push(CustomSheetView::from_xml(reader, &e, true)?);
25492 #[cfg(feature = "extra-children")]
25493 {
25494 child_idx += 1;
25495 }
25496 }
25497 #[cfg(feature = "extra-children")]
25498 _ => {
25499 let elem = RawXmlElement::from_empty(&e);
25501 extra_children.push(PositionedNode::new(
25502 child_idx,
25503 RawXmlNode::Element(elem),
25504 ));
25505 child_idx += 1;
25506 }
25507 #[cfg(not(feature = "extra-children"))]
25508 _ => {}
25509 }
25510 }
25511 Event::End(_) => break,
25512 Event::Eof => break,
25513 _ => {}
25514 }
25515 buf.clear();
25516 }
25517 }
25518
25519 Ok(Self {
25520 custom_sheet_view: f_custom_sheet_view,
25521 #[cfg(feature = "extra-children")]
25522 extra_children,
25523 })
25524 }
25525}
25526
25527impl FromXml for CustomSheetView {
25528 fn from_xml<R: BufRead>(
25529 reader: &mut Reader<R>,
25530 start_tag: &BytesStart,
25531 is_empty: bool,
25532 ) -> Result<Self, ParseError> {
25533 let mut f_guid: Option<Guid> = None;
25534 let mut f_scale = None;
25535 let mut f_color_id = None;
25536 let mut f_show_page_breaks = None;
25537 let mut f_show_formulas = None;
25538 let mut f_show_grid_lines = None;
25539 let mut f_show_row_col = None;
25540 let mut f_outline_symbols = None;
25541 let mut f_zero_values = None;
25542 let mut f_fit_to_page = None;
25543 let mut f_print_area = None;
25544 let mut f_filter = None;
25545 let mut f_show_auto_filter = None;
25546 let mut f_hidden_rows = None;
25547 let mut f_hidden_columns = None;
25548 let mut f_state = None;
25549 let mut f_filter_unique = None;
25550 let mut f_view = None;
25551 let mut f_show_ruler = None;
25552 let mut f_top_left_cell = None;
25553 let mut f_pane = None;
25554 let mut f_selection = None;
25555 let mut f_row_breaks = None;
25556 let mut f_col_breaks = None;
25557 let mut f_page_margins = None;
25558 let mut f_print_options = None;
25559 let mut f_page_setup = None;
25560 let mut f_header_footer = None;
25561 let mut f_auto_filter = None;
25562 let mut f_extension_list = None;
25563 #[cfg(feature = "extra-attrs")]
25564 let mut extra_attrs = std::collections::HashMap::new();
25565 #[cfg(feature = "extra-children")]
25566 let mut extra_children = Vec::new();
25567 #[cfg(feature = "extra-children")]
25568 let mut child_idx: usize = 0;
25569
25570 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
25572 let val = String::from_utf8_lossy(&attr.value);
25573 match attr.key.local_name().as_ref() {
25574 b"guid" => {
25575 f_guid = Some(val.into_owned());
25576 }
25577 b"scale" => {
25578 f_scale = val.parse().ok();
25579 }
25580 b"colorId" => {
25581 f_color_id = val.parse().ok();
25582 }
25583 b"showPageBreaks" => {
25584 f_show_page_breaks = Some(val == "true" || val == "1");
25585 }
25586 b"showFormulas" => {
25587 f_show_formulas = Some(val == "true" || val == "1");
25588 }
25589 b"showGridLines" => {
25590 f_show_grid_lines = Some(val == "true" || val == "1");
25591 }
25592 b"showRowCol" => {
25593 f_show_row_col = Some(val == "true" || val == "1");
25594 }
25595 b"outlineSymbols" => {
25596 f_outline_symbols = Some(val == "true" || val == "1");
25597 }
25598 b"zeroValues" => {
25599 f_zero_values = Some(val == "true" || val == "1");
25600 }
25601 b"fitToPage" => {
25602 f_fit_to_page = Some(val == "true" || val == "1");
25603 }
25604 b"printArea" => {
25605 f_print_area = Some(val == "true" || val == "1");
25606 }
25607 b"filter" => {
25608 f_filter = Some(val == "true" || val == "1");
25609 }
25610 b"showAutoFilter" => {
25611 f_show_auto_filter = Some(val == "true" || val == "1");
25612 }
25613 b"hiddenRows" => {
25614 f_hidden_rows = Some(val == "true" || val == "1");
25615 }
25616 b"hiddenColumns" => {
25617 f_hidden_columns = Some(val == "true" || val == "1");
25618 }
25619 b"state" => {
25620 f_state = val.parse().ok();
25621 }
25622 b"filterUnique" => {
25623 f_filter_unique = Some(val == "true" || val == "1");
25624 }
25625 b"view" => {
25626 f_view = val.parse().ok();
25627 }
25628 b"showRuler" => {
25629 f_show_ruler = Some(val == "true" || val == "1");
25630 }
25631 b"topLeftCell" => {
25632 f_top_left_cell = Some(val.into_owned());
25633 }
25634 #[cfg(feature = "extra-attrs")]
25635 unknown => {
25636 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
25637 extra_attrs.insert(key, val.into_owned());
25638 }
25639 #[cfg(not(feature = "extra-attrs"))]
25640 _ => {}
25641 }
25642 }
25643
25644 if !is_empty {
25646 let mut buf = Vec::new();
25647 loop {
25648 match reader.read_event_into(&mut buf)? {
25649 Event::Start(e) => {
25650 match e.local_name().as_ref() {
25651 b"pane" => {
25652 f_pane = Some(Box::new(Pane::from_xml(reader, &e, false)?));
25653 #[cfg(feature = "extra-children")]
25654 {
25655 child_idx += 1;
25656 }
25657 }
25658 b"selection" => {
25659 f_selection =
25660 Some(Box::new(Selection::from_xml(reader, &e, false)?));
25661 #[cfg(feature = "extra-children")]
25662 {
25663 child_idx += 1;
25664 }
25665 }
25666 b"rowBreaks" => {
25667 f_row_breaks =
25668 Some(Box::new(PageBreaks::from_xml(reader, &e, false)?));
25669 #[cfg(feature = "extra-children")]
25670 {
25671 child_idx += 1;
25672 }
25673 }
25674 b"colBreaks" => {
25675 f_col_breaks =
25676 Some(Box::new(PageBreaks::from_xml(reader, &e, false)?));
25677 #[cfg(feature = "extra-children")]
25678 {
25679 child_idx += 1;
25680 }
25681 }
25682 b"pageMargins" => {
25683 f_page_margins =
25684 Some(Box::new(PageMargins::from_xml(reader, &e, false)?));
25685 #[cfg(feature = "extra-children")]
25686 {
25687 child_idx += 1;
25688 }
25689 }
25690 b"printOptions" => {
25691 f_print_options =
25692 Some(Box::new(PrintOptions::from_xml(reader, &e, false)?));
25693 #[cfg(feature = "extra-children")]
25694 {
25695 child_idx += 1;
25696 }
25697 }
25698 b"pageSetup" => {
25699 f_page_setup =
25700 Some(Box::new(PageSetup::from_xml(reader, &e, false)?));
25701 #[cfg(feature = "extra-children")]
25702 {
25703 child_idx += 1;
25704 }
25705 }
25706 b"headerFooter" => {
25707 f_header_footer =
25708 Some(Box::new(HeaderFooter::from_xml(reader, &e, false)?));
25709 #[cfg(feature = "extra-children")]
25710 {
25711 child_idx += 1;
25712 }
25713 }
25714 b"autoFilter" => {
25715 f_auto_filter =
25716 Some(Box::new(AutoFilter::from_xml(reader, &e, false)?));
25717 #[cfg(feature = "extra-children")]
25718 {
25719 child_idx += 1;
25720 }
25721 }
25722 b"extLst" => {
25723 f_extension_list =
25724 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
25725 #[cfg(feature = "extra-children")]
25726 {
25727 child_idx += 1;
25728 }
25729 }
25730 #[cfg(feature = "extra-children")]
25731 _ => {
25732 let elem = RawXmlElement::from_reader(reader, &e)?;
25734 extra_children.push(PositionedNode::new(
25735 child_idx,
25736 RawXmlNode::Element(elem),
25737 ));
25738 child_idx += 1;
25739 }
25740 #[cfg(not(feature = "extra-children"))]
25741 _ => {
25742 skip_element(reader)?;
25744 }
25745 }
25746 }
25747 Event::Empty(e) => {
25748 match e.local_name().as_ref() {
25749 b"pane" => {
25750 f_pane = Some(Box::new(Pane::from_xml(reader, &e, true)?));
25751 #[cfg(feature = "extra-children")]
25752 {
25753 child_idx += 1;
25754 }
25755 }
25756 b"selection" => {
25757 f_selection =
25758 Some(Box::new(Selection::from_xml(reader, &e, true)?));
25759 #[cfg(feature = "extra-children")]
25760 {
25761 child_idx += 1;
25762 }
25763 }
25764 b"rowBreaks" => {
25765 f_row_breaks =
25766 Some(Box::new(PageBreaks::from_xml(reader, &e, true)?));
25767 #[cfg(feature = "extra-children")]
25768 {
25769 child_idx += 1;
25770 }
25771 }
25772 b"colBreaks" => {
25773 f_col_breaks =
25774 Some(Box::new(PageBreaks::from_xml(reader, &e, true)?));
25775 #[cfg(feature = "extra-children")]
25776 {
25777 child_idx += 1;
25778 }
25779 }
25780 b"pageMargins" => {
25781 f_page_margins =
25782 Some(Box::new(PageMargins::from_xml(reader, &e, true)?));
25783 #[cfg(feature = "extra-children")]
25784 {
25785 child_idx += 1;
25786 }
25787 }
25788 b"printOptions" => {
25789 f_print_options =
25790 Some(Box::new(PrintOptions::from_xml(reader, &e, true)?));
25791 #[cfg(feature = "extra-children")]
25792 {
25793 child_idx += 1;
25794 }
25795 }
25796 b"pageSetup" => {
25797 f_page_setup =
25798 Some(Box::new(PageSetup::from_xml(reader, &e, true)?));
25799 #[cfg(feature = "extra-children")]
25800 {
25801 child_idx += 1;
25802 }
25803 }
25804 b"headerFooter" => {
25805 f_header_footer =
25806 Some(Box::new(HeaderFooter::from_xml(reader, &e, true)?));
25807 #[cfg(feature = "extra-children")]
25808 {
25809 child_idx += 1;
25810 }
25811 }
25812 b"autoFilter" => {
25813 f_auto_filter =
25814 Some(Box::new(AutoFilter::from_xml(reader, &e, true)?));
25815 #[cfg(feature = "extra-children")]
25816 {
25817 child_idx += 1;
25818 }
25819 }
25820 b"extLst" => {
25821 f_extension_list =
25822 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
25823 #[cfg(feature = "extra-children")]
25824 {
25825 child_idx += 1;
25826 }
25827 }
25828 #[cfg(feature = "extra-children")]
25829 _ => {
25830 let elem = RawXmlElement::from_empty(&e);
25832 extra_children.push(PositionedNode::new(
25833 child_idx,
25834 RawXmlNode::Element(elem),
25835 ));
25836 child_idx += 1;
25837 }
25838 #[cfg(not(feature = "extra-children"))]
25839 _ => {}
25840 }
25841 }
25842 Event::End(_) => break,
25843 Event::Eof => break,
25844 _ => {}
25845 }
25846 buf.clear();
25847 }
25848 }
25849
25850 Ok(Self {
25851 guid: f_guid.ok_or_else(|| ParseError::MissingAttribute("guid".to_string()))?,
25852 scale: f_scale,
25853 color_id: f_color_id,
25854 show_page_breaks: f_show_page_breaks,
25855 show_formulas: f_show_formulas,
25856 show_grid_lines: f_show_grid_lines,
25857 show_row_col: f_show_row_col,
25858 outline_symbols: f_outline_symbols,
25859 zero_values: f_zero_values,
25860 fit_to_page: f_fit_to_page,
25861 print_area: f_print_area,
25862 filter: f_filter,
25863 show_auto_filter: f_show_auto_filter,
25864 hidden_rows: f_hidden_rows,
25865 hidden_columns: f_hidden_columns,
25866 state: f_state,
25867 filter_unique: f_filter_unique,
25868 view: f_view,
25869 show_ruler: f_show_ruler,
25870 top_left_cell: f_top_left_cell,
25871 pane: f_pane,
25872 selection: f_selection,
25873 row_breaks: f_row_breaks,
25874 col_breaks: f_col_breaks,
25875 page_margins: f_page_margins,
25876 print_options: f_print_options,
25877 page_setup: f_page_setup,
25878 header_footer: f_header_footer,
25879 auto_filter: f_auto_filter,
25880 extension_list: f_extension_list,
25881 #[cfg(feature = "extra-attrs")]
25882 extra_attrs,
25883 #[cfg(feature = "extra-children")]
25884 extra_children,
25885 })
25886 }
25887}
25888
25889impl FromXml for DataValidations {
25890 fn from_xml<R: BufRead>(
25891 reader: &mut Reader<R>,
25892 start_tag: &BytesStart,
25893 is_empty: bool,
25894 ) -> Result<Self, ParseError> {
25895 let mut f_disable_prompts = None;
25896 let mut f_x_window = None;
25897 let mut f_y_window = None;
25898 let mut f_count = None;
25899 let mut f_data_validation = Vec::new();
25900 #[cfg(feature = "extra-attrs")]
25901 let mut extra_attrs = std::collections::HashMap::new();
25902 #[cfg(feature = "extra-children")]
25903 let mut extra_children = Vec::new();
25904 #[cfg(feature = "extra-children")]
25905 let mut child_idx: usize = 0;
25906
25907 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
25909 let val = String::from_utf8_lossy(&attr.value);
25910 match attr.key.local_name().as_ref() {
25911 b"disablePrompts" => {
25912 f_disable_prompts = Some(val == "true" || val == "1");
25913 }
25914 b"xWindow" => {
25915 f_x_window = val.parse().ok();
25916 }
25917 b"yWindow" => {
25918 f_y_window = val.parse().ok();
25919 }
25920 b"count" => {
25921 f_count = val.parse().ok();
25922 }
25923 #[cfg(feature = "extra-attrs")]
25924 unknown => {
25925 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
25926 extra_attrs.insert(key, val.into_owned());
25927 }
25928 #[cfg(not(feature = "extra-attrs"))]
25929 _ => {}
25930 }
25931 }
25932
25933 if !is_empty {
25935 let mut buf = Vec::new();
25936 loop {
25937 match reader.read_event_into(&mut buf)? {
25938 Event::Start(e) => {
25939 match e.local_name().as_ref() {
25940 b"dataValidation" => {
25941 f_data_validation
25942 .push(DataValidation::from_xml(reader, &e, false)?);
25943 #[cfg(feature = "extra-children")]
25944 {
25945 child_idx += 1;
25946 }
25947 }
25948 #[cfg(feature = "extra-children")]
25949 _ => {
25950 let elem = RawXmlElement::from_reader(reader, &e)?;
25952 extra_children.push(PositionedNode::new(
25953 child_idx,
25954 RawXmlNode::Element(elem),
25955 ));
25956 child_idx += 1;
25957 }
25958 #[cfg(not(feature = "extra-children"))]
25959 _ => {
25960 skip_element(reader)?;
25962 }
25963 }
25964 }
25965 Event::Empty(e) => {
25966 match e.local_name().as_ref() {
25967 b"dataValidation" => {
25968 f_data_validation.push(DataValidation::from_xml(reader, &e, true)?);
25969 #[cfg(feature = "extra-children")]
25970 {
25971 child_idx += 1;
25972 }
25973 }
25974 #[cfg(feature = "extra-children")]
25975 _ => {
25976 let elem = RawXmlElement::from_empty(&e);
25978 extra_children.push(PositionedNode::new(
25979 child_idx,
25980 RawXmlNode::Element(elem),
25981 ));
25982 child_idx += 1;
25983 }
25984 #[cfg(not(feature = "extra-children"))]
25985 _ => {}
25986 }
25987 }
25988 Event::End(_) => break,
25989 Event::Eof => break,
25990 _ => {}
25991 }
25992 buf.clear();
25993 }
25994 }
25995
25996 Ok(Self {
25997 disable_prompts: f_disable_prompts,
25998 x_window: f_x_window,
25999 y_window: f_y_window,
26000 count: f_count,
26001 data_validation: f_data_validation,
26002 #[cfg(feature = "extra-attrs")]
26003 extra_attrs,
26004 #[cfg(feature = "extra-children")]
26005 extra_children,
26006 })
26007 }
26008}
26009
26010impl FromXml for DataValidation {
26011 fn from_xml<R: BufRead>(
26012 reader: &mut Reader<R>,
26013 start_tag: &BytesStart,
26014 is_empty: bool,
26015 ) -> Result<Self, ParseError> {
26016 #[cfg(feature = "sml-validation")]
26017 let mut f_type = None;
26018 #[cfg(feature = "sml-validation")]
26019 let mut f_error_style = None;
26020 #[cfg(feature = "sml-validation")]
26021 let mut f_ime_mode = None;
26022 #[cfg(feature = "sml-validation")]
26023 let mut f_operator = None;
26024 #[cfg(feature = "sml-validation")]
26025 let mut f_allow_blank = None;
26026 #[cfg(feature = "sml-validation")]
26027 let mut f_show_drop_down = None;
26028 #[cfg(feature = "sml-validation")]
26029 let mut f_show_input_message = None;
26030 #[cfg(feature = "sml-validation")]
26031 let mut f_show_error_message = None;
26032 #[cfg(feature = "sml-validation")]
26033 let mut f_error_title = None;
26034 #[cfg(feature = "sml-validation")]
26035 let mut f_error = None;
26036 #[cfg(feature = "sml-validation")]
26037 let mut f_prompt_title = None;
26038 #[cfg(feature = "sml-validation")]
26039 let mut f_prompt = None;
26040 #[cfg(feature = "sml-validation")]
26041 let mut f_square_reference: Option<SquareRef> = None;
26042 #[cfg(feature = "sml-validation")]
26043 let mut f_formula1 = None;
26044 #[cfg(feature = "sml-validation")]
26045 let mut f_formula2 = None;
26046 #[cfg(feature = "extra-attrs")]
26047 let mut extra_attrs = std::collections::HashMap::new();
26048 #[cfg(feature = "extra-children")]
26049 let mut extra_children = Vec::new();
26050 #[cfg(feature = "extra-children")]
26051 let mut child_idx: usize = 0;
26052
26053 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
26055 let val = String::from_utf8_lossy(&attr.value);
26056 match attr.key.local_name().as_ref() {
26057 #[cfg(feature = "sml-validation")]
26058 b"type" => {
26059 f_type = val.parse().ok();
26060 }
26061 #[cfg(feature = "sml-validation")]
26062 b"errorStyle" => {
26063 f_error_style = val.parse().ok();
26064 }
26065 #[cfg(feature = "sml-validation")]
26066 b"imeMode" => {
26067 f_ime_mode = val.parse().ok();
26068 }
26069 #[cfg(feature = "sml-validation")]
26070 b"operator" => {
26071 f_operator = val.parse().ok();
26072 }
26073 #[cfg(feature = "sml-validation")]
26074 b"allowBlank" => {
26075 f_allow_blank = Some(val == "true" || val == "1");
26076 }
26077 #[cfg(feature = "sml-validation")]
26078 b"showDropDown" => {
26079 f_show_drop_down = Some(val == "true" || val == "1");
26080 }
26081 #[cfg(feature = "sml-validation")]
26082 b"showInputMessage" => {
26083 f_show_input_message = Some(val == "true" || val == "1");
26084 }
26085 #[cfg(feature = "sml-validation")]
26086 b"showErrorMessage" => {
26087 f_show_error_message = Some(val == "true" || val == "1");
26088 }
26089 #[cfg(feature = "sml-validation")]
26090 b"errorTitle" => {
26091 f_error_title = Some(val.into_owned());
26092 }
26093 #[cfg(feature = "sml-validation")]
26094 b"error" => {
26095 f_error = Some(val.into_owned());
26096 }
26097 #[cfg(feature = "sml-validation")]
26098 b"promptTitle" => {
26099 f_prompt_title = Some(val.into_owned());
26100 }
26101 #[cfg(feature = "sml-validation")]
26102 b"prompt" => {
26103 f_prompt = Some(val.into_owned());
26104 }
26105 #[cfg(feature = "sml-validation")]
26106 b"sqref" => {
26107 f_square_reference = Some(val.into_owned());
26108 }
26109 #[cfg(feature = "extra-attrs")]
26110 unknown => {
26111 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
26112 extra_attrs.insert(key, val.into_owned());
26113 }
26114 #[cfg(not(feature = "extra-attrs"))]
26115 _ => {}
26116 }
26117 }
26118
26119 if !is_empty {
26121 let mut buf = Vec::new();
26122 loop {
26123 match reader.read_event_into(&mut buf)? {
26124 Event::Start(e) => {
26125 match e.local_name().as_ref() {
26126 #[cfg(feature = "sml-validation")]
26127 b"formula1" => {
26128 f_formula1 = Some(read_text_content(reader)?);
26129 #[cfg(feature = "extra-children")]
26130 {
26131 child_idx += 1;
26132 }
26133 }
26134 #[cfg(feature = "sml-validation")]
26135 b"formula2" => {
26136 f_formula2 = Some(read_text_content(reader)?);
26137 #[cfg(feature = "extra-children")]
26138 {
26139 child_idx += 1;
26140 }
26141 }
26142 #[cfg(feature = "extra-children")]
26143 _ => {
26144 let elem = RawXmlElement::from_reader(reader, &e)?;
26146 extra_children.push(PositionedNode::new(
26147 child_idx,
26148 RawXmlNode::Element(elem),
26149 ));
26150 child_idx += 1;
26151 }
26152 #[cfg(not(feature = "extra-children"))]
26153 _ => {
26154 skip_element(reader)?;
26156 }
26157 }
26158 }
26159 Event::Empty(e) => {
26160 match e.local_name().as_ref() {
26161 #[cfg(feature = "sml-validation")]
26162 b"formula1" => {
26163 f_formula1 = Some(String::new());
26164 #[cfg(feature = "extra-children")]
26165 {
26166 child_idx += 1;
26167 }
26168 }
26169 #[cfg(feature = "sml-validation")]
26170 b"formula2" => {
26171 f_formula2 = Some(String::new());
26172 #[cfg(feature = "extra-children")]
26173 {
26174 child_idx += 1;
26175 }
26176 }
26177 #[cfg(feature = "extra-children")]
26178 _ => {
26179 let elem = RawXmlElement::from_empty(&e);
26181 extra_children.push(PositionedNode::new(
26182 child_idx,
26183 RawXmlNode::Element(elem),
26184 ));
26185 child_idx += 1;
26186 }
26187 #[cfg(not(feature = "extra-children"))]
26188 _ => {}
26189 }
26190 }
26191 Event::End(_) => break,
26192 Event::Eof => break,
26193 _ => {}
26194 }
26195 buf.clear();
26196 }
26197 }
26198
26199 Ok(Self {
26200 #[cfg(feature = "sml-validation")]
26201 r#type: f_type,
26202 #[cfg(feature = "sml-validation")]
26203 error_style: f_error_style,
26204 #[cfg(feature = "sml-validation")]
26205 ime_mode: f_ime_mode,
26206 #[cfg(feature = "sml-validation")]
26207 operator: f_operator,
26208 #[cfg(feature = "sml-validation")]
26209 allow_blank: f_allow_blank,
26210 #[cfg(feature = "sml-validation")]
26211 show_drop_down: f_show_drop_down,
26212 #[cfg(feature = "sml-validation")]
26213 show_input_message: f_show_input_message,
26214 #[cfg(feature = "sml-validation")]
26215 show_error_message: f_show_error_message,
26216 #[cfg(feature = "sml-validation")]
26217 error_title: f_error_title,
26218 #[cfg(feature = "sml-validation")]
26219 error: f_error,
26220 #[cfg(feature = "sml-validation")]
26221 prompt_title: f_prompt_title,
26222 #[cfg(feature = "sml-validation")]
26223 prompt: f_prompt,
26224 #[cfg(feature = "sml-validation")]
26225 square_reference: f_square_reference
26226 .ok_or_else(|| ParseError::MissingAttribute("sqref".to_string()))?,
26227 #[cfg(feature = "sml-validation")]
26228 formula1: f_formula1,
26229 #[cfg(feature = "sml-validation")]
26230 formula2: f_formula2,
26231 #[cfg(feature = "extra-attrs")]
26232 extra_attrs,
26233 #[cfg(feature = "extra-children")]
26234 extra_children,
26235 })
26236 }
26237}
26238
26239impl FromXml for ConditionalFormatting {
26240 fn from_xml<R: BufRead>(
26241 reader: &mut Reader<R>,
26242 start_tag: &BytesStart,
26243 is_empty: bool,
26244 ) -> Result<Self, ParseError> {
26245 #[cfg(feature = "sml-pivot")]
26246 let mut f_pivot = None;
26247 #[cfg(feature = "sml-styling")]
26248 let mut f_square_reference = None;
26249 #[cfg(feature = "sml-styling")]
26250 let mut f_cf_rule = Vec::new();
26251 #[cfg(feature = "sml-extensions")]
26252 let mut f_extension_list = None;
26253 #[cfg(feature = "extra-attrs")]
26254 let mut extra_attrs = std::collections::HashMap::new();
26255 #[cfg(feature = "extra-children")]
26256 let mut extra_children = Vec::new();
26257 #[cfg(feature = "extra-children")]
26258 let mut child_idx: usize = 0;
26259
26260 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
26262 let val = String::from_utf8_lossy(&attr.value);
26263 match attr.key.local_name().as_ref() {
26264 #[cfg(feature = "sml-pivot")]
26265 b"pivot" => {
26266 f_pivot = Some(val == "true" || val == "1");
26267 }
26268 #[cfg(feature = "sml-styling")]
26269 b"sqref" => {
26270 f_square_reference = Some(val.into_owned());
26271 }
26272 #[cfg(feature = "extra-attrs")]
26273 unknown => {
26274 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
26275 extra_attrs.insert(key, val.into_owned());
26276 }
26277 #[cfg(not(feature = "extra-attrs"))]
26278 _ => {}
26279 }
26280 }
26281
26282 if !is_empty {
26284 let mut buf = Vec::new();
26285 loop {
26286 match reader.read_event_into(&mut buf)? {
26287 Event::Start(e) => {
26288 match e.local_name().as_ref() {
26289 #[cfg(feature = "sml-styling")]
26290 b"cfRule" => {
26291 f_cf_rule.push(ConditionalRule::from_xml(reader, &e, false)?);
26292 #[cfg(feature = "extra-children")]
26293 {
26294 child_idx += 1;
26295 }
26296 }
26297 #[cfg(feature = "sml-extensions")]
26298 b"extLst" => {
26299 f_extension_list =
26300 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
26301 #[cfg(feature = "extra-children")]
26302 {
26303 child_idx += 1;
26304 }
26305 }
26306 #[cfg(feature = "extra-children")]
26307 _ => {
26308 let elem = RawXmlElement::from_reader(reader, &e)?;
26310 extra_children.push(PositionedNode::new(
26311 child_idx,
26312 RawXmlNode::Element(elem),
26313 ));
26314 child_idx += 1;
26315 }
26316 #[cfg(not(feature = "extra-children"))]
26317 _ => {
26318 skip_element(reader)?;
26320 }
26321 }
26322 }
26323 Event::Empty(e) => {
26324 match e.local_name().as_ref() {
26325 #[cfg(feature = "sml-styling")]
26326 b"cfRule" => {
26327 f_cf_rule.push(ConditionalRule::from_xml(reader, &e, true)?);
26328 #[cfg(feature = "extra-children")]
26329 {
26330 child_idx += 1;
26331 }
26332 }
26333 #[cfg(feature = "sml-extensions")]
26334 b"extLst" => {
26335 f_extension_list =
26336 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
26337 #[cfg(feature = "extra-children")]
26338 {
26339 child_idx += 1;
26340 }
26341 }
26342 #[cfg(feature = "extra-children")]
26343 _ => {
26344 let elem = RawXmlElement::from_empty(&e);
26346 extra_children.push(PositionedNode::new(
26347 child_idx,
26348 RawXmlNode::Element(elem),
26349 ));
26350 child_idx += 1;
26351 }
26352 #[cfg(not(feature = "extra-children"))]
26353 _ => {}
26354 }
26355 }
26356 Event::End(_) => break,
26357 Event::Eof => break,
26358 _ => {}
26359 }
26360 buf.clear();
26361 }
26362 }
26363
26364 Ok(Self {
26365 #[cfg(feature = "sml-pivot")]
26366 pivot: f_pivot,
26367 #[cfg(feature = "sml-styling")]
26368 square_reference: f_square_reference,
26369 #[cfg(feature = "sml-styling")]
26370 cf_rule: f_cf_rule,
26371 #[cfg(feature = "sml-extensions")]
26372 extension_list: f_extension_list,
26373 #[cfg(feature = "extra-attrs")]
26374 extra_attrs,
26375 #[cfg(feature = "extra-children")]
26376 extra_children,
26377 })
26378 }
26379}
26380
26381impl FromXml for ConditionalRule {
26382 fn from_xml<R: BufRead>(
26383 reader: &mut Reader<R>,
26384 start_tag: &BytesStart,
26385 is_empty: bool,
26386 ) -> Result<Self, ParseError> {
26387 #[cfg(feature = "sml-styling")]
26388 let mut f_type = None;
26389 #[cfg(feature = "sml-styling")]
26390 let mut f_dxf_id = None;
26391 #[cfg(feature = "sml-styling")]
26392 let mut f_priority: Option<i32> = None;
26393 #[cfg(feature = "sml-styling")]
26394 let mut f_stop_if_true = None;
26395 #[cfg(feature = "sml-styling")]
26396 let mut f_above_average = None;
26397 #[cfg(feature = "sml-styling")]
26398 let mut f_percent = None;
26399 #[cfg(feature = "sml-styling")]
26400 let mut f_bottom = None;
26401 #[cfg(feature = "sml-styling")]
26402 let mut f_operator = None;
26403 #[cfg(feature = "sml-styling")]
26404 let mut f_text = None;
26405 #[cfg(feature = "sml-styling")]
26406 let mut f_time_period = None;
26407 #[cfg(feature = "sml-styling")]
26408 let mut f_rank = None;
26409 #[cfg(feature = "sml-styling")]
26410 let mut f_std_dev = None;
26411 #[cfg(feature = "sml-styling")]
26412 let mut f_equal_average = None;
26413 #[cfg(feature = "sml-styling")]
26414 let mut f_formula = Vec::new();
26415 #[cfg(feature = "sml-styling")]
26416 let mut f_color_scale = None;
26417 #[cfg(feature = "sml-styling")]
26418 let mut f_data_bar = None;
26419 #[cfg(feature = "sml-styling")]
26420 let mut f_icon_set = None;
26421 #[cfg(feature = "sml-extensions")]
26422 let mut f_extension_list = None;
26423 #[cfg(feature = "extra-attrs")]
26424 let mut extra_attrs = std::collections::HashMap::new();
26425 #[cfg(feature = "extra-children")]
26426 let mut extra_children = Vec::new();
26427 #[cfg(feature = "extra-children")]
26428 let mut child_idx: usize = 0;
26429
26430 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
26432 let val = String::from_utf8_lossy(&attr.value);
26433 match attr.key.local_name().as_ref() {
26434 #[cfg(feature = "sml-styling")]
26435 b"type" => {
26436 f_type = val.parse().ok();
26437 }
26438 #[cfg(feature = "sml-styling")]
26439 b"dxfId" => {
26440 f_dxf_id = val.parse().ok();
26441 }
26442 #[cfg(feature = "sml-styling")]
26443 b"priority" => {
26444 f_priority = val.parse().ok();
26445 }
26446 #[cfg(feature = "sml-styling")]
26447 b"stopIfTrue" => {
26448 f_stop_if_true = Some(val == "true" || val == "1");
26449 }
26450 #[cfg(feature = "sml-styling")]
26451 b"aboveAverage" => {
26452 f_above_average = Some(val == "true" || val == "1");
26453 }
26454 #[cfg(feature = "sml-styling")]
26455 b"percent" => {
26456 f_percent = Some(val == "true" || val == "1");
26457 }
26458 #[cfg(feature = "sml-styling")]
26459 b"bottom" => {
26460 f_bottom = Some(val == "true" || val == "1");
26461 }
26462 #[cfg(feature = "sml-styling")]
26463 b"operator" => {
26464 f_operator = val.parse().ok();
26465 }
26466 #[cfg(feature = "sml-styling")]
26467 b"text" => {
26468 f_text = Some(val.into_owned());
26469 }
26470 #[cfg(feature = "sml-styling")]
26471 b"timePeriod" => {
26472 f_time_period = val.parse().ok();
26473 }
26474 #[cfg(feature = "sml-styling")]
26475 b"rank" => {
26476 f_rank = val.parse().ok();
26477 }
26478 #[cfg(feature = "sml-styling")]
26479 b"stdDev" => {
26480 f_std_dev = val.parse().ok();
26481 }
26482 #[cfg(feature = "sml-styling")]
26483 b"equalAverage" => {
26484 f_equal_average = Some(val == "true" || val == "1");
26485 }
26486 #[cfg(feature = "extra-attrs")]
26487 unknown => {
26488 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
26489 extra_attrs.insert(key, val.into_owned());
26490 }
26491 #[cfg(not(feature = "extra-attrs"))]
26492 _ => {}
26493 }
26494 }
26495
26496 if !is_empty {
26498 let mut buf = Vec::new();
26499 loop {
26500 match reader.read_event_into(&mut buf)? {
26501 Event::Start(e) => {
26502 match e.local_name().as_ref() {
26503 #[cfg(feature = "sml-styling")]
26504 b"formula" => {
26505 f_formula.push(read_text_content(reader)?);
26506 #[cfg(feature = "extra-children")]
26507 {
26508 child_idx += 1;
26509 }
26510 }
26511 #[cfg(feature = "sml-styling")]
26512 b"colorScale" => {
26513 f_color_scale =
26514 Some(Box::new(ColorScale::from_xml(reader, &e, false)?));
26515 #[cfg(feature = "extra-children")]
26516 {
26517 child_idx += 1;
26518 }
26519 }
26520 #[cfg(feature = "sml-styling")]
26521 b"dataBar" => {
26522 f_data_bar = Some(Box::new(DataBar::from_xml(reader, &e, false)?));
26523 #[cfg(feature = "extra-children")]
26524 {
26525 child_idx += 1;
26526 }
26527 }
26528 #[cfg(feature = "sml-styling")]
26529 b"iconSet" => {
26530 f_icon_set = Some(Box::new(IconSet::from_xml(reader, &e, false)?));
26531 #[cfg(feature = "extra-children")]
26532 {
26533 child_idx += 1;
26534 }
26535 }
26536 #[cfg(feature = "sml-extensions")]
26537 b"extLst" => {
26538 f_extension_list =
26539 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
26540 #[cfg(feature = "extra-children")]
26541 {
26542 child_idx += 1;
26543 }
26544 }
26545 #[cfg(feature = "extra-children")]
26546 _ => {
26547 let elem = RawXmlElement::from_reader(reader, &e)?;
26549 extra_children.push(PositionedNode::new(
26550 child_idx,
26551 RawXmlNode::Element(elem),
26552 ));
26553 child_idx += 1;
26554 }
26555 #[cfg(not(feature = "extra-children"))]
26556 _ => {
26557 skip_element(reader)?;
26559 }
26560 }
26561 }
26562 Event::Empty(e) => {
26563 match e.local_name().as_ref() {
26564 #[cfg(feature = "sml-styling")]
26565 b"formula" => {
26566 f_formula.push(String::new());
26567 #[cfg(feature = "extra-children")]
26568 {
26569 child_idx += 1;
26570 }
26571 }
26572 #[cfg(feature = "sml-styling")]
26573 b"colorScale" => {
26574 f_color_scale =
26575 Some(Box::new(ColorScale::from_xml(reader, &e, true)?));
26576 #[cfg(feature = "extra-children")]
26577 {
26578 child_idx += 1;
26579 }
26580 }
26581 #[cfg(feature = "sml-styling")]
26582 b"dataBar" => {
26583 f_data_bar = Some(Box::new(DataBar::from_xml(reader, &e, true)?));
26584 #[cfg(feature = "extra-children")]
26585 {
26586 child_idx += 1;
26587 }
26588 }
26589 #[cfg(feature = "sml-styling")]
26590 b"iconSet" => {
26591 f_icon_set = Some(Box::new(IconSet::from_xml(reader, &e, true)?));
26592 #[cfg(feature = "extra-children")]
26593 {
26594 child_idx += 1;
26595 }
26596 }
26597 #[cfg(feature = "sml-extensions")]
26598 b"extLst" => {
26599 f_extension_list =
26600 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
26601 #[cfg(feature = "extra-children")]
26602 {
26603 child_idx += 1;
26604 }
26605 }
26606 #[cfg(feature = "extra-children")]
26607 _ => {
26608 let elem = RawXmlElement::from_empty(&e);
26610 extra_children.push(PositionedNode::new(
26611 child_idx,
26612 RawXmlNode::Element(elem),
26613 ));
26614 child_idx += 1;
26615 }
26616 #[cfg(not(feature = "extra-children"))]
26617 _ => {}
26618 }
26619 }
26620 Event::End(_) => break,
26621 Event::Eof => break,
26622 _ => {}
26623 }
26624 buf.clear();
26625 }
26626 }
26627
26628 Ok(Self {
26629 #[cfg(feature = "sml-styling")]
26630 r#type: f_type,
26631 #[cfg(feature = "sml-styling")]
26632 dxf_id: f_dxf_id,
26633 #[cfg(feature = "sml-styling")]
26634 priority: f_priority
26635 .ok_or_else(|| ParseError::MissingAttribute("priority".to_string()))?,
26636 #[cfg(feature = "sml-styling")]
26637 stop_if_true: f_stop_if_true,
26638 #[cfg(feature = "sml-styling")]
26639 above_average: f_above_average,
26640 #[cfg(feature = "sml-styling")]
26641 percent: f_percent,
26642 #[cfg(feature = "sml-styling")]
26643 bottom: f_bottom,
26644 #[cfg(feature = "sml-styling")]
26645 operator: f_operator,
26646 #[cfg(feature = "sml-styling")]
26647 text: f_text,
26648 #[cfg(feature = "sml-styling")]
26649 time_period: f_time_period,
26650 #[cfg(feature = "sml-styling")]
26651 rank: f_rank,
26652 #[cfg(feature = "sml-styling")]
26653 std_dev: f_std_dev,
26654 #[cfg(feature = "sml-styling")]
26655 equal_average: f_equal_average,
26656 #[cfg(feature = "sml-styling")]
26657 formula: f_formula,
26658 #[cfg(feature = "sml-styling")]
26659 color_scale: f_color_scale,
26660 #[cfg(feature = "sml-styling")]
26661 data_bar: f_data_bar,
26662 #[cfg(feature = "sml-styling")]
26663 icon_set: f_icon_set,
26664 #[cfg(feature = "sml-extensions")]
26665 extension_list: f_extension_list,
26666 #[cfg(feature = "extra-attrs")]
26667 extra_attrs,
26668 #[cfg(feature = "extra-children")]
26669 extra_children,
26670 })
26671 }
26672}
26673
26674impl FromXml for Hyperlinks {
26675 fn from_xml<R: BufRead>(
26676 reader: &mut Reader<R>,
26677 start_tag: &BytesStart,
26678 is_empty: bool,
26679 ) -> Result<Self, ParseError> {
26680 let mut f_hyperlink = Vec::new();
26681 #[cfg(feature = "extra-children")]
26682 let mut extra_children = Vec::new();
26683 #[cfg(feature = "extra-children")]
26684 let mut child_idx: usize = 0;
26685
26686 if !is_empty {
26688 let mut buf = Vec::new();
26689 loop {
26690 match reader.read_event_into(&mut buf)? {
26691 Event::Start(e) => {
26692 match e.local_name().as_ref() {
26693 b"hyperlink" => {
26694 f_hyperlink.push(Hyperlink::from_xml(reader, &e, false)?);
26695 #[cfg(feature = "extra-children")]
26696 {
26697 child_idx += 1;
26698 }
26699 }
26700 #[cfg(feature = "extra-children")]
26701 _ => {
26702 let elem = RawXmlElement::from_reader(reader, &e)?;
26704 extra_children.push(PositionedNode::new(
26705 child_idx,
26706 RawXmlNode::Element(elem),
26707 ));
26708 child_idx += 1;
26709 }
26710 #[cfg(not(feature = "extra-children"))]
26711 _ => {
26712 skip_element(reader)?;
26714 }
26715 }
26716 }
26717 Event::Empty(e) => {
26718 match e.local_name().as_ref() {
26719 b"hyperlink" => {
26720 f_hyperlink.push(Hyperlink::from_xml(reader, &e, true)?);
26721 #[cfg(feature = "extra-children")]
26722 {
26723 child_idx += 1;
26724 }
26725 }
26726 #[cfg(feature = "extra-children")]
26727 _ => {
26728 let elem = RawXmlElement::from_empty(&e);
26730 extra_children.push(PositionedNode::new(
26731 child_idx,
26732 RawXmlNode::Element(elem),
26733 ));
26734 child_idx += 1;
26735 }
26736 #[cfg(not(feature = "extra-children"))]
26737 _ => {}
26738 }
26739 }
26740 Event::End(_) => break,
26741 Event::Eof => break,
26742 _ => {}
26743 }
26744 buf.clear();
26745 }
26746 }
26747
26748 Ok(Self {
26749 hyperlink: f_hyperlink,
26750 #[cfg(feature = "extra-children")]
26751 extra_children,
26752 })
26753 }
26754}
26755
26756impl FromXml for Hyperlink {
26757 fn from_xml<R: BufRead>(
26758 reader: &mut Reader<R>,
26759 start_tag: &BytesStart,
26760 is_empty: bool,
26761 ) -> Result<Self, ParseError> {
26762 #[cfg(feature = "sml-hyperlinks")]
26763 let mut f_reference: Option<Reference> = None;
26764 let mut f_id = None;
26765 #[cfg(feature = "sml-hyperlinks")]
26766 let mut f_location = None;
26767 #[cfg(feature = "sml-hyperlinks")]
26768 let mut f_tooltip = None;
26769 #[cfg(feature = "sml-hyperlinks")]
26770 let mut f_display = None;
26771 #[cfg(feature = "extra-attrs")]
26772 let mut extra_attrs = std::collections::HashMap::new();
26773
26774 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
26776 let val = String::from_utf8_lossy(&attr.value);
26777 match attr.key.local_name().as_ref() {
26778 #[cfg(feature = "sml-hyperlinks")]
26779 b"ref" => {
26780 f_reference = Some(val.into_owned());
26781 }
26782 b"id" => {
26783 f_id = Some(val.into_owned());
26784 }
26785 #[cfg(feature = "sml-hyperlinks")]
26786 b"location" => {
26787 f_location = Some(val.into_owned());
26788 }
26789 #[cfg(feature = "sml-hyperlinks")]
26790 b"tooltip" => {
26791 f_tooltip = Some(val.into_owned());
26792 }
26793 #[cfg(feature = "sml-hyperlinks")]
26794 b"display" => {
26795 f_display = Some(val.into_owned());
26796 }
26797 #[cfg(feature = "extra-attrs")]
26798 unknown => {
26799 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
26800 extra_attrs.insert(key, val.into_owned());
26801 }
26802 #[cfg(not(feature = "extra-attrs"))]
26803 _ => {}
26804 }
26805 }
26806
26807 if !is_empty {
26808 let mut buf = Vec::new();
26809 loop {
26810 match reader.read_event_into(&mut buf)? {
26811 Event::End(_) => break,
26812 Event::Eof => break,
26813 _ => {}
26814 }
26815 buf.clear();
26816 }
26817 }
26818
26819 Ok(Self {
26820 #[cfg(feature = "sml-hyperlinks")]
26821 reference: f_reference
26822 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
26823 id: f_id,
26824 #[cfg(feature = "sml-hyperlinks")]
26825 location: f_location,
26826 #[cfg(feature = "sml-hyperlinks")]
26827 tooltip: f_tooltip,
26828 #[cfg(feature = "sml-hyperlinks")]
26829 display: f_display,
26830 #[cfg(feature = "extra-attrs")]
26831 extra_attrs,
26832 })
26833 }
26834}
26835
26836impl FromXml for CellFormula {
26837 fn from_xml<R: BufRead>(
26838 reader: &mut Reader<R>,
26839 start_tag: &BytesStart,
26840 is_empty: bool,
26841 ) -> Result<Self, ParseError> {
26842 let mut f_text = None;
26843 let mut f_cell_type = None;
26844 #[cfg(feature = "sml-formulas-advanced")]
26845 let mut f_aca = None;
26846 let mut f_reference = None;
26847 #[cfg(feature = "sml-formulas-advanced")]
26848 let mut f_dt2_d = None;
26849 #[cfg(feature = "sml-formulas-advanced")]
26850 let mut f_dtr = None;
26851 #[cfg(feature = "sml-formulas-advanced")]
26852 let mut f_del1 = None;
26853 #[cfg(feature = "sml-formulas-advanced")]
26854 let mut f_del2 = None;
26855 #[cfg(feature = "sml-formulas-advanced")]
26856 let mut f_r1 = None;
26857 #[cfg(feature = "sml-formulas-advanced")]
26858 let mut f_r2 = None;
26859 #[cfg(feature = "sml-formulas-advanced")]
26860 let mut f_ca = None;
26861 let mut f_si = None;
26862 #[cfg(feature = "sml-formulas-advanced")]
26863 let mut f_bx = None;
26864 #[cfg(feature = "extra-attrs")]
26865 let mut extra_attrs = std::collections::HashMap::new();
26866 #[cfg(feature = "extra-children")]
26867 let mut extra_children = Vec::new();
26868 #[cfg(feature = "extra-children")]
26869 let mut child_idx: usize = 0;
26870
26871 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
26873 let val = String::from_utf8_lossy(&attr.value);
26874 match attr.key.local_name().as_ref() {
26875 b"t" => {
26876 f_cell_type = val.parse().ok();
26877 }
26878 #[cfg(feature = "sml-formulas-advanced")]
26879 b"aca" => {
26880 f_aca = Some(val == "true" || val == "1");
26881 }
26882 b"ref" => {
26883 f_reference = Some(val.into_owned());
26884 }
26885 #[cfg(feature = "sml-formulas-advanced")]
26886 b"dt2D" => {
26887 f_dt2_d = Some(val == "true" || val == "1");
26888 }
26889 #[cfg(feature = "sml-formulas-advanced")]
26890 b"dtr" => {
26891 f_dtr = Some(val == "true" || val == "1");
26892 }
26893 #[cfg(feature = "sml-formulas-advanced")]
26894 b"del1" => {
26895 f_del1 = Some(val == "true" || val == "1");
26896 }
26897 #[cfg(feature = "sml-formulas-advanced")]
26898 b"del2" => {
26899 f_del2 = Some(val == "true" || val == "1");
26900 }
26901 #[cfg(feature = "sml-formulas-advanced")]
26902 b"r1" => {
26903 f_r1 = Some(val.into_owned());
26904 }
26905 #[cfg(feature = "sml-formulas-advanced")]
26906 b"r2" => {
26907 f_r2 = Some(val.into_owned());
26908 }
26909 #[cfg(feature = "sml-formulas-advanced")]
26910 b"ca" => {
26911 f_ca = Some(val == "true" || val == "1");
26912 }
26913 b"si" => {
26914 f_si = val.parse().ok();
26915 }
26916 #[cfg(feature = "sml-formulas-advanced")]
26917 b"bx" => {
26918 f_bx = Some(val == "true" || val == "1");
26919 }
26920 #[cfg(feature = "extra-attrs")]
26921 unknown => {
26922 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
26923 extra_attrs.insert(key, val.into_owned());
26924 }
26925 #[cfg(not(feature = "extra-attrs"))]
26926 _ => {}
26927 }
26928 }
26929
26930 if !is_empty {
26932 let mut buf = Vec::new();
26933 loop {
26934 match reader.read_event_into(&mut buf)? {
26935 Event::Start(e) => {
26936 match e.local_name().as_ref() {
26937 #[cfg(feature = "extra-children")]
26938 _ => {
26939 let elem = RawXmlElement::from_reader(reader, &e)?;
26941 extra_children.push(PositionedNode::new(
26942 child_idx,
26943 RawXmlNode::Element(elem),
26944 ));
26945 child_idx += 1;
26946 }
26947 #[cfg(not(feature = "extra-children"))]
26948 _ => {
26949 skip_element(reader)?;
26951 }
26952 }
26953 }
26954 Event::Empty(e) => {
26955 match e.local_name().as_ref() {
26956 #[cfg(feature = "extra-children")]
26957 _ => {
26958 let elem = RawXmlElement::from_empty(&e);
26960 extra_children.push(PositionedNode::new(
26961 child_idx,
26962 RawXmlNode::Element(elem),
26963 ));
26964 child_idx += 1;
26965 }
26966 #[cfg(not(feature = "extra-children"))]
26967 _ => {}
26968 }
26969 }
26970 Event::Text(e) => {
26971 let s = e.decode().unwrap_or_default();
26972 f_text.get_or_insert_with(String::new).push_str(&s);
26973 }
26974 Event::GeneralRef(e) => {
26975 let name = e.decode().unwrap_or_default();
26976 if let Some(s) = quick_xml::escape::resolve_xml_entity(&name) {
26977 f_text.get_or_insert_with(String::new).push_str(s);
26978 }
26979 }
26980 Event::End(_) => break,
26981 Event::Eof => break,
26982 _ => {}
26983 }
26984 buf.clear();
26985 }
26986 }
26987
26988 Ok(Self {
26989 text: f_text,
26990 cell_type: f_cell_type,
26991 #[cfg(feature = "sml-formulas-advanced")]
26992 aca: f_aca,
26993 reference: f_reference,
26994 #[cfg(feature = "sml-formulas-advanced")]
26995 dt2_d: f_dt2_d,
26996 #[cfg(feature = "sml-formulas-advanced")]
26997 dtr: f_dtr,
26998 #[cfg(feature = "sml-formulas-advanced")]
26999 del1: f_del1,
27000 #[cfg(feature = "sml-formulas-advanced")]
27001 del2: f_del2,
27002 #[cfg(feature = "sml-formulas-advanced")]
27003 r1: f_r1,
27004 #[cfg(feature = "sml-formulas-advanced")]
27005 r2: f_r2,
27006 #[cfg(feature = "sml-formulas-advanced")]
27007 ca: f_ca,
27008 si: f_si,
27009 #[cfg(feature = "sml-formulas-advanced")]
27010 bx: f_bx,
27011 #[cfg(feature = "extra-attrs")]
27012 extra_attrs,
27013 #[cfg(feature = "extra-children")]
27014 extra_children,
27015 })
27016 }
27017}
27018
27019impl FromXml for ColorScale {
27020 fn from_xml<R: BufRead>(
27021 reader: &mut Reader<R>,
27022 start_tag: &BytesStart,
27023 is_empty: bool,
27024 ) -> Result<Self, ParseError> {
27025 #[cfg(feature = "sml-styling")]
27026 let mut f_cfvo = Vec::new();
27027 #[cfg(feature = "sml-styling")]
27028 let mut f_color = Vec::new();
27029 #[cfg(feature = "extra-children")]
27030 let mut extra_children = Vec::new();
27031 #[cfg(feature = "extra-children")]
27032 let mut child_idx: usize = 0;
27033
27034 if !is_empty {
27036 let mut buf = Vec::new();
27037 loop {
27038 match reader.read_event_into(&mut buf)? {
27039 Event::Start(e) => {
27040 match e.local_name().as_ref() {
27041 #[cfg(feature = "sml-styling")]
27042 b"cfvo" => {
27043 f_cfvo.push(ConditionalFormatValue::from_xml(reader, &e, false)?);
27044 #[cfg(feature = "extra-children")]
27045 {
27046 child_idx += 1;
27047 }
27048 }
27049 #[cfg(feature = "sml-styling")]
27050 b"color" => {
27051 f_color.push(Color::from_xml(reader, &e, false)?);
27052 #[cfg(feature = "extra-children")]
27053 {
27054 child_idx += 1;
27055 }
27056 }
27057 #[cfg(feature = "extra-children")]
27058 _ => {
27059 let elem = RawXmlElement::from_reader(reader, &e)?;
27061 extra_children.push(PositionedNode::new(
27062 child_idx,
27063 RawXmlNode::Element(elem),
27064 ));
27065 child_idx += 1;
27066 }
27067 #[cfg(not(feature = "extra-children"))]
27068 _ => {
27069 skip_element(reader)?;
27071 }
27072 }
27073 }
27074 Event::Empty(e) => {
27075 match e.local_name().as_ref() {
27076 #[cfg(feature = "sml-styling")]
27077 b"cfvo" => {
27078 f_cfvo.push(ConditionalFormatValue::from_xml(reader, &e, true)?);
27079 #[cfg(feature = "extra-children")]
27080 {
27081 child_idx += 1;
27082 }
27083 }
27084 #[cfg(feature = "sml-styling")]
27085 b"color" => {
27086 f_color.push(Color::from_xml(reader, &e, true)?);
27087 #[cfg(feature = "extra-children")]
27088 {
27089 child_idx += 1;
27090 }
27091 }
27092 #[cfg(feature = "extra-children")]
27093 _ => {
27094 let elem = RawXmlElement::from_empty(&e);
27096 extra_children.push(PositionedNode::new(
27097 child_idx,
27098 RawXmlNode::Element(elem),
27099 ));
27100 child_idx += 1;
27101 }
27102 #[cfg(not(feature = "extra-children"))]
27103 _ => {}
27104 }
27105 }
27106 Event::End(_) => break,
27107 Event::Eof => break,
27108 _ => {}
27109 }
27110 buf.clear();
27111 }
27112 }
27113
27114 Ok(Self {
27115 #[cfg(feature = "sml-styling")]
27116 cfvo: f_cfvo,
27117 #[cfg(feature = "sml-styling")]
27118 color: f_color,
27119 #[cfg(feature = "extra-children")]
27120 extra_children,
27121 })
27122 }
27123}
27124
27125impl FromXml for DataBar {
27126 fn from_xml<R: BufRead>(
27127 reader: &mut Reader<R>,
27128 start_tag: &BytesStart,
27129 is_empty: bool,
27130 ) -> Result<Self, ParseError> {
27131 #[cfg(feature = "sml-styling")]
27132 let mut f_min_length = None;
27133 #[cfg(feature = "sml-styling")]
27134 let mut f_max_length = None;
27135 #[cfg(feature = "sml-styling")]
27136 let mut f_show_value = None;
27137 #[cfg(feature = "sml-styling")]
27138 let mut f_cfvo = Vec::new();
27139 #[cfg(feature = "sml-styling")]
27140 let mut f_color: Option<Box<Color>> = None;
27141 #[cfg(feature = "extra-attrs")]
27142 let mut extra_attrs = std::collections::HashMap::new();
27143 #[cfg(feature = "extra-children")]
27144 let mut extra_children = Vec::new();
27145 #[cfg(feature = "extra-children")]
27146 let mut child_idx: usize = 0;
27147
27148 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
27150 let val = String::from_utf8_lossy(&attr.value);
27151 match attr.key.local_name().as_ref() {
27152 #[cfg(feature = "sml-styling")]
27153 b"minLength" => {
27154 f_min_length = val.parse().ok();
27155 }
27156 #[cfg(feature = "sml-styling")]
27157 b"maxLength" => {
27158 f_max_length = val.parse().ok();
27159 }
27160 #[cfg(feature = "sml-styling")]
27161 b"showValue" => {
27162 f_show_value = Some(val == "true" || val == "1");
27163 }
27164 #[cfg(feature = "extra-attrs")]
27165 unknown => {
27166 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
27167 extra_attrs.insert(key, val.into_owned());
27168 }
27169 #[cfg(not(feature = "extra-attrs"))]
27170 _ => {}
27171 }
27172 }
27173
27174 if !is_empty {
27176 let mut buf = Vec::new();
27177 loop {
27178 match reader.read_event_into(&mut buf)? {
27179 Event::Start(e) => {
27180 match e.local_name().as_ref() {
27181 #[cfg(feature = "sml-styling")]
27182 b"cfvo" => {
27183 f_cfvo.push(ConditionalFormatValue::from_xml(reader, &e, false)?);
27184 #[cfg(feature = "extra-children")]
27185 {
27186 child_idx += 1;
27187 }
27188 }
27189 #[cfg(feature = "sml-styling")]
27190 b"color" => {
27191 f_color = Some(Box::new(Color::from_xml(reader, &e, false)?));
27192 #[cfg(feature = "extra-children")]
27193 {
27194 child_idx += 1;
27195 }
27196 }
27197 #[cfg(feature = "extra-children")]
27198 _ => {
27199 let elem = RawXmlElement::from_reader(reader, &e)?;
27201 extra_children.push(PositionedNode::new(
27202 child_idx,
27203 RawXmlNode::Element(elem),
27204 ));
27205 child_idx += 1;
27206 }
27207 #[cfg(not(feature = "extra-children"))]
27208 _ => {
27209 skip_element(reader)?;
27211 }
27212 }
27213 }
27214 Event::Empty(e) => {
27215 match e.local_name().as_ref() {
27216 #[cfg(feature = "sml-styling")]
27217 b"cfvo" => {
27218 f_cfvo.push(ConditionalFormatValue::from_xml(reader, &e, true)?);
27219 #[cfg(feature = "extra-children")]
27220 {
27221 child_idx += 1;
27222 }
27223 }
27224 #[cfg(feature = "sml-styling")]
27225 b"color" => {
27226 f_color = Some(Box::new(Color::from_xml(reader, &e, true)?));
27227 #[cfg(feature = "extra-children")]
27228 {
27229 child_idx += 1;
27230 }
27231 }
27232 #[cfg(feature = "extra-children")]
27233 _ => {
27234 let elem = RawXmlElement::from_empty(&e);
27236 extra_children.push(PositionedNode::new(
27237 child_idx,
27238 RawXmlNode::Element(elem),
27239 ));
27240 child_idx += 1;
27241 }
27242 #[cfg(not(feature = "extra-children"))]
27243 _ => {}
27244 }
27245 }
27246 Event::End(_) => break,
27247 Event::Eof => break,
27248 _ => {}
27249 }
27250 buf.clear();
27251 }
27252 }
27253
27254 Ok(Self {
27255 #[cfg(feature = "sml-styling")]
27256 min_length: f_min_length,
27257 #[cfg(feature = "sml-styling")]
27258 max_length: f_max_length,
27259 #[cfg(feature = "sml-styling")]
27260 show_value: f_show_value,
27261 #[cfg(feature = "sml-styling")]
27262 cfvo: f_cfvo,
27263 #[cfg(feature = "sml-styling")]
27264 color: f_color.ok_or_else(|| ParseError::MissingAttribute("color".to_string()))?,
27265 #[cfg(feature = "extra-attrs")]
27266 extra_attrs,
27267 #[cfg(feature = "extra-children")]
27268 extra_children,
27269 })
27270 }
27271}
27272
27273impl FromXml for IconSet {
27274 fn from_xml<R: BufRead>(
27275 reader: &mut Reader<R>,
27276 start_tag: &BytesStart,
27277 is_empty: bool,
27278 ) -> Result<Self, ParseError> {
27279 #[cfg(feature = "sml-styling")]
27280 let mut f_icon_set = None;
27281 #[cfg(feature = "sml-styling")]
27282 let mut f_show_value = None;
27283 #[cfg(feature = "sml-styling")]
27284 let mut f_percent = None;
27285 #[cfg(feature = "sml-styling")]
27286 let mut f_reverse = None;
27287 #[cfg(feature = "sml-styling")]
27288 let mut f_cfvo = Vec::new();
27289 #[cfg(feature = "extra-attrs")]
27290 let mut extra_attrs = std::collections::HashMap::new();
27291 #[cfg(feature = "extra-children")]
27292 let mut extra_children = Vec::new();
27293 #[cfg(feature = "extra-children")]
27294 let mut child_idx: usize = 0;
27295
27296 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
27298 let val = String::from_utf8_lossy(&attr.value);
27299 match attr.key.local_name().as_ref() {
27300 #[cfg(feature = "sml-styling")]
27301 b"iconSet" => {
27302 f_icon_set = val.parse().ok();
27303 }
27304 #[cfg(feature = "sml-styling")]
27305 b"showValue" => {
27306 f_show_value = Some(val == "true" || val == "1");
27307 }
27308 #[cfg(feature = "sml-styling")]
27309 b"percent" => {
27310 f_percent = Some(val == "true" || val == "1");
27311 }
27312 #[cfg(feature = "sml-styling")]
27313 b"reverse" => {
27314 f_reverse = Some(val == "true" || val == "1");
27315 }
27316 #[cfg(feature = "extra-attrs")]
27317 unknown => {
27318 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
27319 extra_attrs.insert(key, val.into_owned());
27320 }
27321 #[cfg(not(feature = "extra-attrs"))]
27322 _ => {}
27323 }
27324 }
27325
27326 if !is_empty {
27328 let mut buf = Vec::new();
27329 loop {
27330 match reader.read_event_into(&mut buf)? {
27331 Event::Start(e) => {
27332 match e.local_name().as_ref() {
27333 #[cfg(feature = "sml-styling")]
27334 b"cfvo" => {
27335 f_cfvo.push(ConditionalFormatValue::from_xml(reader, &e, false)?);
27336 #[cfg(feature = "extra-children")]
27337 {
27338 child_idx += 1;
27339 }
27340 }
27341 #[cfg(feature = "extra-children")]
27342 _ => {
27343 let elem = RawXmlElement::from_reader(reader, &e)?;
27345 extra_children.push(PositionedNode::new(
27346 child_idx,
27347 RawXmlNode::Element(elem),
27348 ));
27349 child_idx += 1;
27350 }
27351 #[cfg(not(feature = "extra-children"))]
27352 _ => {
27353 skip_element(reader)?;
27355 }
27356 }
27357 }
27358 Event::Empty(e) => {
27359 match e.local_name().as_ref() {
27360 #[cfg(feature = "sml-styling")]
27361 b"cfvo" => {
27362 f_cfvo.push(ConditionalFormatValue::from_xml(reader, &e, true)?);
27363 #[cfg(feature = "extra-children")]
27364 {
27365 child_idx += 1;
27366 }
27367 }
27368 #[cfg(feature = "extra-children")]
27369 _ => {
27370 let elem = RawXmlElement::from_empty(&e);
27372 extra_children.push(PositionedNode::new(
27373 child_idx,
27374 RawXmlNode::Element(elem),
27375 ));
27376 child_idx += 1;
27377 }
27378 #[cfg(not(feature = "extra-children"))]
27379 _ => {}
27380 }
27381 }
27382 Event::End(_) => break,
27383 Event::Eof => break,
27384 _ => {}
27385 }
27386 buf.clear();
27387 }
27388 }
27389
27390 Ok(Self {
27391 #[cfg(feature = "sml-styling")]
27392 icon_set: f_icon_set,
27393 #[cfg(feature = "sml-styling")]
27394 show_value: f_show_value,
27395 #[cfg(feature = "sml-styling")]
27396 percent: f_percent,
27397 #[cfg(feature = "sml-styling")]
27398 reverse: f_reverse,
27399 #[cfg(feature = "sml-styling")]
27400 cfvo: f_cfvo,
27401 #[cfg(feature = "extra-attrs")]
27402 extra_attrs,
27403 #[cfg(feature = "extra-children")]
27404 extra_children,
27405 })
27406 }
27407}
27408
27409impl FromXml for ConditionalFormatValue {
27410 fn from_xml<R: BufRead>(
27411 reader: &mut Reader<R>,
27412 start_tag: &BytesStart,
27413 is_empty: bool,
27414 ) -> Result<Self, ParseError> {
27415 #[cfg(feature = "sml-styling")]
27416 let mut f_type: Option<ConditionalValueType> = None;
27417 #[cfg(feature = "sml-styling")]
27418 let mut f_value = None;
27419 #[cfg(feature = "sml-styling")]
27420 let mut f_gte = None;
27421 let mut f_extension_list = None;
27422 #[cfg(feature = "extra-attrs")]
27423 let mut extra_attrs = std::collections::HashMap::new();
27424 #[cfg(feature = "extra-children")]
27425 let mut extra_children = Vec::new();
27426 #[cfg(feature = "extra-children")]
27427 let mut child_idx: usize = 0;
27428
27429 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
27431 let val = String::from_utf8_lossy(&attr.value);
27432 match attr.key.local_name().as_ref() {
27433 #[cfg(feature = "sml-styling")]
27434 b"type" => {
27435 f_type = val.parse().ok();
27436 }
27437 #[cfg(feature = "sml-styling")]
27438 b"val" => {
27439 f_value = Some(val.into_owned());
27440 }
27441 #[cfg(feature = "sml-styling")]
27442 b"gte" => {
27443 f_gte = Some(val == "true" || val == "1");
27444 }
27445 #[cfg(feature = "extra-attrs")]
27446 unknown => {
27447 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
27448 extra_attrs.insert(key, val.into_owned());
27449 }
27450 #[cfg(not(feature = "extra-attrs"))]
27451 _ => {}
27452 }
27453 }
27454
27455 if !is_empty {
27457 let mut buf = Vec::new();
27458 loop {
27459 match reader.read_event_into(&mut buf)? {
27460 Event::Start(e) => {
27461 match e.local_name().as_ref() {
27462 b"extLst" => {
27463 f_extension_list =
27464 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
27465 #[cfg(feature = "extra-children")]
27466 {
27467 child_idx += 1;
27468 }
27469 }
27470 #[cfg(feature = "extra-children")]
27471 _ => {
27472 let elem = RawXmlElement::from_reader(reader, &e)?;
27474 extra_children.push(PositionedNode::new(
27475 child_idx,
27476 RawXmlNode::Element(elem),
27477 ));
27478 child_idx += 1;
27479 }
27480 #[cfg(not(feature = "extra-children"))]
27481 _ => {
27482 skip_element(reader)?;
27484 }
27485 }
27486 }
27487 Event::Empty(e) => {
27488 match e.local_name().as_ref() {
27489 b"extLst" => {
27490 f_extension_list =
27491 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
27492 #[cfg(feature = "extra-children")]
27493 {
27494 child_idx += 1;
27495 }
27496 }
27497 #[cfg(feature = "extra-children")]
27498 _ => {
27499 let elem = RawXmlElement::from_empty(&e);
27501 extra_children.push(PositionedNode::new(
27502 child_idx,
27503 RawXmlNode::Element(elem),
27504 ));
27505 child_idx += 1;
27506 }
27507 #[cfg(not(feature = "extra-children"))]
27508 _ => {}
27509 }
27510 }
27511 Event::End(_) => break,
27512 Event::Eof => break,
27513 _ => {}
27514 }
27515 buf.clear();
27516 }
27517 }
27518
27519 Ok(Self {
27520 #[cfg(feature = "sml-styling")]
27521 r#type: f_type.ok_or_else(|| ParseError::MissingAttribute("type".to_string()))?,
27522 #[cfg(feature = "sml-styling")]
27523 value: f_value,
27524 #[cfg(feature = "sml-styling")]
27525 gte: f_gte,
27526 extension_list: f_extension_list,
27527 #[cfg(feature = "extra-attrs")]
27528 extra_attrs,
27529 #[cfg(feature = "extra-children")]
27530 extra_children,
27531 })
27532 }
27533}
27534
27535impl FromXml for PageMargins {
27536 fn from_xml<R: BufRead>(
27537 reader: &mut Reader<R>,
27538 start_tag: &BytesStart,
27539 is_empty: bool,
27540 ) -> Result<Self, ParseError> {
27541 #[cfg(feature = "sml-layout")]
27542 let mut f_left: Option<f64> = None;
27543 #[cfg(feature = "sml-layout")]
27544 let mut f_right: Option<f64> = None;
27545 #[cfg(feature = "sml-layout")]
27546 let mut f_top: Option<f64> = None;
27547 #[cfg(feature = "sml-layout")]
27548 let mut f_bottom: Option<f64> = None;
27549 #[cfg(feature = "sml-layout")]
27550 let mut f_header: Option<f64> = None;
27551 #[cfg(feature = "sml-layout")]
27552 let mut f_footer: Option<f64> = None;
27553 #[cfg(feature = "extra-attrs")]
27554 let mut extra_attrs = std::collections::HashMap::new();
27555
27556 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
27558 let val = String::from_utf8_lossy(&attr.value);
27559 match attr.key.local_name().as_ref() {
27560 #[cfg(feature = "sml-layout")]
27561 b"left" => {
27562 f_left = val.parse().ok();
27563 }
27564 #[cfg(feature = "sml-layout")]
27565 b"right" => {
27566 f_right = val.parse().ok();
27567 }
27568 #[cfg(feature = "sml-layout")]
27569 b"top" => {
27570 f_top = val.parse().ok();
27571 }
27572 #[cfg(feature = "sml-layout")]
27573 b"bottom" => {
27574 f_bottom = val.parse().ok();
27575 }
27576 #[cfg(feature = "sml-layout")]
27577 b"header" => {
27578 f_header = val.parse().ok();
27579 }
27580 #[cfg(feature = "sml-layout")]
27581 b"footer" => {
27582 f_footer = val.parse().ok();
27583 }
27584 #[cfg(feature = "extra-attrs")]
27585 unknown => {
27586 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
27587 extra_attrs.insert(key, val.into_owned());
27588 }
27589 #[cfg(not(feature = "extra-attrs"))]
27590 _ => {}
27591 }
27592 }
27593
27594 if !is_empty {
27595 let mut buf = Vec::new();
27596 loop {
27597 match reader.read_event_into(&mut buf)? {
27598 Event::End(_) => break,
27599 Event::Eof => break,
27600 _ => {}
27601 }
27602 buf.clear();
27603 }
27604 }
27605
27606 Ok(Self {
27607 #[cfg(feature = "sml-layout")]
27608 left: f_left.ok_or_else(|| ParseError::MissingAttribute("left".to_string()))?,
27609 #[cfg(feature = "sml-layout")]
27610 right: f_right.ok_or_else(|| ParseError::MissingAttribute("right".to_string()))?,
27611 #[cfg(feature = "sml-layout")]
27612 top: f_top.ok_or_else(|| ParseError::MissingAttribute("top".to_string()))?,
27613 #[cfg(feature = "sml-layout")]
27614 bottom: f_bottom.ok_or_else(|| ParseError::MissingAttribute("bottom".to_string()))?,
27615 #[cfg(feature = "sml-layout")]
27616 header: f_header.ok_or_else(|| ParseError::MissingAttribute("header".to_string()))?,
27617 #[cfg(feature = "sml-layout")]
27618 footer: f_footer.ok_or_else(|| ParseError::MissingAttribute("footer".to_string()))?,
27619 #[cfg(feature = "extra-attrs")]
27620 extra_attrs,
27621 })
27622 }
27623}
27624
27625impl FromXml for PrintOptions {
27626 fn from_xml<R: BufRead>(
27627 reader: &mut Reader<R>,
27628 start_tag: &BytesStart,
27629 is_empty: bool,
27630 ) -> Result<Self, ParseError> {
27631 let mut f_horizontal_centered = None;
27632 let mut f_vertical_centered = None;
27633 let mut f_headings = None;
27634 let mut f_grid_lines = None;
27635 let mut f_grid_lines_set = None;
27636 #[cfg(feature = "extra-attrs")]
27637 let mut extra_attrs = std::collections::HashMap::new();
27638
27639 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
27641 let val = String::from_utf8_lossy(&attr.value);
27642 match attr.key.local_name().as_ref() {
27643 b"horizontalCentered" => {
27644 f_horizontal_centered = Some(val == "true" || val == "1");
27645 }
27646 b"verticalCentered" => {
27647 f_vertical_centered = Some(val == "true" || val == "1");
27648 }
27649 b"headings" => {
27650 f_headings = Some(val == "true" || val == "1");
27651 }
27652 b"gridLines" => {
27653 f_grid_lines = Some(val == "true" || val == "1");
27654 }
27655 b"gridLinesSet" => {
27656 f_grid_lines_set = Some(val == "true" || val == "1");
27657 }
27658 #[cfg(feature = "extra-attrs")]
27659 unknown => {
27660 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
27661 extra_attrs.insert(key, val.into_owned());
27662 }
27663 #[cfg(not(feature = "extra-attrs"))]
27664 _ => {}
27665 }
27666 }
27667
27668 if !is_empty {
27669 let mut buf = Vec::new();
27670 loop {
27671 match reader.read_event_into(&mut buf)? {
27672 Event::End(_) => break,
27673 Event::Eof => break,
27674 _ => {}
27675 }
27676 buf.clear();
27677 }
27678 }
27679
27680 Ok(Self {
27681 horizontal_centered: f_horizontal_centered,
27682 vertical_centered: f_vertical_centered,
27683 headings: f_headings,
27684 grid_lines: f_grid_lines,
27685 grid_lines_set: f_grid_lines_set,
27686 #[cfg(feature = "extra-attrs")]
27687 extra_attrs,
27688 })
27689 }
27690}
27691
27692impl FromXml for PageSetup {
27693 fn from_xml<R: BufRead>(
27694 reader: &mut Reader<R>,
27695 start_tag: &BytesStart,
27696 is_empty: bool,
27697 ) -> Result<Self, ParseError> {
27698 #[cfg(feature = "sml-layout")]
27699 let mut f_paper_size = None;
27700 #[cfg(feature = "sml-layout")]
27701 let mut f_paper_height = None;
27702 #[cfg(feature = "sml-layout")]
27703 let mut f_paper_width = None;
27704 #[cfg(feature = "sml-layout")]
27705 let mut f_scale = None;
27706 #[cfg(feature = "sml-layout")]
27707 let mut f_first_page_number = None;
27708 #[cfg(feature = "sml-layout")]
27709 let mut f_fit_to_width = None;
27710 #[cfg(feature = "sml-layout")]
27711 let mut f_fit_to_height = None;
27712 #[cfg(feature = "sml-layout")]
27713 let mut f_page_order = None;
27714 #[cfg(feature = "sml-layout")]
27715 let mut f_orientation = None;
27716 #[cfg(feature = "sml-layout")]
27717 let mut f_use_printer_defaults = None;
27718 #[cfg(feature = "sml-layout")]
27719 let mut f_black_and_white = None;
27720 #[cfg(feature = "sml-layout")]
27721 let mut f_draft = None;
27722 #[cfg(feature = "sml-layout")]
27723 let mut f_cell_comments = None;
27724 #[cfg(feature = "sml-layout")]
27725 let mut f_use_first_page_number = None;
27726 #[cfg(feature = "sml-layout")]
27727 let mut f_errors = None;
27728 #[cfg(feature = "sml-layout")]
27729 let mut f_horizontal_dpi = None;
27730 #[cfg(feature = "sml-layout")]
27731 let mut f_vertical_dpi = None;
27732 #[cfg(feature = "sml-layout")]
27733 let mut f_copies = None;
27734 let mut f_id = None;
27735 #[cfg(feature = "extra-attrs")]
27736 let mut extra_attrs = std::collections::HashMap::new();
27737
27738 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
27740 let val = String::from_utf8_lossy(&attr.value);
27741 match attr.key.local_name().as_ref() {
27742 #[cfg(feature = "sml-layout")]
27743 b"paperSize" => {
27744 f_paper_size = val.parse().ok();
27745 }
27746 #[cfg(feature = "sml-layout")]
27747 b"paperHeight" => {
27748 f_paper_height = Some(val.into_owned());
27749 }
27750 #[cfg(feature = "sml-layout")]
27751 b"paperWidth" => {
27752 f_paper_width = Some(val.into_owned());
27753 }
27754 #[cfg(feature = "sml-layout")]
27755 b"scale" => {
27756 f_scale = val.parse().ok();
27757 }
27758 #[cfg(feature = "sml-layout")]
27759 b"firstPageNumber" => {
27760 f_first_page_number = val.parse().ok();
27761 }
27762 #[cfg(feature = "sml-layout")]
27763 b"fitToWidth" => {
27764 f_fit_to_width = val.parse().ok();
27765 }
27766 #[cfg(feature = "sml-layout")]
27767 b"fitToHeight" => {
27768 f_fit_to_height = val.parse().ok();
27769 }
27770 #[cfg(feature = "sml-layout")]
27771 b"pageOrder" => {
27772 f_page_order = val.parse().ok();
27773 }
27774 #[cfg(feature = "sml-layout")]
27775 b"orientation" => {
27776 f_orientation = val.parse().ok();
27777 }
27778 #[cfg(feature = "sml-layout")]
27779 b"usePrinterDefaults" => {
27780 f_use_printer_defaults = Some(val == "true" || val == "1");
27781 }
27782 #[cfg(feature = "sml-layout")]
27783 b"blackAndWhite" => {
27784 f_black_and_white = Some(val == "true" || val == "1");
27785 }
27786 #[cfg(feature = "sml-layout")]
27787 b"draft" => {
27788 f_draft = Some(val == "true" || val == "1");
27789 }
27790 #[cfg(feature = "sml-layout")]
27791 b"cellComments" => {
27792 f_cell_comments = val.parse().ok();
27793 }
27794 #[cfg(feature = "sml-layout")]
27795 b"useFirstPageNumber" => {
27796 f_use_first_page_number = Some(val == "true" || val == "1");
27797 }
27798 #[cfg(feature = "sml-layout")]
27799 b"errors" => {
27800 f_errors = val.parse().ok();
27801 }
27802 #[cfg(feature = "sml-layout")]
27803 b"horizontalDpi" => {
27804 f_horizontal_dpi = val.parse().ok();
27805 }
27806 #[cfg(feature = "sml-layout")]
27807 b"verticalDpi" => {
27808 f_vertical_dpi = val.parse().ok();
27809 }
27810 #[cfg(feature = "sml-layout")]
27811 b"copies" => {
27812 f_copies = val.parse().ok();
27813 }
27814 b"id" => {
27815 f_id = Some(val.into_owned());
27816 }
27817 #[cfg(feature = "extra-attrs")]
27818 unknown => {
27819 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
27820 extra_attrs.insert(key, val.into_owned());
27821 }
27822 #[cfg(not(feature = "extra-attrs"))]
27823 _ => {}
27824 }
27825 }
27826
27827 if !is_empty {
27828 let mut buf = Vec::new();
27829 loop {
27830 match reader.read_event_into(&mut buf)? {
27831 Event::End(_) => break,
27832 Event::Eof => break,
27833 _ => {}
27834 }
27835 buf.clear();
27836 }
27837 }
27838
27839 Ok(Self {
27840 #[cfg(feature = "sml-layout")]
27841 paper_size: f_paper_size,
27842 #[cfg(feature = "sml-layout")]
27843 paper_height: f_paper_height,
27844 #[cfg(feature = "sml-layout")]
27845 paper_width: f_paper_width,
27846 #[cfg(feature = "sml-layout")]
27847 scale: f_scale,
27848 #[cfg(feature = "sml-layout")]
27849 first_page_number: f_first_page_number,
27850 #[cfg(feature = "sml-layout")]
27851 fit_to_width: f_fit_to_width,
27852 #[cfg(feature = "sml-layout")]
27853 fit_to_height: f_fit_to_height,
27854 #[cfg(feature = "sml-layout")]
27855 page_order: f_page_order,
27856 #[cfg(feature = "sml-layout")]
27857 orientation: f_orientation,
27858 #[cfg(feature = "sml-layout")]
27859 use_printer_defaults: f_use_printer_defaults,
27860 #[cfg(feature = "sml-layout")]
27861 black_and_white: f_black_and_white,
27862 #[cfg(feature = "sml-layout")]
27863 draft: f_draft,
27864 #[cfg(feature = "sml-layout")]
27865 cell_comments: f_cell_comments,
27866 #[cfg(feature = "sml-layout")]
27867 use_first_page_number: f_use_first_page_number,
27868 #[cfg(feature = "sml-layout")]
27869 errors: f_errors,
27870 #[cfg(feature = "sml-layout")]
27871 horizontal_dpi: f_horizontal_dpi,
27872 #[cfg(feature = "sml-layout")]
27873 vertical_dpi: f_vertical_dpi,
27874 #[cfg(feature = "sml-layout")]
27875 copies: f_copies,
27876 id: f_id,
27877 #[cfg(feature = "extra-attrs")]
27878 extra_attrs,
27879 })
27880 }
27881}
27882
27883impl FromXml for HeaderFooter {
27884 fn from_xml<R: BufRead>(
27885 reader: &mut Reader<R>,
27886 start_tag: &BytesStart,
27887 is_empty: bool,
27888 ) -> Result<Self, ParseError> {
27889 #[cfg(feature = "sml-layout")]
27890 let mut f_different_odd_even = None;
27891 #[cfg(feature = "sml-layout")]
27892 let mut f_different_first = None;
27893 #[cfg(feature = "sml-layout")]
27894 let mut f_scale_with_doc = None;
27895 #[cfg(feature = "sml-layout")]
27896 let mut f_align_with_margins = None;
27897 #[cfg(feature = "sml-layout")]
27898 let mut f_odd_header = None;
27899 #[cfg(feature = "sml-layout")]
27900 let mut f_odd_footer = None;
27901 #[cfg(feature = "sml-layout")]
27902 let mut f_even_header = None;
27903 #[cfg(feature = "sml-layout")]
27904 let mut f_even_footer = None;
27905 #[cfg(feature = "sml-layout")]
27906 let mut f_first_header = None;
27907 #[cfg(feature = "sml-layout")]
27908 let mut f_first_footer = None;
27909 #[cfg(feature = "extra-attrs")]
27910 let mut extra_attrs = std::collections::HashMap::new();
27911 #[cfg(feature = "extra-children")]
27912 let mut extra_children = Vec::new();
27913 #[cfg(feature = "extra-children")]
27914 let mut child_idx: usize = 0;
27915
27916 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
27918 let val = String::from_utf8_lossy(&attr.value);
27919 match attr.key.local_name().as_ref() {
27920 #[cfg(feature = "sml-layout")]
27921 b"differentOddEven" => {
27922 f_different_odd_even = Some(val == "true" || val == "1");
27923 }
27924 #[cfg(feature = "sml-layout")]
27925 b"differentFirst" => {
27926 f_different_first = Some(val == "true" || val == "1");
27927 }
27928 #[cfg(feature = "sml-layout")]
27929 b"scaleWithDoc" => {
27930 f_scale_with_doc = Some(val == "true" || val == "1");
27931 }
27932 #[cfg(feature = "sml-layout")]
27933 b"alignWithMargins" => {
27934 f_align_with_margins = Some(val == "true" || val == "1");
27935 }
27936 #[cfg(feature = "extra-attrs")]
27937 unknown => {
27938 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
27939 extra_attrs.insert(key, val.into_owned());
27940 }
27941 #[cfg(not(feature = "extra-attrs"))]
27942 _ => {}
27943 }
27944 }
27945
27946 if !is_empty {
27948 let mut buf = Vec::new();
27949 loop {
27950 match reader.read_event_into(&mut buf)? {
27951 Event::Start(e) => {
27952 match e.local_name().as_ref() {
27953 #[cfg(feature = "sml-layout")]
27954 b"oddHeader" => {
27955 f_odd_header = Some(read_text_content(reader)?);
27956 #[cfg(feature = "extra-children")]
27957 {
27958 child_idx += 1;
27959 }
27960 }
27961 #[cfg(feature = "sml-layout")]
27962 b"oddFooter" => {
27963 f_odd_footer = Some(read_text_content(reader)?);
27964 #[cfg(feature = "extra-children")]
27965 {
27966 child_idx += 1;
27967 }
27968 }
27969 #[cfg(feature = "sml-layout")]
27970 b"evenHeader" => {
27971 f_even_header = Some(read_text_content(reader)?);
27972 #[cfg(feature = "extra-children")]
27973 {
27974 child_idx += 1;
27975 }
27976 }
27977 #[cfg(feature = "sml-layout")]
27978 b"evenFooter" => {
27979 f_even_footer = Some(read_text_content(reader)?);
27980 #[cfg(feature = "extra-children")]
27981 {
27982 child_idx += 1;
27983 }
27984 }
27985 #[cfg(feature = "sml-layout")]
27986 b"firstHeader" => {
27987 f_first_header = Some(read_text_content(reader)?);
27988 #[cfg(feature = "extra-children")]
27989 {
27990 child_idx += 1;
27991 }
27992 }
27993 #[cfg(feature = "sml-layout")]
27994 b"firstFooter" => {
27995 f_first_footer = Some(read_text_content(reader)?);
27996 #[cfg(feature = "extra-children")]
27997 {
27998 child_idx += 1;
27999 }
28000 }
28001 #[cfg(feature = "extra-children")]
28002 _ => {
28003 let elem = RawXmlElement::from_reader(reader, &e)?;
28005 extra_children.push(PositionedNode::new(
28006 child_idx,
28007 RawXmlNode::Element(elem),
28008 ));
28009 child_idx += 1;
28010 }
28011 #[cfg(not(feature = "extra-children"))]
28012 _ => {
28013 skip_element(reader)?;
28015 }
28016 }
28017 }
28018 Event::Empty(e) => {
28019 match e.local_name().as_ref() {
28020 #[cfg(feature = "sml-layout")]
28021 b"oddHeader" => {
28022 f_odd_header = Some(String::new());
28023 #[cfg(feature = "extra-children")]
28024 {
28025 child_idx += 1;
28026 }
28027 }
28028 #[cfg(feature = "sml-layout")]
28029 b"oddFooter" => {
28030 f_odd_footer = Some(String::new());
28031 #[cfg(feature = "extra-children")]
28032 {
28033 child_idx += 1;
28034 }
28035 }
28036 #[cfg(feature = "sml-layout")]
28037 b"evenHeader" => {
28038 f_even_header = Some(String::new());
28039 #[cfg(feature = "extra-children")]
28040 {
28041 child_idx += 1;
28042 }
28043 }
28044 #[cfg(feature = "sml-layout")]
28045 b"evenFooter" => {
28046 f_even_footer = Some(String::new());
28047 #[cfg(feature = "extra-children")]
28048 {
28049 child_idx += 1;
28050 }
28051 }
28052 #[cfg(feature = "sml-layout")]
28053 b"firstHeader" => {
28054 f_first_header = Some(String::new());
28055 #[cfg(feature = "extra-children")]
28056 {
28057 child_idx += 1;
28058 }
28059 }
28060 #[cfg(feature = "sml-layout")]
28061 b"firstFooter" => {
28062 f_first_footer = Some(String::new());
28063 #[cfg(feature = "extra-children")]
28064 {
28065 child_idx += 1;
28066 }
28067 }
28068 #[cfg(feature = "extra-children")]
28069 _ => {
28070 let elem = RawXmlElement::from_empty(&e);
28072 extra_children.push(PositionedNode::new(
28073 child_idx,
28074 RawXmlNode::Element(elem),
28075 ));
28076 child_idx += 1;
28077 }
28078 #[cfg(not(feature = "extra-children"))]
28079 _ => {}
28080 }
28081 }
28082 Event::End(_) => break,
28083 Event::Eof => break,
28084 _ => {}
28085 }
28086 buf.clear();
28087 }
28088 }
28089
28090 Ok(Self {
28091 #[cfg(feature = "sml-layout")]
28092 different_odd_even: f_different_odd_even,
28093 #[cfg(feature = "sml-layout")]
28094 different_first: f_different_first,
28095 #[cfg(feature = "sml-layout")]
28096 scale_with_doc: f_scale_with_doc,
28097 #[cfg(feature = "sml-layout")]
28098 align_with_margins: f_align_with_margins,
28099 #[cfg(feature = "sml-layout")]
28100 odd_header: f_odd_header,
28101 #[cfg(feature = "sml-layout")]
28102 odd_footer: f_odd_footer,
28103 #[cfg(feature = "sml-layout")]
28104 even_header: f_even_header,
28105 #[cfg(feature = "sml-layout")]
28106 even_footer: f_even_footer,
28107 #[cfg(feature = "sml-layout")]
28108 first_header: f_first_header,
28109 #[cfg(feature = "sml-layout")]
28110 first_footer: f_first_footer,
28111 #[cfg(feature = "extra-attrs")]
28112 extra_attrs,
28113 #[cfg(feature = "extra-children")]
28114 extra_children,
28115 })
28116 }
28117}
28118
28119impl FromXml for Scenarios {
28120 fn from_xml<R: BufRead>(
28121 reader: &mut Reader<R>,
28122 start_tag: &BytesStart,
28123 is_empty: bool,
28124 ) -> Result<Self, ParseError> {
28125 let mut f_current = None;
28126 let mut f_show = None;
28127 let mut f_square_reference = None;
28128 let mut f_scenario = Vec::new();
28129 #[cfg(feature = "extra-attrs")]
28130 let mut extra_attrs = std::collections::HashMap::new();
28131 #[cfg(feature = "extra-children")]
28132 let mut extra_children = Vec::new();
28133 #[cfg(feature = "extra-children")]
28134 let mut child_idx: usize = 0;
28135
28136 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
28138 let val = String::from_utf8_lossy(&attr.value);
28139 match attr.key.local_name().as_ref() {
28140 b"current" => {
28141 f_current = val.parse().ok();
28142 }
28143 b"show" => {
28144 f_show = val.parse().ok();
28145 }
28146 b"sqref" => {
28147 f_square_reference = Some(val.into_owned());
28148 }
28149 #[cfg(feature = "extra-attrs")]
28150 unknown => {
28151 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
28152 extra_attrs.insert(key, val.into_owned());
28153 }
28154 #[cfg(not(feature = "extra-attrs"))]
28155 _ => {}
28156 }
28157 }
28158
28159 if !is_empty {
28161 let mut buf = Vec::new();
28162 loop {
28163 match reader.read_event_into(&mut buf)? {
28164 Event::Start(e) => {
28165 match e.local_name().as_ref() {
28166 b"scenario" => {
28167 f_scenario.push(Scenario::from_xml(reader, &e, false)?);
28168 #[cfg(feature = "extra-children")]
28169 {
28170 child_idx += 1;
28171 }
28172 }
28173 #[cfg(feature = "extra-children")]
28174 _ => {
28175 let elem = RawXmlElement::from_reader(reader, &e)?;
28177 extra_children.push(PositionedNode::new(
28178 child_idx,
28179 RawXmlNode::Element(elem),
28180 ));
28181 child_idx += 1;
28182 }
28183 #[cfg(not(feature = "extra-children"))]
28184 _ => {
28185 skip_element(reader)?;
28187 }
28188 }
28189 }
28190 Event::Empty(e) => {
28191 match e.local_name().as_ref() {
28192 b"scenario" => {
28193 f_scenario.push(Scenario::from_xml(reader, &e, true)?);
28194 #[cfg(feature = "extra-children")]
28195 {
28196 child_idx += 1;
28197 }
28198 }
28199 #[cfg(feature = "extra-children")]
28200 _ => {
28201 let elem = RawXmlElement::from_empty(&e);
28203 extra_children.push(PositionedNode::new(
28204 child_idx,
28205 RawXmlNode::Element(elem),
28206 ));
28207 child_idx += 1;
28208 }
28209 #[cfg(not(feature = "extra-children"))]
28210 _ => {}
28211 }
28212 }
28213 Event::End(_) => break,
28214 Event::Eof => break,
28215 _ => {}
28216 }
28217 buf.clear();
28218 }
28219 }
28220
28221 Ok(Self {
28222 current: f_current,
28223 show: f_show,
28224 square_reference: f_square_reference,
28225 scenario: f_scenario,
28226 #[cfg(feature = "extra-attrs")]
28227 extra_attrs,
28228 #[cfg(feature = "extra-children")]
28229 extra_children,
28230 })
28231 }
28232}
28233
28234impl FromXml for SheetProtection {
28235 fn from_xml<R: BufRead>(
28236 reader: &mut Reader<R>,
28237 start_tag: &BytesStart,
28238 is_empty: bool,
28239 ) -> Result<Self, ParseError> {
28240 let mut f_password = None;
28241 let mut f_algorithm_name = None;
28242 let mut f_hash_value = None;
28243 let mut f_salt_value = None;
28244 let mut f_spin_count = None;
28245 let mut f_sheet = None;
28246 let mut f_objects = None;
28247 let mut f_scenarios = None;
28248 let mut f_format_cells = None;
28249 let mut f_format_columns = None;
28250 let mut f_format_rows = None;
28251 let mut f_insert_columns = None;
28252 let mut f_insert_rows = None;
28253 let mut f_insert_hyperlinks = None;
28254 let mut f_delete_columns = None;
28255 let mut f_delete_rows = None;
28256 let mut f_select_locked_cells = None;
28257 let mut f_sort = None;
28258 let mut f_auto_filter = None;
28259 let mut f_pivot_tables = None;
28260 let mut f_select_unlocked_cells = None;
28261 #[cfg(feature = "extra-attrs")]
28262 let mut extra_attrs = std::collections::HashMap::new();
28263
28264 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
28266 let val = String::from_utf8_lossy(&attr.value);
28267 match attr.key.local_name().as_ref() {
28268 b"password" => {
28269 f_password = decode_hex(&val);
28270 }
28271 b"algorithmName" => {
28272 f_algorithm_name = Some(val.into_owned());
28273 }
28274 b"hashValue" => {
28275 f_hash_value = decode_base64(&val);
28276 }
28277 b"saltValue" => {
28278 f_salt_value = decode_base64(&val);
28279 }
28280 b"spinCount" => {
28281 f_spin_count = val.parse().ok();
28282 }
28283 b"sheet" => {
28284 f_sheet = Some(val == "true" || val == "1");
28285 }
28286 b"objects" => {
28287 f_objects = Some(val == "true" || val == "1");
28288 }
28289 b"scenarios" => {
28290 f_scenarios = Some(val == "true" || val == "1");
28291 }
28292 b"formatCells" => {
28293 f_format_cells = Some(val == "true" || val == "1");
28294 }
28295 b"formatColumns" => {
28296 f_format_columns = Some(val == "true" || val == "1");
28297 }
28298 b"formatRows" => {
28299 f_format_rows = Some(val == "true" || val == "1");
28300 }
28301 b"insertColumns" => {
28302 f_insert_columns = Some(val == "true" || val == "1");
28303 }
28304 b"insertRows" => {
28305 f_insert_rows = Some(val == "true" || val == "1");
28306 }
28307 b"insertHyperlinks" => {
28308 f_insert_hyperlinks = Some(val == "true" || val == "1");
28309 }
28310 b"deleteColumns" => {
28311 f_delete_columns = Some(val == "true" || val == "1");
28312 }
28313 b"deleteRows" => {
28314 f_delete_rows = Some(val == "true" || val == "1");
28315 }
28316 b"selectLockedCells" => {
28317 f_select_locked_cells = Some(val == "true" || val == "1");
28318 }
28319 b"sort" => {
28320 f_sort = Some(val == "true" || val == "1");
28321 }
28322 b"autoFilter" => {
28323 f_auto_filter = Some(val == "true" || val == "1");
28324 }
28325 b"pivotTables" => {
28326 f_pivot_tables = Some(val == "true" || val == "1");
28327 }
28328 b"selectUnlockedCells" => {
28329 f_select_unlocked_cells = Some(val == "true" || val == "1");
28330 }
28331 #[cfg(feature = "extra-attrs")]
28332 unknown => {
28333 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
28334 extra_attrs.insert(key, val.into_owned());
28335 }
28336 #[cfg(not(feature = "extra-attrs"))]
28337 _ => {}
28338 }
28339 }
28340
28341 if !is_empty {
28342 let mut buf = Vec::new();
28343 loop {
28344 match reader.read_event_into(&mut buf)? {
28345 Event::End(_) => break,
28346 Event::Eof => break,
28347 _ => {}
28348 }
28349 buf.clear();
28350 }
28351 }
28352
28353 Ok(Self {
28354 password: f_password,
28355 algorithm_name: f_algorithm_name,
28356 hash_value: f_hash_value,
28357 salt_value: f_salt_value,
28358 spin_count: f_spin_count,
28359 sheet: f_sheet,
28360 objects: f_objects,
28361 scenarios: f_scenarios,
28362 format_cells: f_format_cells,
28363 format_columns: f_format_columns,
28364 format_rows: f_format_rows,
28365 insert_columns: f_insert_columns,
28366 insert_rows: f_insert_rows,
28367 insert_hyperlinks: f_insert_hyperlinks,
28368 delete_columns: f_delete_columns,
28369 delete_rows: f_delete_rows,
28370 select_locked_cells: f_select_locked_cells,
28371 sort: f_sort,
28372 auto_filter: f_auto_filter,
28373 pivot_tables: f_pivot_tables,
28374 select_unlocked_cells: f_select_unlocked_cells,
28375 #[cfg(feature = "extra-attrs")]
28376 extra_attrs,
28377 })
28378 }
28379}
28380
28381impl FromXml for ProtectedRanges {
28382 fn from_xml<R: BufRead>(
28383 reader: &mut Reader<R>,
28384 start_tag: &BytesStart,
28385 is_empty: bool,
28386 ) -> Result<Self, ParseError> {
28387 let mut f_protected_range = Vec::new();
28388 #[cfg(feature = "extra-children")]
28389 let mut extra_children = Vec::new();
28390 #[cfg(feature = "extra-children")]
28391 let mut child_idx: usize = 0;
28392
28393 if !is_empty {
28395 let mut buf = Vec::new();
28396 loop {
28397 match reader.read_event_into(&mut buf)? {
28398 Event::Start(e) => {
28399 match e.local_name().as_ref() {
28400 b"protectedRange" => {
28401 f_protected_range
28402 .push(ProtectedRange::from_xml(reader, &e, false)?);
28403 #[cfg(feature = "extra-children")]
28404 {
28405 child_idx += 1;
28406 }
28407 }
28408 #[cfg(feature = "extra-children")]
28409 _ => {
28410 let elem = RawXmlElement::from_reader(reader, &e)?;
28412 extra_children.push(PositionedNode::new(
28413 child_idx,
28414 RawXmlNode::Element(elem),
28415 ));
28416 child_idx += 1;
28417 }
28418 #[cfg(not(feature = "extra-children"))]
28419 _ => {
28420 skip_element(reader)?;
28422 }
28423 }
28424 }
28425 Event::Empty(e) => {
28426 match e.local_name().as_ref() {
28427 b"protectedRange" => {
28428 f_protected_range.push(ProtectedRange::from_xml(reader, &e, true)?);
28429 #[cfg(feature = "extra-children")]
28430 {
28431 child_idx += 1;
28432 }
28433 }
28434 #[cfg(feature = "extra-children")]
28435 _ => {
28436 let elem = RawXmlElement::from_empty(&e);
28438 extra_children.push(PositionedNode::new(
28439 child_idx,
28440 RawXmlNode::Element(elem),
28441 ));
28442 child_idx += 1;
28443 }
28444 #[cfg(not(feature = "extra-children"))]
28445 _ => {}
28446 }
28447 }
28448 Event::End(_) => break,
28449 Event::Eof => break,
28450 _ => {}
28451 }
28452 buf.clear();
28453 }
28454 }
28455
28456 Ok(Self {
28457 protected_range: f_protected_range,
28458 #[cfg(feature = "extra-children")]
28459 extra_children,
28460 })
28461 }
28462}
28463
28464impl FromXml for ProtectedRange {
28465 fn from_xml<R: BufRead>(
28466 reader: &mut Reader<R>,
28467 start_tag: &BytesStart,
28468 is_empty: bool,
28469 ) -> Result<Self, ParseError> {
28470 let mut f_password = None;
28471 let mut f_square_reference: Option<SquareRef> = None;
28472 let mut f_name: Option<XmlString> = None;
28473 let mut f_security_descriptor = None;
28474 let mut f_algorithm_name = None;
28475 let mut f_hash_value = None;
28476 let mut f_salt_value = None;
28477 let mut f_spin_count = None;
28478 #[cfg(feature = "extra-attrs")]
28479 let mut extra_attrs = std::collections::HashMap::new();
28480
28481 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
28483 let val = String::from_utf8_lossy(&attr.value);
28484 match attr.key.local_name().as_ref() {
28485 b"password" => {
28486 f_password = decode_hex(&val);
28487 }
28488 b"sqref" => {
28489 f_square_reference = Some(val.into_owned());
28490 }
28491 b"name" => {
28492 f_name = Some(val.into_owned());
28493 }
28494 b"securityDescriptor" => {
28495 f_security_descriptor = Some(val.into_owned());
28496 }
28497 b"algorithmName" => {
28498 f_algorithm_name = Some(val.into_owned());
28499 }
28500 b"hashValue" => {
28501 f_hash_value = decode_base64(&val);
28502 }
28503 b"saltValue" => {
28504 f_salt_value = decode_base64(&val);
28505 }
28506 b"spinCount" => {
28507 f_spin_count = val.parse().ok();
28508 }
28509 #[cfg(feature = "extra-attrs")]
28510 unknown => {
28511 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
28512 extra_attrs.insert(key, val.into_owned());
28513 }
28514 #[cfg(not(feature = "extra-attrs"))]
28515 _ => {}
28516 }
28517 }
28518
28519 if !is_empty {
28520 let mut buf = Vec::new();
28521 loop {
28522 match reader.read_event_into(&mut buf)? {
28523 Event::End(_) => break,
28524 Event::Eof => break,
28525 _ => {}
28526 }
28527 buf.clear();
28528 }
28529 }
28530
28531 Ok(Self {
28532 password: f_password,
28533 square_reference: f_square_reference
28534 .ok_or_else(|| ParseError::MissingAttribute("sqref".to_string()))?,
28535 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
28536 security_descriptor: f_security_descriptor,
28537 algorithm_name: f_algorithm_name,
28538 hash_value: f_hash_value,
28539 salt_value: f_salt_value,
28540 spin_count: f_spin_count,
28541 #[cfg(feature = "extra-attrs")]
28542 extra_attrs,
28543 })
28544 }
28545}
28546
28547impl FromXml for Scenario {
28548 fn from_xml<R: BufRead>(
28549 reader: &mut Reader<R>,
28550 start_tag: &BytesStart,
28551 is_empty: bool,
28552 ) -> Result<Self, ParseError> {
28553 let mut f_name: Option<XmlString> = None;
28554 let mut f_locked = None;
28555 let mut f_hidden = None;
28556 let mut f_count = None;
28557 let mut f_user = None;
28558 let mut f_comment = None;
28559 let mut f_input_cells = Vec::new();
28560 #[cfg(feature = "extra-attrs")]
28561 let mut extra_attrs = std::collections::HashMap::new();
28562 #[cfg(feature = "extra-children")]
28563 let mut extra_children = Vec::new();
28564 #[cfg(feature = "extra-children")]
28565 let mut child_idx: usize = 0;
28566
28567 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
28569 let val = String::from_utf8_lossy(&attr.value);
28570 match attr.key.local_name().as_ref() {
28571 b"name" => {
28572 f_name = Some(val.into_owned());
28573 }
28574 b"locked" => {
28575 f_locked = Some(val == "true" || val == "1");
28576 }
28577 b"hidden" => {
28578 f_hidden = Some(val == "true" || val == "1");
28579 }
28580 b"count" => {
28581 f_count = val.parse().ok();
28582 }
28583 b"user" => {
28584 f_user = Some(val.into_owned());
28585 }
28586 b"comment" => {
28587 f_comment = Some(val.into_owned());
28588 }
28589 #[cfg(feature = "extra-attrs")]
28590 unknown => {
28591 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
28592 extra_attrs.insert(key, val.into_owned());
28593 }
28594 #[cfg(not(feature = "extra-attrs"))]
28595 _ => {}
28596 }
28597 }
28598
28599 if !is_empty {
28601 let mut buf = Vec::new();
28602 loop {
28603 match reader.read_event_into(&mut buf)? {
28604 Event::Start(e) => {
28605 match e.local_name().as_ref() {
28606 b"inputCells" => {
28607 f_input_cells.push(InputCells::from_xml(reader, &e, false)?);
28608 #[cfg(feature = "extra-children")]
28609 {
28610 child_idx += 1;
28611 }
28612 }
28613 #[cfg(feature = "extra-children")]
28614 _ => {
28615 let elem = RawXmlElement::from_reader(reader, &e)?;
28617 extra_children.push(PositionedNode::new(
28618 child_idx,
28619 RawXmlNode::Element(elem),
28620 ));
28621 child_idx += 1;
28622 }
28623 #[cfg(not(feature = "extra-children"))]
28624 _ => {
28625 skip_element(reader)?;
28627 }
28628 }
28629 }
28630 Event::Empty(e) => {
28631 match e.local_name().as_ref() {
28632 b"inputCells" => {
28633 f_input_cells.push(InputCells::from_xml(reader, &e, true)?);
28634 #[cfg(feature = "extra-children")]
28635 {
28636 child_idx += 1;
28637 }
28638 }
28639 #[cfg(feature = "extra-children")]
28640 _ => {
28641 let elem = RawXmlElement::from_empty(&e);
28643 extra_children.push(PositionedNode::new(
28644 child_idx,
28645 RawXmlNode::Element(elem),
28646 ));
28647 child_idx += 1;
28648 }
28649 #[cfg(not(feature = "extra-children"))]
28650 _ => {}
28651 }
28652 }
28653 Event::End(_) => break,
28654 Event::Eof => break,
28655 _ => {}
28656 }
28657 buf.clear();
28658 }
28659 }
28660
28661 Ok(Self {
28662 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
28663 locked: f_locked,
28664 hidden: f_hidden,
28665 count: f_count,
28666 user: f_user,
28667 comment: f_comment,
28668 input_cells: f_input_cells,
28669 #[cfg(feature = "extra-attrs")]
28670 extra_attrs,
28671 #[cfg(feature = "extra-children")]
28672 extra_children,
28673 })
28674 }
28675}
28676
28677impl FromXml for InputCells {
28678 fn from_xml<R: BufRead>(
28679 reader: &mut Reader<R>,
28680 start_tag: &BytesStart,
28681 is_empty: bool,
28682 ) -> Result<Self, ParseError> {
28683 let mut f_reference: Option<CellRef> = None;
28684 let mut f_deleted = None;
28685 let mut f_undone = None;
28686 let mut f_value: Option<XmlString> = None;
28687 let mut f_number_format_id = None;
28688 #[cfg(feature = "extra-attrs")]
28689 let mut extra_attrs = std::collections::HashMap::new();
28690
28691 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
28693 let val = String::from_utf8_lossy(&attr.value);
28694 match attr.key.local_name().as_ref() {
28695 b"r" => {
28696 f_reference = Some(val.into_owned());
28697 }
28698 b"deleted" => {
28699 f_deleted = Some(val == "true" || val == "1");
28700 }
28701 b"undone" => {
28702 f_undone = Some(val == "true" || val == "1");
28703 }
28704 b"val" => {
28705 f_value = Some(val.into_owned());
28706 }
28707 b"numFmtId" => {
28708 f_number_format_id = val.parse().ok();
28709 }
28710 #[cfg(feature = "extra-attrs")]
28711 unknown => {
28712 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
28713 extra_attrs.insert(key, val.into_owned());
28714 }
28715 #[cfg(not(feature = "extra-attrs"))]
28716 _ => {}
28717 }
28718 }
28719
28720 if !is_empty {
28721 let mut buf = Vec::new();
28722 loop {
28723 match reader.read_event_into(&mut buf)? {
28724 Event::End(_) => break,
28725 Event::Eof => break,
28726 _ => {}
28727 }
28728 buf.clear();
28729 }
28730 }
28731
28732 Ok(Self {
28733 reference: f_reference.ok_or_else(|| ParseError::MissingAttribute("r".to_string()))?,
28734 deleted: f_deleted,
28735 undone: f_undone,
28736 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
28737 number_format_id: f_number_format_id,
28738 #[cfg(feature = "extra-attrs")]
28739 extra_attrs,
28740 })
28741 }
28742}
28743
28744impl FromXml for CellWatches {
28745 fn from_xml<R: BufRead>(
28746 reader: &mut Reader<R>,
28747 start_tag: &BytesStart,
28748 is_empty: bool,
28749 ) -> Result<Self, ParseError> {
28750 let mut f_cell_watch = Vec::new();
28751 #[cfg(feature = "extra-children")]
28752 let mut extra_children = Vec::new();
28753 #[cfg(feature = "extra-children")]
28754 let mut child_idx: usize = 0;
28755
28756 if !is_empty {
28758 let mut buf = Vec::new();
28759 loop {
28760 match reader.read_event_into(&mut buf)? {
28761 Event::Start(e) => {
28762 match e.local_name().as_ref() {
28763 b"cellWatch" => {
28764 f_cell_watch.push(CellWatch::from_xml(reader, &e, false)?);
28765 #[cfg(feature = "extra-children")]
28766 {
28767 child_idx += 1;
28768 }
28769 }
28770 #[cfg(feature = "extra-children")]
28771 _ => {
28772 let elem = RawXmlElement::from_reader(reader, &e)?;
28774 extra_children.push(PositionedNode::new(
28775 child_idx,
28776 RawXmlNode::Element(elem),
28777 ));
28778 child_idx += 1;
28779 }
28780 #[cfg(not(feature = "extra-children"))]
28781 _ => {
28782 skip_element(reader)?;
28784 }
28785 }
28786 }
28787 Event::Empty(e) => {
28788 match e.local_name().as_ref() {
28789 b"cellWatch" => {
28790 f_cell_watch.push(CellWatch::from_xml(reader, &e, true)?);
28791 #[cfg(feature = "extra-children")]
28792 {
28793 child_idx += 1;
28794 }
28795 }
28796 #[cfg(feature = "extra-children")]
28797 _ => {
28798 let elem = RawXmlElement::from_empty(&e);
28800 extra_children.push(PositionedNode::new(
28801 child_idx,
28802 RawXmlNode::Element(elem),
28803 ));
28804 child_idx += 1;
28805 }
28806 #[cfg(not(feature = "extra-children"))]
28807 _ => {}
28808 }
28809 }
28810 Event::End(_) => break,
28811 Event::Eof => break,
28812 _ => {}
28813 }
28814 buf.clear();
28815 }
28816 }
28817
28818 Ok(Self {
28819 cell_watch: f_cell_watch,
28820 #[cfg(feature = "extra-children")]
28821 extra_children,
28822 })
28823 }
28824}
28825
28826impl FromXml for CellWatch {
28827 fn from_xml<R: BufRead>(
28828 reader: &mut Reader<R>,
28829 start_tag: &BytesStart,
28830 is_empty: bool,
28831 ) -> Result<Self, ParseError> {
28832 let mut f_reference: Option<CellRef> = None;
28833 #[cfg(feature = "extra-attrs")]
28834 let mut extra_attrs = std::collections::HashMap::new();
28835
28836 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
28838 let val = String::from_utf8_lossy(&attr.value);
28839 match attr.key.local_name().as_ref() {
28840 b"r" => {
28841 f_reference = Some(val.into_owned());
28842 }
28843 #[cfg(feature = "extra-attrs")]
28844 unknown => {
28845 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
28846 extra_attrs.insert(key, val.into_owned());
28847 }
28848 #[cfg(not(feature = "extra-attrs"))]
28849 _ => {}
28850 }
28851 }
28852
28853 if !is_empty {
28854 let mut buf = Vec::new();
28855 loop {
28856 match reader.read_event_into(&mut buf)? {
28857 Event::End(_) => break,
28858 Event::Eof => break,
28859 _ => {}
28860 }
28861 buf.clear();
28862 }
28863 }
28864
28865 Ok(Self {
28866 reference: f_reference.ok_or_else(|| ParseError::MissingAttribute("r".to_string()))?,
28867 #[cfg(feature = "extra-attrs")]
28868 extra_attrs,
28869 })
28870 }
28871}
28872
28873impl FromXml for Chartsheet {
28874 fn from_xml<R: BufRead>(
28875 reader: &mut Reader<R>,
28876 start_tag: &BytesStart,
28877 is_empty: bool,
28878 ) -> Result<Self, ParseError> {
28879 let mut f_sheet_properties = None;
28880 let mut f_sheet_views: Option<Box<ChartsheetViews>> = None;
28881 let mut f_sheet_protection = None;
28882 let mut f_custom_sheet_views = None;
28883 let mut f_page_margins = None;
28884 let mut f_page_setup = None;
28885 let mut f_header_footer = None;
28886 let mut f_drawing: Option<Box<Drawing>> = None;
28887 let mut f_legacy_drawing = None;
28888 let mut f_legacy_drawing_h_f = None;
28889 let mut f_drawing_h_f = None;
28890 let mut f_picture = None;
28891 let mut f_web_publish_items = None;
28892 let mut f_extension_list = None;
28893 #[cfg(feature = "extra-children")]
28894 let mut extra_children = Vec::new();
28895 #[cfg(feature = "extra-children")]
28896 let mut child_idx: usize = 0;
28897
28898 if !is_empty {
28900 let mut buf = Vec::new();
28901 loop {
28902 match reader.read_event_into(&mut buf)? {
28903 Event::Start(e) => {
28904 match e.local_name().as_ref() {
28905 b"sheetPr" => {
28906 f_sheet_properties = Some(Box::new(
28907 ChartsheetProperties::from_xml(reader, &e, false)?,
28908 ));
28909 #[cfg(feature = "extra-children")]
28910 {
28911 child_idx += 1;
28912 }
28913 }
28914 b"sheetViews" => {
28915 f_sheet_views =
28916 Some(Box::new(ChartsheetViews::from_xml(reader, &e, false)?));
28917 #[cfg(feature = "extra-children")]
28918 {
28919 child_idx += 1;
28920 }
28921 }
28922 b"sheetProtection" => {
28923 f_sheet_protection = Some(Box::new(
28924 ChartsheetProtection::from_xml(reader, &e, false)?,
28925 ));
28926 #[cfg(feature = "extra-children")]
28927 {
28928 child_idx += 1;
28929 }
28930 }
28931 b"customSheetViews" => {
28932 f_custom_sheet_views = Some(Box::new(
28933 CustomChartsheetViews::from_xml(reader, &e, false)?,
28934 ));
28935 #[cfg(feature = "extra-children")]
28936 {
28937 child_idx += 1;
28938 }
28939 }
28940 b"pageMargins" => {
28941 f_page_margins =
28942 Some(Box::new(PageMargins::from_xml(reader, &e, false)?));
28943 #[cfg(feature = "extra-children")]
28944 {
28945 child_idx += 1;
28946 }
28947 }
28948 b"pageSetup" => {
28949 f_page_setup = Some(Box::new(ChartsheetPageSetup::from_xml(
28950 reader, &e, false,
28951 )?));
28952 #[cfg(feature = "extra-children")]
28953 {
28954 child_idx += 1;
28955 }
28956 }
28957 b"headerFooter" => {
28958 f_header_footer =
28959 Some(Box::new(HeaderFooter::from_xml(reader, &e, false)?));
28960 #[cfg(feature = "extra-children")]
28961 {
28962 child_idx += 1;
28963 }
28964 }
28965 b"drawing" => {
28966 f_drawing = Some(Box::new(Drawing::from_xml(reader, &e, false)?));
28967 #[cfg(feature = "extra-children")]
28968 {
28969 child_idx += 1;
28970 }
28971 }
28972 b"legacyDrawing" => {
28973 f_legacy_drawing =
28974 Some(Box::new(LegacyDrawing::from_xml(reader, &e, false)?));
28975 #[cfg(feature = "extra-children")]
28976 {
28977 child_idx += 1;
28978 }
28979 }
28980 b"legacyDrawingHF" => {
28981 f_legacy_drawing_h_f =
28982 Some(Box::new(LegacyDrawing::from_xml(reader, &e, false)?));
28983 #[cfg(feature = "extra-children")]
28984 {
28985 child_idx += 1;
28986 }
28987 }
28988 b"drawingHF" => {
28989 f_drawing_h_f = Some(Box::new(DrawingHeaderFooter::from_xml(
28990 reader, &e, false,
28991 )?));
28992 #[cfg(feature = "extra-children")]
28993 {
28994 child_idx += 1;
28995 }
28996 }
28997 b"picture" => {
28998 f_picture = Some(Box::new(SheetBackgroundPicture::from_xml(
28999 reader, &e, false,
29000 )?));
29001 #[cfg(feature = "extra-children")]
29002 {
29003 child_idx += 1;
29004 }
29005 }
29006 b"webPublishItems" => {
29007 f_web_publish_items =
29008 Some(Box::new(WebPublishItems::from_xml(reader, &e, false)?));
29009 #[cfg(feature = "extra-children")]
29010 {
29011 child_idx += 1;
29012 }
29013 }
29014 b"extLst" => {
29015 f_extension_list =
29016 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
29017 #[cfg(feature = "extra-children")]
29018 {
29019 child_idx += 1;
29020 }
29021 }
29022 #[cfg(feature = "extra-children")]
29023 _ => {
29024 let elem = RawXmlElement::from_reader(reader, &e)?;
29026 extra_children.push(PositionedNode::new(
29027 child_idx,
29028 RawXmlNode::Element(elem),
29029 ));
29030 child_idx += 1;
29031 }
29032 #[cfg(not(feature = "extra-children"))]
29033 _ => {
29034 skip_element(reader)?;
29036 }
29037 }
29038 }
29039 Event::Empty(e) => {
29040 match e.local_name().as_ref() {
29041 b"sheetPr" => {
29042 f_sheet_properties = Some(Box::new(
29043 ChartsheetProperties::from_xml(reader, &e, true)?,
29044 ));
29045 #[cfg(feature = "extra-children")]
29046 {
29047 child_idx += 1;
29048 }
29049 }
29050 b"sheetViews" => {
29051 f_sheet_views =
29052 Some(Box::new(ChartsheetViews::from_xml(reader, &e, true)?));
29053 #[cfg(feature = "extra-children")]
29054 {
29055 child_idx += 1;
29056 }
29057 }
29058 b"sheetProtection" => {
29059 f_sheet_protection = Some(Box::new(
29060 ChartsheetProtection::from_xml(reader, &e, true)?,
29061 ));
29062 #[cfg(feature = "extra-children")]
29063 {
29064 child_idx += 1;
29065 }
29066 }
29067 b"customSheetViews" => {
29068 f_custom_sheet_views = Some(Box::new(
29069 CustomChartsheetViews::from_xml(reader, &e, true)?,
29070 ));
29071 #[cfg(feature = "extra-children")]
29072 {
29073 child_idx += 1;
29074 }
29075 }
29076 b"pageMargins" => {
29077 f_page_margins =
29078 Some(Box::new(PageMargins::from_xml(reader, &e, true)?));
29079 #[cfg(feature = "extra-children")]
29080 {
29081 child_idx += 1;
29082 }
29083 }
29084 b"pageSetup" => {
29085 f_page_setup = Some(Box::new(ChartsheetPageSetup::from_xml(
29086 reader, &e, true,
29087 )?));
29088 #[cfg(feature = "extra-children")]
29089 {
29090 child_idx += 1;
29091 }
29092 }
29093 b"headerFooter" => {
29094 f_header_footer =
29095 Some(Box::new(HeaderFooter::from_xml(reader, &e, true)?));
29096 #[cfg(feature = "extra-children")]
29097 {
29098 child_idx += 1;
29099 }
29100 }
29101 b"drawing" => {
29102 f_drawing = Some(Box::new(Drawing::from_xml(reader, &e, true)?));
29103 #[cfg(feature = "extra-children")]
29104 {
29105 child_idx += 1;
29106 }
29107 }
29108 b"legacyDrawing" => {
29109 f_legacy_drawing =
29110 Some(Box::new(LegacyDrawing::from_xml(reader, &e, true)?));
29111 #[cfg(feature = "extra-children")]
29112 {
29113 child_idx += 1;
29114 }
29115 }
29116 b"legacyDrawingHF" => {
29117 f_legacy_drawing_h_f =
29118 Some(Box::new(LegacyDrawing::from_xml(reader, &e, true)?));
29119 #[cfg(feature = "extra-children")]
29120 {
29121 child_idx += 1;
29122 }
29123 }
29124 b"drawingHF" => {
29125 f_drawing_h_f = Some(Box::new(DrawingHeaderFooter::from_xml(
29126 reader, &e, true,
29127 )?));
29128 #[cfg(feature = "extra-children")]
29129 {
29130 child_idx += 1;
29131 }
29132 }
29133 b"picture" => {
29134 f_picture = Some(Box::new(SheetBackgroundPicture::from_xml(
29135 reader, &e, true,
29136 )?));
29137 #[cfg(feature = "extra-children")]
29138 {
29139 child_idx += 1;
29140 }
29141 }
29142 b"webPublishItems" => {
29143 f_web_publish_items =
29144 Some(Box::new(WebPublishItems::from_xml(reader, &e, true)?));
29145 #[cfg(feature = "extra-children")]
29146 {
29147 child_idx += 1;
29148 }
29149 }
29150 b"extLst" => {
29151 f_extension_list =
29152 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
29153 #[cfg(feature = "extra-children")]
29154 {
29155 child_idx += 1;
29156 }
29157 }
29158 #[cfg(feature = "extra-children")]
29159 _ => {
29160 let elem = RawXmlElement::from_empty(&e);
29162 extra_children.push(PositionedNode::new(
29163 child_idx,
29164 RawXmlNode::Element(elem),
29165 ));
29166 child_idx += 1;
29167 }
29168 #[cfg(not(feature = "extra-children"))]
29169 _ => {}
29170 }
29171 }
29172 Event::End(_) => break,
29173 Event::Eof => break,
29174 _ => {}
29175 }
29176 buf.clear();
29177 }
29178 }
29179
29180 Ok(Self {
29181 sheet_properties: f_sheet_properties,
29182 sheet_views: f_sheet_views
29183 .ok_or_else(|| ParseError::MissingAttribute("sheetViews".to_string()))?,
29184 sheet_protection: f_sheet_protection,
29185 custom_sheet_views: f_custom_sheet_views,
29186 page_margins: f_page_margins,
29187 page_setup: f_page_setup,
29188 header_footer: f_header_footer,
29189 drawing: f_drawing
29190 .ok_or_else(|| ParseError::MissingAttribute("drawing".to_string()))?,
29191 legacy_drawing: f_legacy_drawing,
29192 legacy_drawing_h_f: f_legacy_drawing_h_f,
29193 drawing_h_f: f_drawing_h_f,
29194 picture: f_picture,
29195 web_publish_items: f_web_publish_items,
29196 extension_list: f_extension_list,
29197 #[cfg(feature = "extra-children")]
29198 extra_children,
29199 })
29200 }
29201}
29202
29203impl FromXml for ChartsheetProperties {
29204 fn from_xml<R: BufRead>(
29205 reader: &mut Reader<R>,
29206 start_tag: &BytesStart,
29207 is_empty: bool,
29208 ) -> Result<Self, ParseError> {
29209 let mut f_published = None;
29210 let mut f_code_name = None;
29211 let mut f_tab_color = None;
29212 #[cfg(feature = "extra-attrs")]
29213 let mut extra_attrs = std::collections::HashMap::new();
29214 #[cfg(feature = "extra-children")]
29215 let mut extra_children = Vec::new();
29216 #[cfg(feature = "extra-children")]
29217 let mut child_idx: usize = 0;
29218
29219 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
29221 let val = String::from_utf8_lossy(&attr.value);
29222 match attr.key.local_name().as_ref() {
29223 b"published" => {
29224 f_published = Some(val == "true" || val == "1");
29225 }
29226 b"codeName" => {
29227 f_code_name = Some(val.into_owned());
29228 }
29229 #[cfg(feature = "extra-attrs")]
29230 unknown => {
29231 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
29232 extra_attrs.insert(key, val.into_owned());
29233 }
29234 #[cfg(not(feature = "extra-attrs"))]
29235 _ => {}
29236 }
29237 }
29238
29239 if !is_empty {
29241 let mut buf = Vec::new();
29242 loop {
29243 match reader.read_event_into(&mut buf)? {
29244 Event::Start(e) => {
29245 match e.local_name().as_ref() {
29246 b"tabColor" => {
29247 f_tab_color = Some(Box::new(Color::from_xml(reader, &e, false)?));
29248 #[cfg(feature = "extra-children")]
29249 {
29250 child_idx += 1;
29251 }
29252 }
29253 #[cfg(feature = "extra-children")]
29254 _ => {
29255 let elem = RawXmlElement::from_reader(reader, &e)?;
29257 extra_children.push(PositionedNode::new(
29258 child_idx,
29259 RawXmlNode::Element(elem),
29260 ));
29261 child_idx += 1;
29262 }
29263 #[cfg(not(feature = "extra-children"))]
29264 _ => {
29265 skip_element(reader)?;
29267 }
29268 }
29269 }
29270 Event::Empty(e) => {
29271 match e.local_name().as_ref() {
29272 b"tabColor" => {
29273 f_tab_color = Some(Box::new(Color::from_xml(reader, &e, true)?));
29274 #[cfg(feature = "extra-children")]
29275 {
29276 child_idx += 1;
29277 }
29278 }
29279 #[cfg(feature = "extra-children")]
29280 _ => {
29281 let elem = RawXmlElement::from_empty(&e);
29283 extra_children.push(PositionedNode::new(
29284 child_idx,
29285 RawXmlNode::Element(elem),
29286 ));
29287 child_idx += 1;
29288 }
29289 #[cfg(not(feature = "extra-children"))]
29290 _ => {}
29291 }
29292 }
29293 Event::End(_) => break,
29294 Event::Eof => break,
29295 _ => {}
29296 }
29297 buf.clear();
29298 }
29299 }
29300
29301 Ok(Self {
29302 published: f_published,
29303 code_name: f_code_name,
29304 tab_color: f_tab_color,
29305 #[cfg(feature = "extra-attrs")]
29306 extra_attrs,
29307 #[cfg(feature = "extra-children")]
29308 extra_children,
29309 })
29310 }
29311}
29312
29313impl FromXml for ChartsheetViews {
29314 fn from_xml<R: BufRead>(
29315 reader: &mut Reader<R>,
29316 start_tag: &BytesStart,
29317 is_empty: bool,
29318 ) -> Result<Self, ParseError> {
29319 let mut f_sheet_view = Vec::new();
29320 let mut f_extension_list = None;
29321 #[cfg(feature = "extra-children")]
29322 let mut extra_children = Vec::new();
29323 #[cfg(feature = "extra-children")]
29324 let mut child_idx: usize = 0;
29325
29326 if !is_empty {
29328 let mut buf = Vec::new();
29329 loop {
29330 match reader.read_event_into(&mut buf)? {
29331 Event::Start(e) => {
29332 match e.local_name().as_ref() {
29333 b"sheetView" => {
29334 f_sheet_view.push(ChartsheetView::from_xml(reader, &e, false)?);
29335 #[cfg(feature = "extra-children")]
29336 {
29337 child_idx += 1;
29338 }
29339 }
29340 b"extLst" => {
29341 f_extension_list =
29342 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
29343 #[cfg(feature = "extra-children")]
29344 {
29345 child_idx += 1;
29346 }
29347 }
29348 #[cfg(feature = "extra-children")]
29349 _ => {
29350 let elem = RawXmlElement::from_reader(reader, &e)?;
29352 extra_children.push(PositionedNode::new(
29353 child_idx,
29354 RawXmlNode::Element(elem),
29355 ));
29356 child_idx += 1;
29357 }
29358 #[cfg(not(feature = "extra-children"))]
29359 _ => {
29360 skip_element(reader)?;
29362 }
29363 }
29364 }
29365 Event::Empty(e) => {
29366 match e.local_name().as_ref() {
29367 b"sheetView" => {
29368 f_sheet_view.push(ChartsheetView::from_xml(reader, &e, true)?);
29369 #[cfg(feature = "extra-children")]
29370 {
29371 child_idx += 1;
29372 }
29373 }
29374 b"extLst" => {
29375 f_extension_list =
29376 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
29377 #[cfg(feature = "extra-children")]
29378 {
29379 child_idx += 1;
29380 }
29381 }
29382 #[cfg(feature = "extra-children")]
29383 _ => {
29384 let elem = RawXmlElement::from_empty(&e);
29386 extra_children.push(PositionedNode::new(
29387 child_idx,
29388 RawXmlNode::Element(elem),
29389 ));
29390 child_idx += 1;
29391 }
29392 #[cfg(not(feature = "extra-children"))]
29393 _ => {}
29394 }
29395 }
29396 Event::End(_) => break,
29397 Event::Eof => break,
29398 _ => {}
29399 }
29400 buf.clear();
29401 }
29402 }
29403
29404 Ok(Self {
29405 sheet_view: f_sheet_view,
29406 extension_list: f_extension_list,
29407 #[cfg(feature = "extra-children")]
29408 extra_children,
29409 })
29410 }
29411}
29412
29413impl FromXml for ChartsheetView {
29414 fn from_xml<R: BufRead>(
29415 reader: &mut Reader<R>,
29416 start_tag: &BytesStart,
29417 is_empty: bool,
29418 ) -> Result<Self, ParseError> {
29419 let mut f_tab_selected = None;
29420 let mut f_zoom_scale = None;
29421 let mut f_workbook_view_id: Option<u32> = None;
29422 let mut f_zoom_to_fit = None;
29423 let mut f_extension_list = None;
29424 #[cfg(feature = "extra-attrs")]
29425 let mut extra_attrs = std::collections::HashMap::new();
29426 #[cfg(feature = "extra-children")]
29427 let mut extra_children = Vec::new();
29428 #[cfg(feature = "extra-children")]
29429 let mut child_idx: usize = 0;
29430
29431 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
29433 let val = String::from_utf8_lossy(&attr.value);
29434 match attr.key.local_name().as_ref() {
29435 b"tabSelected" => {
29436 f_tab_selected = Some(val == "true" || val == "1");
29437 }
29438 b"zoomScale" => {
29439 f_zoom_scale = val.parse().ok();
29440 }
29441 b"workbookViewId" => {
29442 f_workbook_view_id = val.parse().ok();
29443 }
29444 b"zoomToFit" => {
29445 f_zoom_to_fit = Some(val == "true" || val == "1");
29446 }
29447 #[cfg(feature = "extra-attrs")]
29448 unknown => {
29449 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
29450 extra_attrs.insert(key, val.into_owned());
29451 }
29452 #[cfg(not(feature = "extra-attrs"))]
29453 _ => {}
29454 }
29455 }
29456
29457 if !is_empty {
29459 let mut buf = Vec::new();
29460 loop {
29461 match reader.read_event_into(&mut buf)? {
29462 Event::Start(e) => {
29463 match e.local_name().as_ref() {
29464 b"extLst" => {
29465 f_extension_list =
29466 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
29467 #[cfg(feature = "extra-children")]
29468 {
29469 child_idx += 1;
29470 }
29471 }
29472 #[cfg(feature = "extra-children")]
29473 _ => {
29474 let elem = RawXmlElement::from_reader(reader, &e)?;
29476 extra_children.push(PositionedNode::new(
29477 child_idx,
29478 RawXmlNode::Element(elem),
29479 ));
29480 child_idx += 1;
29481 }
29482 #[cfg(not(feature = "extra-children"))]
29483 _ => {
29484 skip_element(reader)?;
29486 }
29487 }
29488 }
29489 Event::Empty(e) => {
29490 match e.local_name().as_ref() {
29491 b"extLst" => {
29492 f_extension_list =
29493 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
29494 #[cfg(feature = "extra-children")]
29495 {
29496 child_idx += 1;
29497 }
29498 }
29499 #[cfg(feature = "extra-children")]
29500 _ => {
29501 let elem = RawXmlElement::from_empty(&e);
29503 extra_children.push(PositionedNode::new(
29504 child_idx,
29505 RawXmlNode::Element(elem),
29506 ));
29507 child_idx += 1;
29508 }
29509 #[cfg(not(feature = "extra-children"))]
29510 _ => {}
29511 }
29512 }
29513 Event::End(_) => break,
29514 Event::Eof => break,
29515 _ => {}
29516 }
29517 buf.clear();
29518 }
29519 }
29520
29521 Ok(Self {
29522 tab_selected: f_tab_selected,
29523 zoom_scale: f_zoom_scale,
29524 workbook_view_id: f_workbook_view_id
29525 .ok_or_else(|| ParseError::MissingAttribute("workbookViewId".to_string()))?,
29526 zoom_to_fit: f_zoom_to_fit,
29527 extension_list: f_extension_list,
29528 #[cfg(feature = "extra-attrs")]
29529 extra_attrs,
29530 #[cfg(feature = "extra-children")]
29531 extra_children,
29532 })
29533 }
29534}
29535
29536impl FromXml for ChartsheetProtection {
29537 fn from_xml<R: BufRead>(
29538 reader: &mut Reader<R>,
29539 start_tag: &BytesStart,
29540 is_empty: bool,
29541 ) -> Result<Self, ParseError> {
29542 let mut f_password = None;
29543 let mut f_algorithm_name = None;
29544 let mut f_hash_value = None;
29545 let mut f_salt_value = None;
29546 let mut f_spin_count = None;
29547 let mut f_content = None;
29548 let mut f_objects = None;
29549 #[cfg(feature = "extra-attrs")]
29550 let mut extra_attrs = std::collections::HashMap::new();
29551
29552 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
29554 let val = String::from_utf8_lossy(&attr.value);
29555 match attr.key.local_name().as_ref() {
29556 b"password" => {
29557 f_password = decode_hex(&val);
29558 }
29559 b"algorithmName" => {
29560 f_algorithm_name = Some(val.into_owned());
29561 }
29562 b"hashValue" => {
29563 f_hash_value = decode_base64(&val);
29564 }
29565 b"saltValue" => {
29566 f_salt_value = decode_base64(&val);
29567 }
29568 b"spinCount" => {
29569 f_spin_count = val.parse().ok();
29570 }
29571 b"content" => {
29572 f_content = Some(val == "true" || val == "1");
29573 }
29574 b"objects" => {
29575 f_objects = Some(val == "true" || val == "1");
29576 }
29577 #[cfg(feature = "extra-attrs")]
29578 unknown => {
29579 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
29580 extra_attrs.insert(key, val.into_owned());
29581 }
29582 #[cfg(not(feature = "extra-attrs"))]
29583 _ => {}
29584 }
29585 }
29586
29587 if !is_empty {
29588 let mut buf = Vec::new();
29589 loop {
29590 match reader.read_event_into(&mut buf)? {
29591 Event::End(_) => break,
29592 Event::Eof => break,
29593 _ => {}
29594 }
29595 buf.clear();
29596 }
29597 }
29598
29599 Ok(Self {
29600 password: f_password,
29601 algorithm_name: f_algorithm_name,
29602 hash_value: f_hash_value,
29603 salt_value: f_salt_value,
29604 spin_count: f_spin_count,
29605 content: f_content,
29606 objects: f_objects,
29607 #[cfg(feature = "extra-attrs")]
29608 extra_attrs,
29609 })
29610 }
29611}
29612
29613impl FromXml for ChartsheetPageSetup {
29614 fn from_xml<R: BufRead>(
29615 reader: &mut Reader<R>,
29616 start_tag: &BytesStart,
29617 is_empty: bool,
29618 ) -> Result<Self, ParseError> {
29619 let mut f_paper_size = None;
29620 let mut f_paper_height = None;
29621 let mut f_paper_width = None;
29622 let mut f_first_page_number = None;
29623 let mut f_orientation = None;
29624 let mut f_use_printer_defaults = None;
29625 let mut f_black_and_white = None;
29626 let mut f_draft = None;
29627 let mut f_use_first_page_number = None;
29628 let mut f_horizontal_dpi = None;
29629 let mut f_vertical_dpi = None;
29630 let mut f_copies = None;
29631 let mut f_id = None;
29632 #[cfg(feature = "extra-attrs")]
29633 let mut extra_attrs = std::collections::HashMap::new();
29634
29635 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
29637 let val = String::from_utf8_lossy(&attr.value);
29638 match attr.key.local_name().as_ref() {
29639 b"paperSize" => {
29640 f_paper_size = val.parse().ok();
29641 }
29642 b"paperHeight" => {
29643 f_paper_height = Some(val.into_owned());
29644 }
29645 b"paperWidth" => {
29646 f_paper_width = Some(val.into_owned());
29647 }
29648 b"firstPageNumber" => {
29649 f_first_page_number = val.parse().ok();
29650 }
29651 b"orientation" => {
29652 f_orientation = val.parse().ok();
29653 }
29654 b"usePrinterDefaults" => {
29655 f_use_printer_defaults = Some(val == "true" || val == "1");
29656 }
29657 b"blackAndWhite" => {
29658 f_black_and_white = Some(val == "true" || val == "1");
29659 }
29660 b"draft" => {
29661 f_draft = Some(val == "true" || val == "1");
29662 }
29663 b"useFirstPageNumber" => {
29664 f_use_first_page_number = Some(val == "true" || val == "1");
29665 }
29666 b"horizontalDpi" => {
29667 f_horizontal_dpi = val.parse().ok();
29668 }
29669 b"verticalDpi" => {
29670 f_vertical_dpi = val.parse().ok();
29671 }
29672 b"copies" => {
29673 f_copies = val.parse().ok();
29674 }
29675 b"id" => {
29676 f_id = Some(val.into_owned());
29677 }
29678 #[cfg(feature = "extra-attrs")]
29679 unknown => {
29680 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
29681 extra_attrs.insert(key, val.into_owned());
29682 }
29683 #[cfg(not(feature = "extra-attrs"))]
29684 _ => {}
29685 }
29686 }
29687
29688 if !is_empty {
29689 let mut buf = Vec::new();
29690 loop {
29691 match reader.read_event_into(&mut buf)? {
29692 Event::End(_) => break,
29693 Event::Eof => break,
29694 _ => {}
29695 }
29696 buf.clear();
29697 }
29698 }
29699
29700 Ok(Self {
29701 paper_size: f_paper_size,
29702 paper_height: f_paper_height,
29703 paper_width: f_paper_width,
29704 first_page_number: f_first_page_number,
29705 orientation: f_orientation,
29706 use_printer_defaults: f_use_printer_defaults,
29707 black_and_white: f_black_and_white,
29708 draft: f_draft,
29709 use_first_page_number: f_use_first_page_number,
29710 horizontal_dpi: f_horizontal_dpi,
29711 vertical_dpi: f_vertical_dpi,
29712 copies: f_copies,
29713 id: f_id,
29714 #[cfg(feature = "extra-attrs")]
29715 extra_attrs,
29716 })
29717 }
29718}
29719
29720impl FromXml for CustomChartsheetViews {
29721 fn from_xml<R: BufRead>(
29722 reader: &mut Reader<R>,
29723 start_tag: &BytesStart,
29724 is_empty: bool,
29725 ) -> Result<Self, ParseError> {
29726 let mut f_custom_sheet_view = Vec::new();
29727 #[cfg(feature = "extra-children")]
29728 let mut extra_children = Vec::new();
29729 #[cfg(feature = "extra-children")]
29730 let mut child_idx: usize = 0;
29731
29732 if !is_empty {
29734 let mut buf = Vec::new();
29735 loop {
29736 match reader.read_event_into(&mut buf)? {
29737 Event::Start(e) => {
29738 match e.local_name().as_ref() {
29739 b"customSheetView" => {
29740 f_custom_sheet_view
29741 .push(CustomChartsheetView::from_xml(reader, &e, false)?);
29742 #[cfg(feature = "extra-children")]
29743 {
29744 child_idx += 1;
29745 }
29746 }
29747 #[cfg(feature = "extra-children")]
29748 _ => {
29749 let elem = RawXmlElement::from_reader(reader, &e)?;
29751 extra_children.push(PositionedNode::new(
29752 child_idx,
29753 RawXmlNode::Element(elem),
29754 ));
29755 child_idx += 1;
29756 }
29757 #[cfg(not(feature = "extra-children"))]
29758 _ => {
29759 skip_element(reader)?;
29761 }
29762 }
29763 }
29764 Event::Empty(e) => {
29765 match e.local_name().as_ref() {
29766 b"customSheetView" => {
29767 f_custom_sheet_view
29768 .push(CustomChartsheetView::from_xml(reader, &e, true)?);
29769 #[cfg(feature = "extra-children")]
29770 {
29771 child_idx += 1;
29772 }
29773 }
29774 #[cfg(feature = "extra-children")]
29775 _ => {
29776 let elem = RawXmlElement::from_empty(&e);
29778 extra_children.push(PositionedNode::new(
29779 child_idx,
29780 RawXmlNode::Element(elem),
29781 ));
29782 child_idx += 1;
29783 }
29784 #[cfg(not(feature = "extra-children"))]
29785 _ => {}
29786 }
29787 }
29788 Event::End(_) => break,
29789 Event::Eof => break,
29790 _ => {}
29791 }
29792 buf.clear();
29793 }
29794 }
29795
29796 Ok(Self {
29797 custom_sheet_view: f_custom_sheet_view,
29798 #[cfg(feature = "extra-children")]
29799 extra_children,
29800 })
29801 }
29802}
29803
29804impl FromXml for CustomChartsheetView {
29805 fn from_xml<R: BufRead>(
29806 reader: &mut Reader<R>,
29807 start_tag: &BytesStart,
29808 is_empty: bool,
29809 ) -> Result<Self, ParseError> {
29810 let mut f_guid: Option<Guid> = None;
29811 let mut f_scale = None;
29812 let mut f_state = None;
29813 let mut f_zoom_to_fit = None;
29814 let mut f_page_margins = None;
29815 let mut f_page_setup = None;
29816 let mut f_header_footer = None;
29817 #[cfg(feature = "extra-attrs")]
29818 let mut extra_attrs = std::collections::HashMap::new();
29819 #[cfg(feature = "extra-children")]
29820 let mut extra_children = Vec::new();
29821 #[cfg(feature = "extra-children")]
29822 let mut child_idx: usize = 0;
29823
29824 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
29826 let val = String::from_utf8_lossy(&attr.value);
29827 match attr.key.local_name().as_ref() {
29828 b"guid" => {
29829 f_guid = Some(val.into_owned());
29830 }
29831 b"scale" => {
29832 f_scale = val.parse().ok();
29833 }
29834 b"state" => {
29835 f_state = val.parse().ok();
29836 }
29837 b"zoomToFit" => {
29838 f_zoom_to_fit = Some(val == "true" || val == "1");
29839 }
29840 #[cfg(feature = "extra-attrs")]
29841 unknown => {
29842 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
29843 extra_attrs.insert(key, val.into_owned());
29844 }
29845 #[cfg(not(feature = "extra-attrs"))]
29846 _ => {}
29847 }
29848 }
29849
29850 if !is_empty {
29852 let mut buf = Vec::new();
29853 loop {
29854 match reader.read_event_into(&mut buf)? {
29855 Event::Start(e) => {
29856 match e.local_name().as_ref() {
29857 b"pageMargins" => {
29858 f_page_margins =
29859 Some(Box::new(PageMargins::from_xml(reader, &e, false)?));
29860 #[cfg(feature = "extra-children")]
29861 {
29862 child_idx += 1;
29863 }
29864 }
29865 b"pageSetup" => {
29866 f_page_setup = Some(Box::new(ChartsheetPageSetup::from_xml(
29867 reader, &e, false,
29868 )?));
29869 #[cfg(feature = "extra-children")]
29870 {
29871 child_idx += 1;
29872 }
29873 }
29874 b"headerFooter" => {
29875 f_header_footer =
29876 Some(Box::new(HeaderFooter::from_xml(reader, &e, false)?));
29877 #[cfg(feature = "extra-children")]
29878 {
29879 child_idx += 1;
29880 }
29881 }
29882 #[cfg(feature = "extra-children")]
29883 _ => {
29884 let elem = RawXmlElement::from_reader(reader, &e)?;
29886 extra_children.push(PositionedNode::new(
29887 child_idx,
29888 RawXmlNode::Element(elem),
29889 ));
29890 child_idx += 1;
29891 }
29892 #[cfg(not(feature = "extra-children"))]
29893 _ => {
29894 skip_element(reader)?;
29896 }
29897 }
29898 }
29899 Event::Empty(e) => {
29900 match e.local_name().as_ref() {
29901 b"pageMargins" => {
29902 f_page_margins =
29903 Some(Box::new(PageMargins::from_xml(reader, &e, true)?));
29904 #[cfg(feature = "extra-children")]
29905 {
29906 child_idx += 1;
29907 }
29908 }
29909 b"pageSetup" => {
29910 f_page_setup = Some(Box::new(ChartsheetPageSetup::from_xml(
29911 reader, &e, true,
29912 )?));
29913 #[cfg(feature = "extra-children")]
29914 {
29915 child_idx += 1;
29916 }
29917 }
29918 b"headerFooter" => {
29919 f_header_footer =
29920 Some(Box::new(HeaderFooter::from_xml(reader, &e, true)?));
29921 #[cfg(feature = "extra-children")]
29922 {
29923 child_idx += 1;
29924 }
29925 }
29926 #[cfg(feature = "extra-children")]
29927 _ => {
29928 let elem = RawXmlElement::from_empty(&e);
29930 extra_children.push(PositionedNode::new(
29931 child_idx,
29932 RawXmlNode::Element(elem),
29933 ));
29934 child_idx += 1;
29935 }
29936 #[cfg(not(feature = "extra-children"))]
29937 _ => {}
29938 }
29939 }
29940 Event::End(_) => break,
29941 Event::Eof => break,
29942 _ => {}
29943 }
29944 buf.clear();
29945 }
29946 }
29947
29948 Ok(Self {
29949 guid: f_guid.ok_or_else(|| ParseError::MissingAttribute("guid".to_string()))?,
29950 scale: f_scale,
29951 state: f_state,
29952 zoom_to_fit: f_zoom_to_fit,
29953 page_margins: f_page_margins,
29954 page_setup: f_page_setup,
29955 header_footer: f_header_footer,
29956 #[cfg(feature = "extra-attrs")]
29957 extra_attrs,
29958 #[cfg(feature = "extra-children")]
29959 extra_children,
29960 })
29961 }
29962}
29963
29964impl FromXml for CTCustomProperties {
29965 fn from_xml<R: BufRead>(
29966 reader: &mut Reader<R>,
29967 start_tag: &BytesStart,
29968 is_empty: bool,
29969 ) -> Result<Self, ParseError> {
29970 let mut f_custom_pr = Vec::new();
29971 #[cfg(feature = "extra-children")]
29972 let mut extra_children = Vec::new();
29973 #[cfg(feature = "extra-children")]
29974 let mut child_idx: usize = 0;
29975
29976 if !is_empty {
29978 let mut buf = Vec::new();
29979 loop {
29980 match reader.read_event_into(&mut buf)? {
29981 Event::Start(e) => {
29982 match e.local_name().as_ref() {
29983 b"customPr" => {
29984 f_custom_pr.push(CTCustomProperty::from_xml(reader, &e, false)?);
29985 #[cfg(feature = "extra-children")]
29986 {
29987 child_idx += 1;
29988 }
29989 }
29990 #[cfg(feature = "extra-children")]
29991 _ => {
29992 let elem = RawXmlElement::from_reader(reader, &e)?;
29994 extra_children.push(PositionedNode::new(
29995 child_idx,
29996 RawXmlNode::Element(elem),
29997 ));
29998 child_idx += 1;
29999 }
30000 #[cfg(not(feature = "extra-children"))]
30001 _ => {
30002 skip_element(reader)?;
30004 }
30005 }
30006 }
30007 Event::Empty(e) => {
30008 match e.local_name().as_ref() {
30009 b"customPr" => {
30010 f_custom_pr.push(CTCustomProperty::from_xml(reader, &e, true)?);
30011 #[cfg(feature = "extra-children")]
30012 {
30013 child_idx += 1;
30014 }
30015 }
30016 #[cfg(feature = "extra-children")]
30017 _ => {
30018 let elem = RawXmlElement::from_empty(&e);
30020 extra_children.push(PositionedNode::new(
30021 child_idx,
30022 RawXmlNode::Element(elem),
30023 ));
30024 child_idx += 1;
30025 }
30026 #[cfg(not(feature = "extra-children"))]
30027 _ => {}
30028 }
30029 }
30030 Event::End(_) => break,
30031 Event::Eof => break,
30032 _ => {}
30033 }
30034 buf.clear();
30035 }
30036 }
30037
30038 Ok(Self {
30039 custom_pr: f_custom_pr,
30040 #[cfg(feature = "extra-children")]
30041 extra_children,
30042 })
30043 }
30044}
30045
30046impl FromXml for CTCustomProperty {
30047 fn from_xml<R: BufRead>(
30048 reader: &mut Reader<R>,
30049 start_tag: &BytesStart,
30050 is_empty: bool,
30051 ) -> Result<Self, ParseError> {
30052 let mut f_name: Option<XmlString> = None;
30053 let mut f_id: Option<STRelationshipId> = None;
30054 #[cfg(feature = "extra-attrs")]
30055 let mut extra_attrs = std::collections::HashMap::new();
30056
30057 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
30059 let val = String::from_utf8_lossy(&attr.value);
30060 match attr.key.local_name().as_ref() {
30061 b"name" => {
30062 f_name = Some(val.into_owned());
30063 }
30064 b"id" => {
30065 f_id = Some(val.into_owned());
30066 }
30067 #[cfg(feature = "extra-attrs")]
30068 unknown => {
30069 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
30070 extra_attrs.insert(key, val.into_owned());
30071 }
30072 #[cfg(not(feature = "extra-attrs"))]
30073 _ => {}
30074 }
30075 }
30076
30077 if !is_empty {
30078 let mut buf = Vec::new();
30079 loop {
30080 match reader.read_event_into(&mut buf)? {
30081 Event::End(_) => break,
30082 Event::Eof => break,
30083 _ => {}
30084 }
30085 buf.clear();
30086 }
30087 }
30088
30089 Ok(Self {
30090 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
30091 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
30092 #[cfg(feature = "extra-attrs")]
30093 extra_attrs,
30094 })
30095 }
30096}
30097
30098impl FromXml for OleObjects {
30099 fn from_xml<R: BufRead>(
30100 reader: &mut Reader<R>,
30101 start_tag: &BytesStart,
30102 is_empty: bool,
30103 ) -> Result<Self, ParseError> {
30104 let mut f_ole_object = Vec::new();
30105 #[cfg(feature = "extra-children")]
30106 let mut extra_children = Vec::new();
30107 #[cfg(feature = "extra-children")]
30108 let mut child_idx: usize = 0;
30109
30110 if !is_empty {
30112 let mut buf = Vec::new();
30113 loop {
30114 match reader.read_event_into(&mut buf)? {
30115 Event::Start(e) => {
30116 match e.local_name().as_ref() {
30117 b"oleObject" => {
30118 f_ole_object.push(OleObject::from_xml(reader, &e, false)?);
30119 #[cfg(feature = "extra-children")]
30120 {
30121 child_idx += 1;
30122 }
30123 }
30124 #[cfg(feature = "extra-children")]
30125 _ => {
30126 let elem = RawXmlElement::from_reader(reader, &e)?;
30128 extra_children.push(PositionedNode::new(
30129 child_idx,
30130 RawXmlNode::Element(elem),
30131 ));
30132 child_idx += 1;
30133 }
30134 #[cfg(not(feature = "extra-children"))]
30135 _ => {
30136 skip_element(reader)?;
30138 }
30139 }
30140 }
30141 Event::Empty(e) => {
30142 match e.local_name().as_ref() {
30143 b"oleObject" => {
30144 f_ole_object.push(OleObject::from_xml(reader, &e, true)?);
30145 #[cfg(feature = "extra-children")]
30146 {
30147 child_idx += 1;
30148 }
30149 }
30150 #[cfg(feature = "extra-children")]
30151 _ => {
30152 let elem = RawXmlElement::from_empty(&e);
30154 extra_children.push(PositionedNode::new(
30155 child_idx,
30156 RawXmlNode::Element(elem),
30157 ));
30158 child_idx += 1;
30159 }
30160 #[cfg(not(feature = "extra-children"))]
30161 _ => {}
30162 }
30163 }
30164 Event::End(_) => break,
30165 Event::Eof => break,
30166 _ => {}
30167 }
30168 buf.clear();
30169 }
30170 }
30171
30172 Ok(Self {
30173 ole_object: f_ole_object,
30174 #[cfg(feature = "extra-children")]
30175 extra_children,
30176 })
30177 }
30178}
30179
30180impl FromXml for OleObject {
30181 fn from_xml<R: BufRead>(
30182 reader: &mut Reader<R>,
30183 start_tag: &BytesStart,
30184 is_empty: bool,
30185 ) -> Result<Self, ParseError> {
30186 let mut f_prog_id = None;
30187 let mut f_dv_aspect = None;
30188 let mut f_link = None;
30189 let mut f_ole_update = None;
30190 let mut f_auto_load = None;
30191 let mut f_shape_id: Option<u32> = None;
30192 let mut f_id = None;
30193 let mut f_object_pr = None;
30194 #[cfg(feature = "extra-attrs")]
30195 let mut extra_attrs = std::collections::HashMap::new();
30196 #[cfg(feature = "extra-children")]
30197 let mut extra_children = Vec::new();
30198 #[cfg(feature = "extra-children")]
30199 let mut child_idx: usize = 0;
30200
30201 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
30203 let val = String::from_utf8_lossy(&attr.value);
30204 match attr.key.local_name().as_ref() {
30205 b"progId" => {
30206 f_prog_id = Some(val.into_owned());
30207 }
30208 b"dvAspect" => {
30209 f_dv_aspect = val.parse().ok();
30210 }
30211 b"link" => {
30212 f_link = Some(val.into_owned());
30213 }
30214 b"oleUpdate" => {
30215 f_ole_update = val.parse().ok();
30216 }
30217 b"autoLoad" => {
30218 f_auto_load = Some(val == "true" || val == "1");
30219 }
30220 b"shapeId" => {
30221 f_shape_id = val.parse().ok();
30222 }
30223 b"id" => {
30224 f_id = Some(val.into_owned());
30225 }
30226 #[cfg(feature = "extra-attrs")]
30227 unknown => {
30228 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
30229 extra_attrs.insert(key, val.into_owned());
30230 }
30231 #[cfg(not(feature = "extra-attrs"))]
30232 _ => {}
30233 }
30234 }
30235
30236 if !is_empty {
30238 let mut buf = Vec::new();
30239 loop {
30240 match reader.read_event_into(&mut buf)? {
30241 Event::Start(e) => {
30242 match e.local_name().as_ref() {
30243 b"objectPr" => {
30244 f_object_pr =
30245 Some(Box::new(ObjectProperties::from_xml(reader, &e, false)?));
30246 #[cfg(feature = "extra-children")]
30247 {
30248 child_idx += 1;
30249 }
30250 }
30251 #[cfg(feature = "extra-children")]
30252 _ => {
30253 let elem = RawXmlElement::from_reader(reader, &e)?;
30255 extra_children.push(PositionedNode::new(
30256 child_idx,
30257 RawXmlNode::Element(elem),
30258 ));
30259 child_idx += 1;
30260 }
30261 #[cfg(not(feature = "extra-children"))]
30262 _ => {
30263 skip_element(reader)?;
30265 }
30266 }
30267 }
30268 Event::Empty(e) => {
30269 match e.local_name().as_ref() {
30270 b"objectPr" => {
30271 f_object_pr =
30272 Some(Box::new(ObjectProperties::from_xml(reader, &e, true)?));
30273 #[cfg(feature = "extra-children")]
30274 {
30275 child_idx += 1;
30276 }
30277 }
30278 #[cfg(feature = "extra-children")]
30279 _ => {
30280 let elem = RawXmlElement::from_empty(&e);
30282 extra_children.push(PositionedNode::new(
30283 child_idx,
30284 RawXmlNode::Element(elem),
30285 ));
30286 child_idx += 1;
30287 }
30288 #[cfg(not(feature = "extra-children"))]
30289 _ => {}
30290 }
30291 }
30292 Event::End(_) => break,
30293 Event::Eof => break,
30294 _ => {}
30295 }
30296 buf.clear();
30297 }
30298 }
30299
30300 Ok(Self {
30301 prog_id: f_prog_id,
30302 dv_aspect: f_dv_aspect,
30303 link: f_link,
30304 ole_update: f_ole_update,
30305 auto_load: f_auto_load,
30306 shape_id: f_shape_id
30307 .ok_or_else(|| ParseError::MissingAttribute("shapeId".to_string()))?,
30308 id: f_id,
30309 object_pr: f_object_pr,
30310 #[cfg(feature = "extra-attrs")]
30311 extra_attrs,
30312 #[cfg(feature = "extra-children")]
30313 extra_children,
30314 })
30315 }
30316}
30317
30318impl FromXml for ObjectProperties {
30319 fn from_xml<R: BufRead>(
30320 reader: &mut Reader<R>,
30321 start_tag: &BytesStart,
30322 is_empty: bool,
30323 ) -> Result<Self, ParseError> {
30324 let mut f_locked = None;
30325 let mut f_default_size = None;
30326 let mut f_print = None;
30327 let mut f_disabled = None;
30328 let mut f_ui_object = None;
30329 let mut f_auto_fill = None;
30330 let mut f_auto_line = None;
30331 let mut f_auto_pict = None;
30332 let mut f_macro = None;
30333 let mut f_alt_text = None;
30334 let mut f_dde = None;
30335 let mut f_id = None;
30336 let mut f_anchor: Option<Box<ObjectAnchor>> = None;
30337 #[cfg(feature = "extra-attrs")]
30338 let mut extra_attrs = std::collections::HashMap::new();
30339 #[cfg(feature = "extra-children")]
30340 let mut extra_children = Vec::new();
30341 #[cfg(feature = "extra-children")]
30342 let mut child_idx: usize = 0;
30343
30344 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
30346 let val = String::from_utf8_lossy(&attr.value);
30347 match attr.key.local_name().as_ref() {
30348 b"locked" => {
30349 f_locked = Some(val == "true" || val == "1");
30350 }
30351 b"defaultSize" => {
30352 f_default_size = Some(val == "true" || val == "1");
30353 }
30354 b"print" => {
30355 f_print = Some(val == "true" || val == "1");
30356 }
30357 b"disabled" => {
30358 f_disabled = Some(val == "true" || val == "1");
30359 }
30360 b"uiObject" => {
30361 f_ui_object = Some(val == "true" || val == "1");
30362 }
30363 b"autoFill" => {
30364 f_auto_fill = Some(val == "true" || val == "1");
30365 }
30366 b"autoLine" => {
30367 f_auto_line = Some(val == "true" || val == "1");
30368 }
30369 b"autoPict" => {
30370 f_auto_pict = Some(val == "true" || val == "1");
30371 }
30372 b"macro" => {
30373 f_macro = Some(val.into_owned());
30374 }
30375 b"altText" => {
30376 f_alt_text = Some(val.into_owned());
30377 }
30378 b"dde" => {
30379 f_dde = Some(val == "true" || val == "1");
30380 }
30381 b"id" => {
30382 f_id = Some(val.into_owned());
30383 }
30384 #[cfg(feature = "extra-attrs")]
30385 unknown => {
30386 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
30387 extra_attrs.insert(key, val.into_owned());
30388 }
30389 #[cfg(not(feature = "extra-attrs"))]
30390 _ => {}
30391 }
30392 }
30393
30394 if !is_empty {
30396 let mut buf = Vec::new();
30397 loop {
30398 match reader.read_event_into(&mut buf)? {
30399 Event::Start(e) => {
30400 match e.local_name().as_ref() {
30401 b"anchor" => {
30402 f_anchor =
30403 Some(Box::new(ObjectAnchor::from_xml(reader, &e, false)?));
30404 #[cfg(feature = "extra-children")]
30405 {
30406 child_idx += 1;
30407 }
30408 }
30409 #[cfg(feature = "extra-children")]
30410 _ => {
30411 let elem = RawXmlElement::from_reader(reader, &e)?;
30413 extra_children.push(PositionedNode::new(
30414 child_idx,
30415 RawXmlNode::Element(elem),
30416 ));
30417 child_idx += 1;
30418 }
30419 #[cfg(not(feature = "extra-children"))]
30420 _ => {
30421 skip_element(reader)?;
30423 }
30424 }
30425 }
30426 Event::Empty(e) => {
30427 match e.local_name().as_ref() {
30428 b"anchor" => {
30429 f_anchor =
30430 Some(Box::new(ObjectAnchor::from_xml(reader, &e, true)?));
30431 #[cfg(feature = "extra-children")]
30432 {
30433 child_idx += 1;
30434 }
30435 }
30436 #[cfg(feature = "extra-children")]
30437 _ => {
30438 let elem = RawXmlElement::from_empty(&e);
30440 extra_children.push(PositionedNode::new(
30441 child_idx,
30442 RawXmlNode::Element(elem),
30443 ));
30444 child_idx += 1;
30445 }
30446 #[cfg(not(feature = "extra-children"))]
30447 _ => {}
30448 }
30449 }
30450 Event::End(_) => break,
30451 Event::Eof => break,
30452 _ => {}
30453 }
30454 buf.clear();
30455 }
30456 }
30457
30458 Ok(Self {
30459 locked: f_locked,
30460 default_size: f_default_size,
30461 print: f_print,
30462 disabled: f_disabled,
30463 ui_object: f_ui_object,
30464 auto_fill: f_auto_fill,
30465 auto_line: f_auto_line,
30466 auto_pict: f_auto_pict,
30467 r#macro: f_macro,
30468 alt_text: f_alt_text,
30469 dde: f_dde,
30470 id: f_id,
30471 anchor: f_anchor.ok_or_else(|| ParseError::MissingAttribute("anchor".to_string()))?,
30472 #[cfg(feature = "extra-attrs")]
30473 extra_attrs,
30474 #[cfg(feature = "extra-children")]
30475 extra_children,
30476 })
30477 }
30478}
30479
30480impl FromXml for WebPublishItems {
30481 fn from_xml<R: BufRead>(
30482 reader: &mut Reader<R>,
30483 start_tag: &BytesStart,
30484 is_empty: bool,
30485 ) -> Result<Self, ParseError> {
30486 let mut f_count = None;
30487 let mut f_web_publish_item = Vec::new();
30488 #[cfg(feature = "extra-attrs")]
30489 let mut extra_attrs = std::collections::HashMap::new();
30490 #[cfg(feature = "extra-children")]
30491 let mut extra_children = Vec::new();
30492 #[cfg(feature = "extra-children")]
30493 let mut child_idx: usize = 0;
30494
30495 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
30497 let val = String::from_utf8_lossy(&attr.value);
30498 match attr.key.local_name().as_ref() {
30499 b"count" => {
30500 f_count = val.parse().ok();
30501 }
30502 #[cfg(feature = "extra-attrs")]
30503 unknown => {
30504 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
30505 extra_attrs.insert(key, val.into_owned());
30506 }
30507 #[cfg(not(feature = "extra-attrs"))]
30508 _ => {}
30509 }
30510 }
30511
30512 if !is_empty {
30514 let mut buf = Vec::new();
30515 loop {
30516 match reader.read_event_into(&mut buf)? {
30517 Event::Start(e) => {
30518 match e.local_name().as_ref() {
30519 b"webPublishItem" => {
30520 f_web_publish_item
30521 .push(WebPublishItem::from_xml(reader, &e, false)?);
30522 #[cfg(feature = "extra-children")]
30523 {
30524 child_idx += 1;
30525 }
30526 }
30527 #[cfg(feature = "extra-children")]
30528 _ => {
30529 let elem = RawXmlElement::from_reader(reader, &e)?;
30531 extra_children.push(PositionedNode::new(
30532 child_idx,
30533 RawXmlNode::Element(elem),
30534 ));
30535 child_idx += 1;
30536 }
30537 #[cfg(not(feature = "extra-children"))]
30538 _ => {
30539 skip_element(reader)?;
30541 }
30542 }
30543 }
30544 Event::Empty(e) => {
30545 match e.local_name().as_ref() {
30546 b"webPublishItem" => {
30547 f_web_publish_item
30548 .push(WebPublishItem::from_xml(reader, &e, true)?);
30549 #[cfg(feature = "extra-children")]
30550 {
30551 child_idx += 1;
30552 }
30553 }
30554 #[cfg(feature = "extra-children")]
30555 _ => {
30556 let elem = RawXmlElement::from_empty(&e);
30558 extra_children.push(PositionedNode::new(
30559 child_idx,
30560 RawXmlNode::Element(elem),
30561 ));
30562 child_idx += 1;
30563 }
30564 #[cfg(not(feature = "extra-children"))]
30565 _ => {}
30566 }
30567 }
30568 Event::End(_) => break,
30569 Event::Eof => break,
30570 _ => {}
30571 }
30572 buf.clear();
30573 }
30574 }
30575
30576 Ok(Self {
30577 count: f_count,
30578 web_publish_item: f_web_publish_item,
30579 #[cfg(feature = "extra-attrs")]
30580 extra_attrs,
30581 #[cfg(feature = "extra-children")]
30582 extra_children,
30583 })
30584 }
30585}
30586
30587impl FromXml for WebPublishItem {
30588 fn from_xml<R: BufRead>(
30589 reader: &mut Reader<R>,
30590 start_tag: &BytesStart,
30591 is_empty: bool,
30592 ) -> Result<Self, ParseError> {
30593 let mut f_id: Option<u32> = None;
30594 let mut f_div_id: Option<XmlString> = None;
30595 let mut f_source_type: Option<STWebSourceType> = None;
30596 let mut f_source_ref = None;
30597 let mut f_source_object = None;
30598 let mut f_destination_file: Option<XmlString> = None;
30599 let mut f_title = None;
30600 let mut f_auto_republish = None;
30601 #[cfg(feature = "extra-attrs")]
30602 let mut extra_attrs = std::collections::HashMap::new();
30603
30604 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
30606 let val = String::from_utf8_lossy(&attr.value);
30607 match attr.key.local_name().as_ref() {
30608 b"id" => {
30609 f_id = val.parse().ok();
30610 }
30611 b"divId" => {
30612 f_div_id = Some(val.into_owned());
30613 }
30614 b"sourceType" => {
30615 f_source_type = val.parse().ok();
30616 }
30617 b"sourceRef" => {
30618 f_source_ref = Some(val.into_owned());
30619 }
30620 b"sourceObject" => {
30621 f_source_object = Some(val.into_owned());
30622 }
30623 b"destinationFile" => {
30624 f_destination_file = Some(val.into_owned());
30625 }
30626 b"title" => {
30627 f_title = Some(val.into_owned());
30628 }
30629 b"autoRepublish" => {
30630 f_auto_republish = Some(val == "true" || val == "1");
30631 }
30632 #[cfg(feature = "extra-attrs")]
30633 unknown => {
30634 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
30635 extra_attrs.insert(key, val.into_owned());
30636 }
30637 #[cfg(not(feature = "extra-attrs"))]
30638 _ => {}
30639 }
30640 }
30641
30642 if !is_empty {
30643 let mut buf = Vec::new();
30644 loop {
30645 match reader.read_event_into(&mut buf)? {
30646 Event::End(_) => break,
30647 Event::Eof => break,
30648 _ => {}
30649 }
30650 buf.clear();
30651 }
30652 }
30653
30654 Ok(Self {
30655 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
30656 div_id: f_div_id.ok_or_else(|| ParseError::MissingAttribute("divId".to_string()))?,
30657 source_type: f_source_type
30658 .ok_or_else(|| ParseError::MissingAttribute("sourceType".to_string()))?,
30659 source_ref: f_source_ref,
30660 source_object: f_source_object,
30661 destination_file: f_destination_file
30662 .ok_or_else(|| ParseError::MissingAttribute("destinationFile".to_string()))?,
30663 title: f_title,
30664 auto_republish: f_auto_republish,
30665 #[cfg(feature = "extra-attrs")]
30666 extra_attrs,
30667 })
30668 }
30669}
30670
30671impl FromXml for Controls {
30672 fn from_xml<R: BufRead>(
30673 reader: &mut Reader<R>,
30674 start_tag: &BytesStart,
30675 is_empty: bool,
30676 ) -> Result<Self, ParseError> {
30677 let mut f_control = Vec::new();
30678 #[cfg(feature = "extra-children")]
30679 let mut extra_children = Vec::new();
30680 #[cfg(feature = "extra-children")]
30681 let mut child_idx: usize = 0;
30682
30683 if !is_empty {
30685 let mut buf = Vec::new();
30686 loop {
30687 match reader.read_event_into(&mut buf)? {
30688 Event::Start(e) => {
30689 match e.local_name().as_ref() {
30690 b"control" => {
30691 f_control.push(Control::from_xml(reader, &e, false)?);
30692 #[cfg(feature = "extra-children")]
30693 {
30694 child_idx += 1;
30695 }
30696 }
30697 #[cfg(feature = "extra-children")]
30698 _ => {
30699 let elem = RawXmlElement::from_reader(reader, &e)?;
30701 extra_children.push(PositionedNode::new(
30702 child_idx,
30703 RawXmlNode::Element(elem),
30704 ));
30705 child_idx += 1;
30706 }
30707 #[cfg(not(feature = "extra-children"))]
30708 _ => {
30709 skip_element(reader)?;
30711 }
30712 }
30713 }
30714 Event::Empty(e) => {
30715 match e.local_name().as_ref() {
30716 b"control" => {
30717 f_control.push(Control::from_xml(reader, &e, true)?);
30718 #[cfg(feature = "extra-children")]
30719 {
30720 child_idx += 1;
30721 }
30722 }
30723 #[cfg(feature = "extra-children")]
30724 _ => {
30725 let elem = RawXmlElement::from_empty(&e);
30727 extra_children.push(PositionedNode::new(
30728 child_idx,
30729 RawXmlNode::Element(elem),
30730 ));
30731 child_idx += 1;
30732 }
30733 #[cfg(not(feature = "extra-children"))]
30734 _ => {}
30735 }
30736 }
30737 Event::End(_) => break,
30738 Event::Eof => break,
30739 _ => {}
30740 }
30741 buf.clear();
30742 }
30743 }
30744
30745 Ok(Self {
30746 control: f_control,
30747 #[cfg(feature = "extra-children")]
30748 extra_children,
30749 })
30750 }
30751}
30752
30753impl FromXml for Control {
30754 fn from_xml<R: BufRead>(
30755 reader: &mut Reader<R>,
30756 start_tag: &BytesStart,
30757 is_empty: bool,
30758 ) -> Result<Self, ParseError> {
30759 let mut f_shape_id: Option<u32> = None;
30760 let mut f_id: Option<STRelationshipId> = None;
30761 let mut f_name = None;
30762 let mut f_control_pr = None;
30763 #[cfg(feature = "extra-attrs")]
30764 let mut extra_attrs = std::collections::HashMap::new();
30765 #[cfg(feature = "extra-children")]
30766 let mut extra_children = Vec::new();
30767 #[cfg(feature = "extra-children")]
30768 let mut child_idx: usize = 0;
30769
30770 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
30772 let val = String::from_utf8_lossy(&attr.value);
30773 match attr.key.local_name().as_ref() {
30774 b"shapeId" => {
30775 f_shape_id = val.parse().ok();
30776 }
30777 b"id" => {
30778 f_id = Some(val.into_owned());
30779 }
30780 b"name" => {
30781 f_name = Some(val.into_owned());
30782 }
30783 #[cfg(feature = "extra-attrs")]
30784 unknown => {
30785 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
30786 extra_attrs.insert(key, val.into_owned());
30787 }
30788 #[cfg(not(feature = "extra-attrs"))]
30789 _ => {}
30790 }
30791 }
30792
30793 if !is_empty {
30795 let mut buf = Vec::new();
30796 loop {
30797 match reader.read_event_into(&mut buf)? {
30798 Event::Start(e) => {
30799 match e.local_name().as_ref() {
30800 b"controlPr" => {
30801 f_control_pr =
30802 Some(Box::new(CTControlPr::from_xml(reader, &e, false)?));
30803 #[cfg(feature = "extra-children")]
30804 {
30805 child_idx += 1;
30806 }
30807 }
30808 #[cfg(feature = "extra-children")]
30809 _ => {
30810 let elem = RawXmlElement::from_reader(reader, &e)?;
30812 extra_children.push(PositionedNode::new(
30813 child_idx,
30814 RawXmlNode::Element(elem),
30815 ));
30816 child_idx += 1;
30817 }
30818 #[cfg(not(feature = "extra-children"))]
30819 _ => {
30820 skip_element(reader)?;
30822 }
30823 }
30824 }
30825 Event::Empty(e) => {
30826 match e.local_name().as_ref() {
30827 b"controlPr" => {
30828 f_control_pr =
30829 Some(Box::new(CTControlPr::from_xml(reader, &e, true)?));
30830 #[cfg(feature = "extra-children")]
30831 {
30832 child_idx += 1;
30833 }
30834 }
30835 #[cfg(feature = "extra-children")]
30836 _ => {
30837 let elem = RawXmlElement::from_empty(&e);
30839 extra_children.push(PositionedNode::new(
30840 child_idx,
30841 RawXmlNode::Element(elem),
30842 ));
30843 child_idx += 1;
30844 }
30845 #[cfg(not(feature = "extra-children"))]
30846 _ => {}
30847 }
30848 }
30849 Event::End(_) => break,
30850 Event::Eof => break,
30851 _ => {}
30852 }
30853 buf.clear();
30854 }
30855 }
30856
30857 Ok(Self {
30858 shape_id: f_shape_id
30859 .ok_or_else(|| ParseError::MissingAttribute("shapeId".to_string()))?,
30860 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
30861 name: f_name,
30862 control_pr: f_control_pr,
30863 #[cfg(feature = "extra-attrs")]
30864 extra_attrs,
30865 #[cfg(feature = "extra-children")]
30866 extra_children,
30867 })
30868 }
30869}
30870
30871impl FromXml for CTControlPr {
30872 fn from_xml<R: BufRead>(
30873 reader: &mut Reader<R>,
30874 start_tag: &BytesStart,
30875 is_empty: bool,
30876 ) -> Result<Self, ParseError> {
30877 let mut f_locked = None;
30878 let mut f_default_size = None;
30879 let mut f_print = None;
30880 let mut f_disabled = None;
30881 let mut f_recalc_always = None;
30882 let mut f_ui_object = None;
30883 let mut f_auto_fill = None;
30884 let mut f_auto_line = None;
30885 let mut f_auto_pict = None;
30886 let mut f_macro = None;
30887 let mut f_alt_text = None;
30888 let mut f_linked_cell = None;
30889 let mut f_list_fill_range = None;
30890 let mut f_cf = None;
30891 let mut f_id = None;
30892 let mut f_anchor: Option<Box<ObjectAnchor>> = None;
30893 #[cfg(feature = "extra-attrs")]
30894 let mut extra_attrs = std::collections::HashMap::new();
30895 #[cfg(feature = "extra-children")]
30896 let mut extra_children = Vec::new();
30897 #[cfg(feature = "extra-children")]
30898 let mut child_idx: usize = 0;
30899
30900 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
30902 let val = String::from_utf8_lossy(&attr.value);
30903 match attr.key.local_name().as_ref() {
30904 b"locked" => {
30905 f_locked = Some(val == "true" || val == "1");
30906 }
30907 b"defaultSize" => {
30908 f_default_size = Some(val == "true" || val == "1");
30909 }
30910 b"print" => {
30911 f_print = Some(val == "true" || val == "1");
30912 }
30913 b"disabled" => {
30914 f_disabled = Some(val == "true" || val == "1");
30915 }
30916 b"recalcAlways" => {
30917 f_recalc_always = Some(val == "true" || val == "1");
30918 }
30919 b"uiObject" => {
30920 f_ui_object = Some(val == "true" || val == "1");
30921 }
30922 b"autoFill" => {
30923 f_auto_fill = Some(val == "true" || val == "1");
30924 }
30925 b"autoLine" => {
30926 f_auto_line = Some(val == "true" || val == "1");
30927 }
30928 b"autoPict" => {
30929 f_auto_pict = Some(val == "true" || val == "1");
30930 }
30931 b"macro" => {
30932 f_macro = Some(val.into_owned());
30933 }
30934 b"altText" => {
30935 f_alt_text = Some(val.into_owned());
30936 }
30937 b"linkedCell" => {
30938 f_linked_cell = Some(val.into_owned());
30939 }
30940 b"listFillRange" => {
30941 f_list_fill_range = Some(val.into_owned());
30942 }
30943 b"cf" => {
30944 f_cf = Some(val.into_owned());
30945 }
30946 b"id" => {
30947 f_id = Some(val.into_owned());
30948 }
30949 #[cfg(feature = "extra-attrs")]
30950 unknown => {
30951 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
30952 extra_attrs.insert(key, val.into_owned());
30953 }
30954 #[cfg(not(feature = "extra-attrs"))]
30955 _ => {}
30956 }
30957 }
30958
30959 if !is_empty {
30961 let mut buf = Vec::new();
30962 loop {
30963 match reader.read_event_into(&mut buf)? {
30964 Event::Start(e) => {
30965 match e.local_name().as_ref() {
30966 b"anchor" => {
30967 f_anchor =
30968 Some(Box::new(ObjectAnchor::from_xml(reader, &e, false)?));
30969 #[cfg(feature = "extra-children")]
30970 {
30971 child_idx += 1;
30972 }
30973 }
30974 #[cfg(feature = "extra-children")]
30975 _ => {
30976 let elem = RawXmlElement::from_reader(reader, &e)?;
30978 extra_children.push(PositionedNode::new(
30979 child_idx,
30980 RawXmlNode::Element(elem),
30981 ));
30982 child_idx += 1;
30983 }
30984 #[cfg(not(feature = "extra-children"))]
30985 _ => {
30986 skip_element(reader)?;
30988 }
30989 }
30990 }
30991 Event::Empty(e) => {
30992 match e.local_name().as_ref() {
30993 b"anchor" => {
30994 f_anchor =
30995 Some(Box::new(ObjectAnchor::from_xml(reader, &e, true)?));
30996 #[cfg(feature = "extra-children")]
30997 {
30998 child_idx += 1;
30999 }
31000 }
31001 #[cfg(feature = "extra-children")]
31002 _ => {
31003 let elem = RawXmlElement::from_empty(&e);
31005 extra_children.push(PositionedNode::new(
31006 child_idx,
31007 RawXmlNode::Element(elem),
31008 ));
31009 child_idx += 1;
31010 }
31011 #[cfg(not(feature = "extra-children"))]
31012 _ => {}
31013 }
31014 }
31015 Event::End(_) => break,
31016 Event::Eof => break,
31017 _ => {}
31018 }
31019 buf.clear();
31020 }
31021 }
31022
31023 Ok(Self {
31024 locked: f_locked,
31025 default_size: f_default_size,
31026 print: f_print,
31027 disabled: f_disabled,
31028 recalc_always: f_recalc_always,
31029 ui_object: f_ui_object,
31030 auto_fill: f_auto_fill,
31031 auto_line: f_auto_line,
31032 auto_pict: f_auto_pict,
31033 r#macro: f_macro,
31034 alt_text: f_alt_text,
31035 linked_cell: f_linked_cell,
31036 list_fill_range: f_list_fill_range,
31037 cf: f_cf,
31038 id: f_id,
31039 anchor: f_anchor.ok_or_else(|| ParseError::MissingAttribute("anchor".to_string()))?,
31040 #[cfg(feature = "extra-attrs")]
31041 extra_attrs,
31042 #[cfg(feature = "extra-children")]
31043 extra_children,
31044 })
31045 }
31046}
31047
31048impl FromXml for IgnoredErrors {
31049 fn from_xml<R: BufRead>(
31050 reader: &mut Reader<R>,
31051 start_tag: &BytesStart,
31052 is_empty: bool,
31053 ) -> Result<Self, ParseError> {
31054 let mut f_ignored_error = Vec::new();
31055 let mut f_extension_list = None;
31056 #[cfg(feature = "extra-children")]
31057 let mut extra_children = Vec::new();
31058 #[cfg(feature = "extra-children")]
31059 let mut child_idx: usize = 0;
31060
31061 if !is_empty {
31063 let mut buf = Vec::new();
31064 loop {
31065 match reader.read_event_into(&mut buf)? {
31066 Event::Start(e) => {
31067 match e.local_name().as_ref() {
31068 b"ignoredError" => {
31069 f_ignored_error.push(IgnoredError::from_xml(reader, &e, false)?);
31070 #[cfg(feature = "extra-children")]
31071 {
31072 child_idx += 1;
31073 }
31074 }
31075 b"extLst" => {
31076 f_extension_list =
31077 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
31078 #[cfg(feature = "extra-children")]
31079 {
31080 child_idx += 1;
31081 }
31082 }
31083 #[cfg(feature = "extra-children")]
31084 _ => {
31085 let elem = RawXmlElement::from_reader(reader, &e)?;
31087 extra_children.push(PositionedNode::new(
31088 child_idx,
31089 RawXmlNode::Element(elem),
31090 ));
31091 child_idx += 1;
31092 }
31093 #[cfg(not(feature = "extra-children"))]
31094 _ => {
31095 skip_element(reader)?;
31097 }
31098 }
31099 }
31100 Event::Empty(e) => {
31101 match e.local_name().as_ref() {
31102 b"ignoredError" => {
31103 f_ignored_error.push(IgnoredError::from_xml(reader, &e, true)?);
31104 #[cfg(feature = "extra-children")]
31105 {
31106 child_idx += 1;
31107 }
31108 }
31109 b"extLst" => {
31110 f_extension_list =
31111 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
31112 #[cfg(feature = "extra-children")]
31113 {
31114 child_idx += 1;
31115 }
31116 }
31117 #[cfg(feature = "extra-children")]
31118 _ => {
31119 let elem = RawXmlElement::from_empty(&e);
31121 extra_children.push(PositionedNode::new(
31122 child_idx,
31123 RawXmlNode::Element(elem),
31124 ));
31125 child_idx += 1;
31126 }
31127 #[cfg(not(feature = "extra-children"))]
31128 _ => {}
31129 }
31130 }
31131 Event::End(_) => break,
31132 Event::Eof => break,
31133 _ => {}
31134 }
31135 buf.clear();
31136 }
31137 }
31138
31139 Ok(Self {
31140 ignored_error: f_ignored_error,
31141 extension_list: f_extension_list,
31142 #[cfg(feature = "extra-children")]
31143 extra_children,
31144 })
31145 }
31146}
31147
31148impl FromXml for IgnoredError {
31149 fn from_xml<R: BufRead>(
31150 reader: &mut Reader<R>,
31151 start_tag: &BytesStart,
31152 is_empty: bool,
31153 ) -> Result<Self, ParseError> {
31154 let mut f_square_reference: Option<SquareRef> = None;
31155 let mut f_eval_error = None;
31156 let mut f_two_digit_text_year = None;
31157 let mut f_number_stored_as_text = None;
31158 let mut f_formula = None;
31159 let mut f_formula_range = None;
31160 let mut f_unlocked_formula = None;
31161 let mut f_empty_cell_reference = None;
31162 let mut f_list_data_validation = None;
31163 let mut f_calculated_column = None;
31164 #[cfg(feature = "extra-attrs")]
31165 let mut extra_attrs = std::collections::HashMap::new();
31166
31167 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
31169 let val = String::from_utf8_lossy(&attr.value);
31170 match attr.key.local_name().as_ref() {
31171 b"sqref" => {
31172 f_square_reference = Some(val.into_owned());
31173 }
31174 b"evalError" => {
31175 f_eval_error = Some(val == "true" || val == "1");
31176 }
31177 b"twoDigitTextYear" => {
31178 f_two_digit_text_year = Some(val == "true" || val == "1");
31179 }
31180 b"numberStoredAsText" => {
31181 f_number_stored_as_text = Some(val == "true" || val == "1");
31182 }
31183 b"formula" => {
31184 f_formula = Some(val == "true" || val == "1");
31185 }
31186 b"formulaRange" => {
31187 f_formula_range = Some(val == "true" || val == "1");
31188 }
31189 b"unlockedFormula" => {
31190 f_unlocked_formula = Some(val == "true" || val == "1");
31191 }
31192 b"emptyCellReference" => {
31193 f_empty_cell_reference = Some(val == "true" || val == "1");
31194 }
31195 b"listDataValidation" => {
31196 f_list_data_validation = Some(val == "true" || val == "1");
31197 }
31198 b"calculatedColumn" => {
31199 f_calculated_column = Some(val == "true" || val == "1");
31200 }
31201 #[cfg(feature = "extra-attrs")]
31202 unknown => {
31203 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
31204 extra_attrs.insert(key, val.into_owned());
31205 }
31206 #[cfg(not(feature = "extra-attrs"))]
31207 _ => {}
31208 }
31209 }
31210
31211 if !is_empty {
31212 let mut buf = Vec::new();
31213 loop {
31214 match reader.read_event_into(&mut buf)? {
31215 Event::End(_) => break,
31216 Event::Eof => break,
31217 _ => {}
31218 }
31219 buf.clear();
31220 }
31221 }
31222
31223 Ok(Self {
31224 square_reference: f_square_reference
31225 .ok_or_else(|| ParseError::MissingAttribute("sqref".to_string()))?,
31226 eval_error: f_eval_error,
31227 two_digit_text_year: f_two_digit_text_year,
31228 number_stored_as_text: f_number_stored_as_text,
31229 formula: f_formula,
31230 formula_range: f_formula_range,
31231 unlocked_formula: f_unlocked_formula,
31232 empty_cell_reference: f_empty_cell_reference,
31233 list_data_validation: f_list_data_validation,
31234 calculated_column: f_calculated_column,
31235 #[cfg(feature = "extra-attrs")]
31236 extra_attrs,
31237 })
31238 }
31239}
31240
31241impl FromXml for TableParts {
31242 fn from_xml<R: BufRead>(
31243 reader: &mut Reader<R>,
31244 start_tag: &BytesStart,
31245 is_empty: bool,
31246 ) -> Result<Self, ParseError> {
31247 let mut f_count = None;
31248 let mut f_table_part = Vec::new();
31249 #[cfg(feature = "extra-attrs")]
31250 let mut extra_attrs = std::collections::HashMap::new();
31251 #[cfg(feature = "extra-children")]
31252 let mut extra_children = Vec::new();
31253 #[cfg(feature = "extra-children")]
31254 let mut child_idx: usize = 0;
31255
31256 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
31258 let val = String::from_utf8_lossy(&attr.value);
31259 match attr.key.local_name().as_ref() {
31260 b"count" => {
31261 f_count = val.parse().ok();
31262 }
31263 #[cfg(feature = "extra-attrs")]
31264 unknown => {
31265 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
31266 extra_attrs.insert(key, val.into_owned());
31267 }
31268 #[cfg(not(feature = "extra-attrs"))]
31269 _ => {}
31270 }
31271 }
31272
31273 if !is_empty {
31275 let mut buf = Vec::new();
31276 loop {
31277 match reader.read_event_into(&mut buf)? {
31278 Event::Start(e) => {
31279 match e.local_name().as_ref() {
31280 b"tablePart" => {
31281 f_table_part.push(TablePart::from_xml(reader, &e, false)?);
31282 #[cfg(feature = "extra-children")]
31283 {
31284 child_idx += 1;
31285 }
31286 }
31287 #[cfg(feature = "extra-children")]
31288 _ => {
31289 let elem = RawXmlElement::from_reader(reader, &e)?;
31291 extra_children.push(PositionedNode::new(
31292 child_idx,
31293 RawXmlNode::Element(elem),
31294 ));
31295 child_idx += 1;
31296 }
31297 #[cfg(not(feature = "extra-children"))]
31298 _ => {
31299 skip_element(reader)?;
31301 }
31302 }
31303 }
31304 Event::Empty(e) => {
31305 match e.local_name().as_ref() {
31306 b"tablePart" => {
31307 f_table_part.push(TablePart::from_xml(reader, &e, true)?);
31308 #[cfg(feature = "extra-children")]
31309 {
31310 child_idx += 1;
31311 }
31312 }
31313 #[cfg(feature = "extra-children")]
31314 _ => {
31315 let elem = RawXmlElement::from_empty(&e);
31317 extra_children.push(PositionedNode::new(
31318 child_idx,
31319 RawXmlNode::Element(elem),
31320 ));
31321 child_idx += 1;
31322 }
31323 #[cfg(not(feature = "extra-children"))]
31324 _ => {}
31325 }
31326 }
31327 Event::End(_) => break,
31328 Event::Eof => break,
31329 _ => {}
31330 }
31331 buf.clear();
31332 }
31333 }
31334
31335 Ok(Self {
31336 count: f_count,
31337 table_part: f_table_part,
31338 #[cfg(feature = "extra-attrs")]
31339 extra_attrs,
31340 #[cfg(feature = "extra-children")]
31341 extra_children,
31342 })
31343 }
31344}
31345
31346impl FromXml for TablePart {
31347 fn from_xml<R: BufRead>(
31348 reader: &mut Reader<R>,
31349 start_tag: &BytesStart,
31350 is_empty: bool,
31351 ) -> Result<Self, ParseError> {
31352 let mut f_id: Option<STRelationshipId> = None;
31353 #[cfg(feature = "extra-attrs")]
31354 let mut extra_attrs = std::collections::HashMap::new();
31355
31356 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
31358 let val = String::from_utf8_lossy(&attr.value);
31359 match attr.key.local_name().as_ref() {
31360 b"id" => {
31361 f_id = Some(val.into_owned());
31362 }
31363 #[cfg(feature = "extra-attrs")]
31364 unknown => {
31365 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
31366 extra_attrs.insert(key, val.into_owned());
31367 }
31368 #[cfg(not(feature = "extra-attrs"))]
31369 _ => {}
31370 }
31371 }
31372
31373 if !is_empty {
31374 let mut buf = Vec::new();
31375 loop {
31376 match reader.read_event_into(&mut buf)? {
31377 Event::End(_) => break,
31378 Event::Eof => break,
31379 _ => {}
31380 }
31381 buf.clear();
31382 }
31383 }
31384
31385 Ok(Self {
31386 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
31387 #[cfg(feature = "extra-attrs")]
31388 extra_attrs,
31389 })
31390 }
31391}
31392
31393impl FromXml for Metadata {
31394 fn from_xml<R: BufRead>(
31395 reader: &mut Reader<R>,
31396 start_tag: &BytesStart,
31397 is_empty: bool,
31398 ) -> Result<Self, ParseError> {
31399 let mut f_metadata_types = None;
31400 let mut f_metadata_strings = None;
31401 let mut f_mdx_metadata = None;
31402 let mut f_future_metadata = Vec::new();
31403 let mut f_cell_metadata = None;
31404 let mut f_value_metadata = None;
31405 let mut f_extension_list = None;
31406 #[cfg(feature = "extra-children")]
31407 let mut extra_children = Vec::new();
31408 #[cfg(feature = "extra-children")]
31409 let mut child_idx: usize = 0;
31410
31411 if !is_empty {
31413 let mut buf = Vec::new();
31414 loop {
31415 match reader.read_event_into(&mut buf)? {
31416 Event::Start(e) => {
31417 match e.local_name().as_ref() {
31418 b"metadataTypes" => {
31419 f_metadata_types =
31420 Some(Box::new(MetadataTypes::from_xml(reader, &e, false)?));
31421 #[cfg(feature = "extra-children")]
31422 {
31423 child_idx += 1;
31424 }
31425 }
31426 b"metadataStrings" => {
31427 f_metadata_strings =
31428 Some(Box::new(MetadataStrings::from_xml(reader, &e, false)?));
31429 #[cfg(feature = "extra-children")]
31430 {
31431 child_idx += 1;
31432 }
31433 }
31434 b"mdxMetadata" => {
31435 f_mdx_metadata =
31436 Some(Box::new(CTMdxMetadata::from_xml(reader, &e, false)?));
31437 #[cfg(feature = "extra-children")]
31438 {
31439 child_idx += 1;
31440 }
31441 }
31442 b"futureMetadata" => {
31443 f_future_metadata
31444 .push(CTFutureMetadata::from_xml(reader, &e, false)?);
31445 #[cfg(feature = "extra-children")]
31446 {
31447 child_idx += 1;
31448 }
31449 }
31450 b"cellMetadata" => {
31451 f_cell_metadata =
31452 Some(Box::new(MetadataBlocks::from_xml(reader, &e, false)?));
31453 #[cfg(feature = "extra-children")]
31454 {
31455 child_idx += 1;
31456 }
31457 }
31458 b"valueMetadata" => {
31459 f_value_metadata =
31460 Some(Box::new(MetadataBlocks::from_xml(reader, &e, false)?));
31461 #[cfg(feature = "extra-children")]
31462 {
31463 child_idx += 1;
31464 }
31465 }
31466 b"extLst" => {
31467 f_extension_list =
31468 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
31469 #[cfg(feature = "extra-children")]
31470 {
31471 child_idx += 1;
31472 }
31473 }
31474 #[cfg(feature = "extra-children")]
31475 _ => {
31476 let elem = RawXmlElement::from_reader(reader, &e)?;
31478 extra_children.push(PositionedNode::new(
31479 child_idx,
31480 RawXmlNode::Element(elem),
31481 ));
31482 child_idx += 1;
31483 }
31484 #[cfg(not(feature = "extra-children"))]
31485 _ => {
31486 skip_element(reader)?;
31488 }
31489 }
31490 }
31491 Event::Empty(e) => {
31492 match e.local_name().as_ref() {
31493 b"metadataTypes" => {
31494 f_metadata_types =
31495 Some(Box::new(MetadataTypes::from_xml(reader, &e, true)?));
31496 #[cfg(feature = "extra-children")]
31497 {
31498 child_idx += 1;
31499 }
31500 }
31501 b"metadataStrings" => {
31502 f_metadata_strings =
31503 Some(Box::new(MetadataStrings::from_xml(reader, &e, true)?));
31504 #[cfg(feature = "extra-children")]
31505 {
31506 child_idx += 1;
31507 }
31508 }
31509 b"mdxMetadata" => {
31510 f_mdx_metadata =
31511 Some(Box::new(CTMdxMetadata::from_xml(reader, &e, true)?));
31512 #[cfg(feature = "extra-children")]
31513 {
31514 child_idx += 1;
31515 }
31516 }
31517 b"futureMetadata" => {
31518 f_future_metadata
31519 .push(CTFutureMetadata::from_xml(reader, &e, true)?);
31520 #[cfg(feature = "extra-children")]
31521 {
31522 child_idx += 1;
31523 }
31524 }
31525 b"cellMetadata" => {
31526 f_cell_metadata =
31527 Some(Box::new(MetadataBlocks::from_xml(reader, &e, true)?));
31528 #[cfg(feature = "extra-children")]
31529 {
31530 child_idx += 1;
31531 }
31532 }
31533 b"valueMetadata" => {
31534 f_value_metadata =
31535 Some(Box::new(MetadataBlocks::from_xml(reader, &e, true)?));
31536 #[cfg(feature = "extra-children")]
31537 {
31538 child_idx += 1;
31539 }
31540 }
31541 b"extLst" => {
31542 f_extension_list =
31543 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
31544 #[cfg(feature = "extra-children")]
31545 {
31546 child_idx += 1;
31547 }
31548 }
31549 #[cfg(feature = "extra-children")]
31550 _ => {
31551 let elem = RawXmlElement::from_empty(&e);
31553 extra_children.push(PositionedNode::new(
31554 child_idx,
31555 RawXmlNode::Element(elem),
31556 ));
31557 child_idx += 1;
31558 }
31559 #[cfg(not(feature = "extra-children"))]
31560 _ => {}
31561 }
31562 }
31563 Event::End(_) => break,
31564 Event::Eof => break,
31565 _ => {}
31566 }
31567 buf.clear();
31568 }
31569 }
31570
31571 Ok(Self {
31572 metadata_types: f_metadata_types,
31573 metadata_strings: f_metadata_strings,
31574 mdx_metadata: f_mdx_metadata,
31575 future_metadata: f_future_metadata,
31576 cell_metadata: f_cell_metadata,
31577 value_metadata: f_value_metadata,
31578 extension_list: f_extension_list,
31579 #[cfg(feature = "extra-children")]
31580 extra_children,
31581 })
31582 }
31583}
31584
31585impl FromXml for MetadataTypes {
31586 fn from_xml<R: BufRead>(
31587 reader: &mut Reader<R>,
31588 start_tag: &BytesStart,
31589 is_empty: bool,
31590 ) -> Result<Self, ParseError> {
31591 let mut f_count = None;
31592 let mut f_metadata_type = Vec::new();
31593 #[cfg(feature = "extra-attrs")]
31594 let mut extra_attrs = std::collections::HashMap::new();
31595 #[cfg(feature = "extra-children")]
31596 let mut extra_children = Vec::new();
31597 #[cfg(feature = "extra-children")]
31598 let mut child_idx: usize = 0;
31599
31600 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
31602 let val = String::from_utf8_lossy(&attr.value);
31603 match attr.key.local_name().as_ref() {
31604 b"count" => {
31605 f_count = val.parse().ok();
31606 }
31607 #[cfg(feature = "extra-attrs")]
31608 unknown => {
31609 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
31610 extra_attrs.insert(key, val.into_owned());
31611 }
31612 #[cfg(not(feature = "extra-attrs"))]
31613 _ => {}
31614 }
31615 }
31616
31617 if !is_empty {
31619 let mut buf = Vec::new();
31620 loop {
31621 match reader.read_event_into(&mut buf)? {
31622 Event::Start(e) => {
31623 match e.local_name().as_ref() {
31624 b"metadataType" => {
31625 f_metadata_type.push(MetadataType::from_xml(reader, &e, false)?);
31626 #[cfg(feature = "extra-children")]
31627 {
31628 child_idx += 1;
31629 }
31630 }
31631 #[cfg(feature = "extra-children")]
31632 _ => {
31633 let elem = RawXmlElement::from_reader(reader, &e)?;
31635 extra_children.push(PositionedNode::new(
31636 child_idx,
31637 RawXmlNode::Element(elem),
31638 ));
31639 child_idx += 1;
31640 }
31641 #[cfg(not(feature = "extra-children"))]
31642 _ => {
31643 skip_element(reader)?;
31645 }
31646 }
31647 }
31648 Event::Empty(e) => {
31649 match e.local_name().as_ref() {
31650 b"metadataType" => {
31651 f_metadata_type.push(MetadataType::from_xml(reader, &e, true)?);
31652 #[cfg(feature = "extra-children")]
31653 {
31654 child_idx += 1;
31655 }
31656 }
31657 #[cfg(feature = "extra-children")]
31658 _ => {
31659 let elem = RawXmlElement::from_empty(&e);
31661 extra_children.push(PositionedNode::new(
31662 child_idx,
31663 RawXmlNode::Element(elem),
31664 ));
31665 child_idx += 1;
31666 }
31667 #[cfg(not(feature = "extra-children"))]
31668 _ => {}
31669 }
31670 }
31671 Event::End(_) => break,
31672 Event::Eof => break,
31673 _ => {}
31674 }
31675 buf.clear();
31676 }
31677 }
31678
31679 Ok(Self {
31680 count: f_count,
31681 metadata_type: f_metadata_type,
31682 #[cfg(feature = "extra-attrs")]
31683 extra_attrs,
31684 #[cfg(feature = "extra-children")]
31685 extra_children,
31686 })
31687 }
31688}
31689
31690impl FromXml for MetadataType {
31691 fn from_xml<R: BufRead>(
31692 reader: &mut Reader<R>,
31693 start_tag: &BytesStart,
31694 is_empty: bool,
31695 ) -> Result<Self, ParseError> {
31696 let mut f_name: Option<XmlString> = None;
31697 let mut f_min_supported_version: Option<u32> = None;
31698 let mut f_ghost_row = None;
31699 let mut f_ghost_col = None;
31700 let mut f_edit = None;
31701 let mut f_delete = None;
31702 let mut f_copy = None;
31703 let mut f_paste_all = None;
31704 let mut f_paste_formulas = None;
31705 let mut f_paste_values = None;
31706 let mut f_paste_formats = None;
31707 let mut f_paste_comments = None;
31708 let mut f_paste_data_validation = None;
31709 let mut f_paste_borders = None;
31710 let mut f_paste_col_widths = None;
31711 let mut f_paste_number_formats = None;
31712 let mut f_merge = None;
31713 let mut f_split_first = None;
31714 let mut f_split_all = None;
31715 let mut f_row_col_shift = None;
31716 let mut f_clear_all = None;
31717 let mut f_clear_formats = None;
31718 let mut f_clear_contents = None;
31719 let mut f_clear_comments = None;
31720 let mut f_assign = None;
31721 let mut f_coerce = None;
31722 let mut f_adjust = None;
31723 let mut f_cell_meta = None;
31724 #[cfg(feature = "extra-attrs")]
31725 let mut extra_attrs = std::collections::HashMap::new();
31726
31727 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
31729 let val = String::from_utf8_lossy(&attr.value);
31730 match attr.key.local_name().as_ref() {
31731 b"name" => {
31732 f_name = Some(val.into_owned());
31733 }
31734 b"minSupportedVersion" => {
31735 f_min_supported_version = val.parse().ok();
31736 }
31737 b"ghostRow" => {
31738 f_ghost_row = Some(val == "true" || val == "1");
31739 }
31740 b"ghostCol" => {
31741 f_ghost_col = Some(val == "true" || val == "1");
31742 }
31743 b"edit" => {
31744 f_edit = Some(val == "true" || val == "1");
31745 }
31746 b"delete" => {
31747 f_delete = Some(val == "true" || val == "1");
31748 }
31749 b"copy" => {
31750 f_copy = Some(val == "true" || val == "1");
31751 }
31752 b"pasteAll" => {
31753 f_paste_all = Some(val == "true" || val == "1");
31754 }
31755 b"pasteFormulas" => {
31756 f_paste_formulas = Some(val == "true" || val == "1");
31757 }
31758 b"pasteValues" => {
31759 f_paste_values = Some(val == "true" || val == "1");
31760 }
31761 b"pasteFormats" => {
31762 f_paste_formats = Some(val == "true" || val == "1");
31763 }
31764 b"pasteComments" => {
31765 f_paste_comments = Some(val == "true" || val == "1");
31766 }
31767 b"pasteDataValidation" => {
31768 f_paste_data_validation = Some(val == "true" || val == "1");
31769 }
31770 b"pasteBorders" => {
31771 f_paste_borders = Some(val == "true" || val == "1");
31772 }
31773 b"pasteColWidths" => {
31774 f_paste_col_widths = Some(val == "true" || val == "1");
31775 }
31776 b"pasteNumberFormats" => {
31777 f_paste_number_formats = Some(val == "true" || val == "1");
31778 }
31779 b"merge" => {
31780 f_merge = Some(val == "true" || val == "1");
31781 }
31782 b"splitFirst" => {
31783 f_split_first = Some(val == "true" || val == "1");
31784 }
31785 b"splitAll" => {
31786 f_split_all = Some(val == "true" || val == "1");
31787 }
31788 b"rowColShift" => {
31789 f_row_col_shift = Some(val == "true" || val == "1");
31790 }
31791 b"clearAll" => {
31792 f_clear_all = Some(val == "true" || val == "1");
31793 }
31794 b"clearFormats" => {
31795 f_clear_formats = Some(val == "true" || val == "1");
31796 }
31797 b"clearContents" => {
31798 f_clear_contents = Some(val == "true" || val == "1");
31799 }
31800 b"clearComments" => {
31801 f_clear_comments = Some(val == "true" || val == "1");
31802 }
31803 b"assign" => {
31804 f_assign = Some(val == "true" || val == "1");
31805 }
31806 b"coerce" => {
31807 f_coerce = Some(val == "true" || val == "1");
31808 }
31809 b"adjust" => {
31810 f_adjust = Some(val == "true" || val == "1");
31811 }
31812 b"cellMeta" => {
31813 f_cell_meta = Some(val == "true" || val == "1");
31814 }
31815 #[cfg(feature = "extra-attrs")]
31816 unknown => {
31817 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
31818 extra_attrs.insert(key, val.into_owned());
31819 }
31820 #[cfg(not(feature = "extra-attrs"))]
31821 _ => {}
31822 }
31823 }
31824
31825 if !is_empty {
31826 let mut buf = Vec::new();
31827 loop {
31828 match reader.read_event_into(&mut buf)? {
31829 Event::End(_) => break,
31830 Event::Eof => break,
31831 _ => {}
31832 }
31833 buf.clear();
31834 }
31835 }
31836
31837 Ok(Self {
31838 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
31839 min_supported_version: f_min_supported_version
31840 .ok_or_else(|| ParseError::MissingAttribute("minSupportedVersion".to_string()))?,
31841 ghost_row: f_ghost_row,
31842 ghost_col: f_ghost_col,
31843 edit: f_edit,
31844 delete: f_delete,
31845 copy: f_copy,
31846 paste_all: f_paste_all,
31847 paste_formulas: f_paste_formulas,
31848 paste_values: f_paste_values,
31849 paste_formats: f_paste_formats,
31850 paste_comments: f_paste_comments,
31851 paste_data_validation: f_paste_data_validation,
31852 paste_borders: f_paste_borders,
31853 paste_col_widths: f_paste_col_widths,
31854 paste_number_formats: f_paste_number_formats,
31855 merge: f_merge,
31856 split_first: f_split_first,
31857 split_all: f_split_all,
31858 row_col_shift: f_row_col_shift,
31859 clear_all: f_clear_all,
31860 clear_formats: f_clear_formats,
31861 clear_contents: f_clear_contents,
31862 clear_comments: f_clear_comments,
31863 assign: f_assign,
31864 coerce: f_coerce,
31865 adjust: f_adjust,
31866 cell_meta: f_cell_meta,
31867 #[cfg(feature = "extra-attrs")]
31868 extra_attrs,
31869 })
31870 }
31871}
31872
31873impl FromXml for MetadataBlocks {
31874 fn from_xml<R: BufRead>(
31875 reader: &mut Reader<R>,
31876 start_tag: &BytesStart,
31877 is_empty: bool,
31878 ) -> Result<Self, ParseError> {
31879 let mut f_count = None;
31880 let mut f_bk = Vec::new();
31881 #[cfg(feature = "extra-attrs")]
31882 let mut extra_attrs = std::collections::HashMap::new();
31883 #[cfg(feature = "extra-children")]
31884 let mut extra_children = Vec::new();
31885 #[cfg(feature = "extra-children")]
31886 let mut child_idx: usize = 0;
31887
31888 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
31890 let val = String::from_utf8_lossy(&attr.value);
31891 match attr.key.local_name().as_ref() {
31892 b"count" => {
31893 f_count = val.parse().ok();
31894 }
31895 #[cfg(feature = "extra-attrs")]
31896 unknown => {
31897 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
31898 extra_attrs.insert(key, val.into_owned());
31899 }
31900 #[cfg(not(feature = "extra-attrs"))]
31901 _ => {}
31902 }
31903 }
31904
31905 if !is_empty {
31907 let mut buf = Vec::new();
31908 loop {
31909 match reader.read_event_into(&mut buf)? {
31910 Event::Start(e) => {
31911 match e.local_name().as_ref() {
31912 b"bk" => {
31913 f_bk.push(MetadataBlock::from_xml(reader, &e, false)?);
31914 #[cfg(feature = "extra-children")]
31915 {
31916 child_idx += 1;
31917 }
31918 }
31919 #[cfg(feature = "extra-children")]
31920 _ => {
31921 let elem = RawXmlElement::from_reader(reader, &e)?;
31923 extra_children.push(PositionedNode::new(
31924 child_idx,
31925 RawXmlNode::Element(elem),
31926 ));
31927 child_idx += 1;
31928 }
31929 #[cfg(not(feature = "extra-children"))]
31930 _ => {
31931 skip_element(reader)?;
31933 }
31934 }
31935 }
31936 Event::Empty(e) => {
31937 match e.local_name().as_ref() {
31938 b"bk" => {
31939 f_bk.push(MetadataBlock::from_xml(reader, &e, true)?);
31940 #[cfg(feature = "extra-children")]
31941 {
31942 child_idx += 1;
31943 }
31944 }
31945 #[cfg(feature = "extra-children")]
31946 _ => {
31947 let elem = RawXmlElement::from_empty(&e);
31949 extra_children.push(PositionedNode::new(
31950 child_idx,
31951 RawXmlNode::Element(elem),
31952 ));
31953 child_idx += 1;
31954 }
31955 #[cfg(not(feature = "extra-children"))]
31956 _ => {}
31957 }
31958 }
31959 Event::End(_) => break,
31960 Event::Eof => break,
31961 _ => {}
31962 }
31963 buf.clear();
31964 }
31965 }
31966
31967 Ok(Self {
31968 count: f_count,
31969 bk: f_bk,
31970 #[cfg(feature = "extra-attrs")]
31971 extra_attrs,
31972 #[cfg(feature = "extra-children")]
31973 extra_children,
31974 })
31975 }
31976}
31977
31978impl FromXml for MetadataBlock {
31979 fn from_xml<R: BufRead>(
31980 reader: &mut Reader<R>,
31981 start_tag: &BytesStart,
31982 is_empty: bool,
31983 ) -> Result<Self, ParseError> {
31984 let mut f_rc = Vec::new();
31985 #[cfg(feature = "extra-children")]
31986 let mut extra_children = Vec::new();
31987 #[cfg(feature = "extra-children")]
31988 let mut child_idx: usize = 0;
31989
31990 if !is_empty {
31992 let mut buf = Vec::new();
31993 loop {
31994 match reader.read_event_into(&mut buf)? {
31995 Event::Start(e) => {
31996 match e.local_name().as_ref() {
31997 b"rc" => {
31998 f_rc.push(MetadataRecord::from_xml(reader, &e, false)?);
31999 #[cfg(feature = "extra-children")]
32000 {
32001 child_idx += 1;
32002 }
32003 }
32004 #[cfg(feature = "extra-children")]
32005 _ => {
32006 let elem = RawXmlElement::from_reader(reader, &e)?;
32008 extra_children.push(PositionedNode::new(
32009 child_idx,
32010 RawXmlNode::Element(elem),
32011 ));
32012 child_idx += 1;
32013 }
32014 #[cfg(not(feature = "extra-children"))]
32015 _ => {
32016 skip_element(reader)?;
32018 }
32019 }
32020 }
32021 Event::Empty(e) => {
32022 match e.local_name().as_ref() {
32023 b"rc" => {
32024 f_rc.push(MetadataRecord::from_xml(reader, &e, true)?);
32025 #[cfg(feature = "extra-children")]
32026 {
32027 child_idx += 1;
32028 }
32029 }
32030 #[cfg(feature = "extra-children")]
32031 _ => {
32032 let elem = RawXmlElement::from_empty(&e);
32034 extra_children.push(PositionedNode::new(
32035 child_idx,
32036 RawXmlNode::Element(elem),
32037 ));
32038 child_idx += 1;
32039 }
32040 #[cfg(not(feature = "extra-children"))]
32041 _ => {}
32042 }
32043 }
32044 Event::End(_) => break,
32045 Event::Eof => break,
32046 _ => {}
32047 }
32048 buf.clear();
32049 }
32050 }
32051
32052 Ok(Self {
32053 rc: f_rc,
32054 #[cfg(feature = "extra-children")]
32055 extra_children,
32056 })
32057 }
32058}
32059
32060impl FromXml for MetadataRecord {
32061 fn from_xml<R: BufRead>(
32062 reader: &mut Reader<R>,
32063 start_tag: &BytesStart,
32064 is_empty: bool,
32065 ) -> Result<Self, ParseError> {
32066 let mut f_cell_type: Option<u32> = None;
32067 let mut f_value: Option<u32> = None;
32068 #[cfg(feature = "extra-attrs")]
32069 let mut extra_attrs = std::collections::HashMap::new();
32070
32071 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
32073 let val = String::from_utf8_lossy(&attr.value);
32074 match attr.key.local_name().as_ref() {
32075 b"t" => {
32076 f_cell_type = val.parse().ok();
32077 }
32078 b"v" => {
32079 f_value = val.parse().ok();
32080 }
32081 #[cfg(feature = "extra-attrs")]
32082 unknown => {
32083 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
32084 extra_attrs.insert(key, val.into_owned());
32085 }
32086 #[cfg(not(feature = "extra-attrs"))]
32087 _ => {}
32088 }
32089 }
32090
32091 if !is_empty {
32092 let mut buf = Vec::new();
32093 loop {
32094 match reader.read_event_into(&mut buf)? {
32095 Event::End(_) => break,
32096 Event::Eof => break,
32097 _ => {}
32098 }
32099 buf.clear();
32100 }
32101 }
32102
32103 Ok(Self {
32104 cell_type: f_cell_type.ok_or_else(|| ParseError::MissingAttribute("t".to_string()))?,
32105 value: f_value.ok_or_else(|| ParseError::MissingAttribute("v".to_string()))?,
32106 #[cfg(feature = "extra-attrs")]
32107 extra_attrs,
32108 })
32109 }
32110}
32111
32112impl FromXml for CTFutureMetadata {
32113 fn from_xml<R: BufRead>(
32114 reader: &mut Reader<R>,
32115 start_tag: &BytesStart,
32116 is_empty: bool,
32117 ) -> Result<Self, ParseError> {
32118 let mut f_name: Option<XmlString> = None;
32119 let mut f_count = None;
32120 let mut f_bk = Vec::new();
32121 let mut f_extension_list = None;
32122 #[cfg(feature = "extra-attrs")]
32123 let mut extra_attrs = std::collections::HashMap::new();
32124 #[cfg(feature = "extra-children")]
32125 let mut extra_children = Vec::new();
32126 #[cfg(feature = "extra-children")]
32127 let mut child_idx: usize = 0;
32128
32129 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
32131 let val = String::from_utf8_lossy(&attr.value);
32132 match attr.key.local_name().as_ref() {
32133 b"name" => {
32134 f_name = Some(val.into_owned());
32135 }
32136 b"count" => {
32137 f_count = val.parse().ok();
32138 }
32139 #[cfg(feature = "extra-attrs")]
32140 unknown => {
32141 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
32142 extra_attrs.insert(key, val.into_owned());
32143 }
32144 #[cfg(not(feature = "extra-attrs"))]
32145 _ => {}
32146 }
32147 }
32148
32149 if !is_empty {
32151 let mut buf = Vec::new();
32152 loop {
32153 match reader.read_event_into(&mut buf)? {
32154 Event::Start(e) => {
32155 match e.local_name().as_ref() {
32156 b"bk" => {
32157 f_bk.push(CTFutureMetadataBlock::from_xml(reader, &e, false)?);
32158 #[cfg(feature = "extra-children")]
32159 {
32160 child_idx += 1;
32161 }
32162 }
32163 b"extLst" => {
32164 f_extension_list =
32165 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
32166 #[cfg(feature = "extra-children")]
32167 {
32168 child_idx += 1;
32169 }
32170 }
32171 #[cfg(feature = "extra-children")]
32172 _ => {
32173 let elem = RawXmlElement::from_reader(reader, &e)?;
32175 extra_children.push(PositionedNode::new(
32176 child_idx,
32177 RawXmlNode::Element(elem),
32178 ));
32179 child_idx += 1;
32180 }
32181 #[cfg(not(feature = "extra-children"))]
32182 _ => {
32183 skip_element(reader)?;
32185 }
32186 }
32187 }
32188 Event::Empty(e) => {
32189 match e.local_name().as_ref() {
32190 b"bk" => {
32191 f_bk.push(CTFutureMetadataBlock::from_xml(reader, &e, true)?);
32192 #[cfg(feature = "extra-children")]
32193 {
32194 child_idx += 1;
32195 }
32196 }
32197 b"extLst" => {
32198 f_extension_list =
32199 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
32200 #[cfg(feature = "extra-children")]
32201 {
32202 child_idx += 1;
32203 }
32204 }
32205 #[cfg(feature = "extra-children")]
32206 _ => {
32207 let elem = RawXmlElement::from_empty(&e);
32209 extra_children.push(PositionedNode::new(
32210 child_idx,
32211 RawXmlNode::Element(elem),
32212 ));
32213 child_idx += 1;
32214 }
32215 #[cfg(not(feature = "extra-children"))]
32216 _ => {}
32217 }
32218 }
32219 Event::End(_) => break,
32220 Event::Eof => break,
32221 _ => {}
32222 }
32223 buf.clear();
32224 }
32225 }
32226
32227 Ok(Self {
32228 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
32229 count: f_count,
32230 bk: f_bk,
32231 extension_list: f_extension_list,
32232 #[cfg(feature = "extra-attrs")]
32233 extra_attrs,
32234 #[cfg(feature = "extra-children")]
32235 extra_children,
32236 })
32237 }
32238}
32239
32240impl FromXml for CTFutureMetadataBlock {
32241 fn from_xml<R: BufRead>(
32242 reader: &mut Reader<R>,
32243 start_tag: &BytesStart,
32244 is_empty: bool,
32245 ) -> Result<Self, ParseError> {
32246 let mut f_extension_list = None;
32247 #[cfg(feature = "extra-children")]
32248 let mut extra_children = Vec::new();
32249 #[cfg(feature = "extra-children")]
32250 let mut child_idx: usize = 0;
32251
32252 if !is_empty {
32254 let mut buf = Vec::new();
32255 loop {
32256 match reader.read_event_into(&mut buf)? {
32257 Event::Start(e) => {
32258 match e.local_name().as_ref() {
32259 b"extLst" => {
32260 f_extension_list =
32261 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
32262 #[cfg(feature = "extra-children")]
32263 {
32264 child_idx += 1;
32265 }
32266 }
32267 #[cfg(feature = "extra-children")]
32268 _ => {
32269 let elem = RawXmlElement::from_reader(reader, &e)?;
32271 extra_children.push(PositionedNode::new(
32272 child_idx,
32273 RawXmlNode::Element(elem),
32274 ));
32275 child_idx += 1;
32276 }
32277 #[cfg(not(feature = "extra-children"))]
32278 _ => {
32279 skip_element(reader)?;
32281 }
32282 }
32283 }
32284 Event::Empty(e) => {
32285 match e.local_name().as_ref() {
32286 b"extLst" => {
32287 f_extension_list =
32288 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
32289 #[cfg(feature = "extra-children")]
32290 {
32291 child_idx += 1;
32292 }
32293 }
32294 #[cfg(feature = "extra-children")]
32295 _ => {
32296 let elem = RawXmlElement::from_empty(&e);
32298 extra_children.push(PositionedNode::new(
32299 child_idx,
32300 RawXmlNode::Element(elem),
32301 ));
32302 child_idx += 1;
32303 }
32304 #[cfg(not(feature = "extra-children"))]
32305 _ => {}
32306 }
32307 }
32308 Event::End(_) => break,
32309 Event::Eof => break,
32310 _ => {}
32311 }
32312 buf.clear();
32313 }
32314 }
32315
32316 Ok(Self {
32317 extension_list: f_extension_list,
32318 #[cfg(feature = "extra-children")]
32319 extra_children,
32320 })
32321 }
32322}
32323
32324impl FromXml for CTMdxMetadata {
32325 fn from_xml<R: BufRead>(
32326 reader: &mut Reader<R>,
32327 start_tag: &BytesStart,
32328 is_empty: bool,
32329 ) -> Result<Self, ParseError> {
32330 let mut f_count = None;
32331 let mut f_mdx = Vec::new();
32332 #[cfg(feature = "extra-attrs")]
32333 let mut extra_attrs = std::collections::HashMap::new();
32334 #[cfg(feature = "extra-children")]
32335 let mut extra_children = Vec::new();
32336 #[cfg(feature = "extra-children")]
32337 let mut child_idx: usize = 0;
32338
32339 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
32341 let val = String::from_utf8_lossy(&attr.value);
32342 match attr.key.local_name().as_ref() {
32343 b"count" => {
32344 f_count = val.parse().ok();
32345 }
32346 #[cfg(feature = "extra-attrs")]
32347 unknown => {
32348 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
32349 extra_attrs.insert(key, val.into_owned());
32350 }
32351 #[cfg(not(feature = "extra-attrs"))]
32352 _ => {}
32353 }
32354 }
32355
32356 if !is_empty {
32358 let mut buf = Vec::new();
32359 loop {
32360 match reader.read_event_into(&mut buf)? {
32361 Event::Start(e) => {
32362 match e.local_name().as_ref() {
32363 b"mdx" => {
32364 f_mdx.push(CTMdx::from_xml(reader, &e, false)?);
32365 #[cfg(feature = "extra-children")]
32366 {
32367 child_idx += 1;
32368 }
32369 }
32370 #[cfg(feature = "extra-children")]
32371 _ => {
32372 let elem = RawXmlElement::from_reader(reader, &e)?;
32374 extra_children.push(PositionedNode::new(
32375 child_idx,
32376 RawXmlNode::Element(elem),
32377 ));
32378 child_idx += 1;
32379 }
32380 #[cfg(not(feature = "extra-children"))]
32381 _ => {
32382 skip_element(reader)?;
32384 }
32385 }
32386 }
32387 Event::Empty(e) => {
32388 match e.local_name().as_ref() {
32389 b"mdx" => {
32390 f_mdx.push(CTMdx::from_xml(reader, &e, true)?);
32391 #[cfg(feature = "extra-children")]
32392 {
32393 child_idx += 1;
32394 }
32395 }
32396 #[cfg(feature = "extra-children")]
32397 _ => {
32398 let elem = RawXmlElement::from_empty(&e);
32400 extra_children.push(PositionedNode::new(
32401 child_idx,
32402 RawXmlNode::Element(elem),
32403 ));
32404 child_idx += 1;
32405 }
32406 #[cfg(not(feature = "extra-children"))]
32407 _ => {}
32408 }
32409 }
32410 Event::End(_) => break,
32411 Event::Eof => break,
32412 _ => {}
32413 }
32414 buf.clear();
32415 }
32416 }
32417
32418 Ok(Self {
32419 count: f_count,
32420 mdx: f_mdx,
32421 #[cfg(feature = "extra-attrs")]
32422 extra_attrs,
32423 #[cfg(feature = "extra-children")]
32424 extra_children,
32425 })
32426 }
32427}
32428
32429impl FromXml for CTMdx {
32430 fn from_xml<R: BufRead>(
32431 reader: &mut Reader<R>,
32432 start_tag: &BytesStart,
32433 is_empty: bool,
32434 ) -> Result<Self, ParseError> {
32435 let mut f_n: Option<u32> = None;
32436 let mut f_formula: Option<STMdxFunctionType> = None;
32437 let mut f_cell_type = None;
32438 let mut f_ms = None;
32439 let mut f_p = None;
32440 let mut f_k = None;
32441 #[cfg(feature = "extra-attrs")]
32442 let mut extra_attrs = std::collections::HashMap::new();
32443 #[cfg(feature = "extra-children")]
32444 let mut extra_children = Vec::new();
32445 #[cfg(feature = "extra-children")]
32446 let mut child_idx: usize = 0;
32447
32448 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
32450 let val = String::from_utf8_lossy(&attr.value);
32451 match attr.key.local_name().as_ref() {
32452 b"n" => {
32453 f_n = val.parse().ok();
32454 }
32455 b"f" => {
32456 f_formula = val.parse().ok();
32457 }
32458 #[cfg(feature = "extra-attrs")]
32459 unknown => {
32460 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
32461 extra_attrs.insert(key, val.into_owned());
32462 }
32463 #[cfg(not(feature = "extra-attrs"))]
32464 _ => {}
32465 }
32466 }
32467
32468 if !is_empty {
32470 let mut buf = Vec::new();
32471 loop {
32472 match reader.read_event_into(&mut buf)? {
32473 Event::Start(e) => {
32474 match e.local_name().as_ref() {
32475 b"t" => {
32476 f_cell_type =
32477 Some(Box::new(CTMdxTuple::from_xml(reader, &e, false)?));
32478 #[cfg(feature = "extra-children")]
32479 {
32480 child_idx += 1;
32481 }
32482 }
32483 b"ms" => {
32484 f_ms = Some(Box::new(CTMdxSet::from_xml(reader, &e, false)?));
32485 #[cfg(feature = "extra-children")]
32486 {
32487 child_idx += 1;
32488 }
32489 }
32490 b"p" => {
32491 f_p =
32492 Some(Box::new(CTMdxMemeberProp::from_xml(reader, &e, false)?));
32493 #[cfg(feature = "extra-children")]
32494 {
32495 child_idx += 1;
32496 }
32497 }
32498 b"k" => {
32499 f_k = Some(Box::new(CTMdxKPI::from_xml(reader, &e, false)?));
32500 #[cfg(feature = "extra-children")]
32501 {
32502 child_idx += 1;
32503 }
32504 }
32505 #[cfg(feature = "extra-children")]
32506 _ => {
32507 let elem = RawXmlElement::from_reader(reader, &e)?;
32509 extra_children.push(PositionedNode::new(
32510 child_idx,
32511 RawXmlNode::Element(elem),
32512 ));
32513 child_idx += 1;
32514 }
32515 #[cfg(not(feature = "extra-children"))]
32516 _ => {
32517 skip_element(reader)?;
32519 }
32520 }
32521 }
32522 Event::Empty(e) => {
32523 match e.local_name().as_ref() {
32524 b"t" => {
32525 f_cell_type =
32526 Some(Box::new(CTMdxTuple::from_xml(reader, &e, true)?));
32527 #[cfg(feature = "extra-children")]
32528 {
32529 child_idx += 1;
32530 }
32531 }
32532 b"ms" => {
32533 f_ms = Some(Box::new(CTMdxSet::from_xml(reader, &e, true)?));
32534 #[cfg(feature = "extra-children")]
32535 {
32536 child_idx += 1;
32537 }
32538 }
32539 b"p" => {
32540 f_p = Some(Box::new(CTMdxMemeberProp::from_xml(reader, &e, true)?));
32541 #[cfg(feature = "extra-children")]
32542 {
32543 child_idx += 1;
32544 }
32545 }
32546 b"k" => {
32547 f_k = Some(Box::new(CTMdxKPI::from_xml(reader, &e, true)?));
32548 #[cfg(feature = "extra-children")]
32549 {
32550 child_idx += 1;
32551 }
32552 }
32553 #[cfg(feature = "extra-children")]
32554 _ => {
32555 let elem = RawXmlElement::from_empty(&e);
32557 extra_children.push(PositionedNode::new(
32558 child_idx,
32559 RawXmlNode::Element(elem),
32560 ));
32561 child_idx += 1;
32562 }
32563 #[cfg(not(feature = "extra-children"))]
32564 _ => {}
32565 }
32566 }
32567 Event::End(_) => break,
32568 Event::Eof => break,
32569 _ => {}
32570 }
32571 buf.clear();
32572 }
32573 }
32574
32575 Ok(Self {
32576 n: f_n.ok_or_else(|| ParseError::MissingAttribute("n".to_string()))?,
32577 formula: f_formula.ok_or_else(|| ParseError::MissingAttribute("f".to_string()))?,
32578 cell_type: f_cell_type,
32579 ms: f_ms,
32580 p: f_p,
32581 k: f_k,
32582 #[cfg(feature = "extra-attrs")]
32583 extra_attrs,
32584 #[cfg(feature = "extra-children")]
32585 extra_children,
32586 })
32587 }
32588}
32589
32590impl FromXml for CTMdxTuple {
32591 fn from_xml<R: BufRead>(
32592 reader: &mut Reader<R>,
32593 start_tag: &BytesStart,
32594 is_empty: bool,
32595 ) -> Result<Self, ParseError> {
32596 let mut f_cells = None;
32597 let mut f_ct = None;
32598 let mut f_si = None;
32599 let mut f_fi = None;
32600 let mut f_bc = None;
32601 let mut f_fc = None;
32602 let mut f_i = None;
32603 let mut f_u = None;
32604 let mut f_st = None;
32605 let mut f_b = None;
32606 let mut f_n = Vec::new();
32607 #[cfg(feature = "extra-attrs")]
32608 let mut extra_attrs = std::collections::HashMap::new();
32609 #[cfg(feature = "extra-children")]
32610 let mut extra_children = Vec::new();
32611 #[cfg(feature = "extra-children")]
32612 let mut child_idx: usize = 0;
32613
32614 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
32616 let val = String::from_utf8_lossy(&attr.value);
32617 match attr.key.local_name().as_ref() {
32618 b"c" => {
32619 f_cells = val.parse().ok();
32620 }
32621 b"ct" => {
32622 f_ct = Some(val.into_owned());
32623 }
32624 b"si" => {
32625 f_si = val.parse().ok();
32626 }
32627 b"fi" => {
32628 f_fi = val.parse().ok();
32629 }
32630 b"bc" => {
32631 f_bc = decode_hex(&val);
32632 }
32633 b"fc" => {
32634 f_fc = decode_hex(&val);
32635 }
32636 b"i" => {
32637 f_i = Some(val == "true" || val == "1");
32638 }
32639 b"u" => {
32640 f_u = Some(val == "true" || val == "1");
32641 }
32642 b"st" => {
32643 f_st = Some(val == "true" || val == "1");
32644 }
32645 b"b" => {
32646 f_b = Some(val == "true" || val == "1");
32647 }
32648 #[cfg(feature = "extra-attrs")]
32649 unknown => {
32650 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
32651 extra_attrs.insert(key, val.into_owned());
32652 }
32653 #[cfg(not(feature = "extra-attrs"))]
32654 _ => {}
32655 }
32656 }
32657
32658 if !is_empty {
32660 let mut buf = Vec::new();
32661 loop {
32662 match reader.read_event_into(&mut buf)? {
32663 Event::Start(e) => {
32664 match e.local_name().as_ref() {
32665 b"n" => {
32666 f_n.push(CTMetadataStringIndex::from_xml(reader, &e, false)?);
32667 #[cfg(feature = "extra-children")]
32668 {
32669 child_idx += 1;
32670 }
32671 }
32672 #[cfg(feature = "extra-children")]
32673 _ => {
32674 let elem = RawXmlElement::from_reader(reader, &e)?;
32676 extra_children.push(PositionedNode::new(
32677 child_idx,
32678 RawXmlNode::Element(elem),
32679 ));
32680 child_idx += 1;
32681 }
32682 #[cfg(not(feature = "extra-children"))]
32683 _ => {
32684 skip_element(reader)?;
32686 }
32687 }
32688 }
32689 Event::Empty(e) => {
32690 match e.local_name().as_ref() {
32691 b"n" => {
32692 f_n.push(CTMetadataStringIndex::from_xml(reader, &e, true)?);
32693 #[cfg(feature = "extra-children")]
32694 {
32695 child_idx += 1;
32696 }
32697 }
32698 #[cfg(feature = "extra-children")]
32699 _ => {
32700 let elem = RawXmlElement::from_empty(&e);
32702 extra_children.push(PositionedNode::new(
32703 child_idx,
32704 RawXmlNode::Element(elem),
32705 ));
32706 child_idx += 1;
32707 }
32708 #[cfg(not(feature = "extra-children"))]
32709 _ => {}
32710 }
32711 }
32712 Event::End(_) => break,
32713 Event::Eof => break,
32714 _ => {}
32715 }
32716 buf.clear();
32717 }
32718 }
32719
32720 Ok(Self {
32721 cells: f_cells,
32722 ct: f_ct,
32723 si: f_si,
32724 fi: f_fi,
32725 bc: f_bc,
32726 fc: f_fc,
32727 i: f_i,
32728 u: f_u,
32729 st: f_st,
32730 b: f_b,
32731 n: f_n,
32732 #[cfg(feature = "extra-attrs")]
32733 extra_attrs,
32734 #[cfg(feature = "extra-children")]
32735 extra_children,
32736 })
32737 }
32738}
32739
32740impl FromXml for CTMdxSet {
32741 fn from_xml<R: BufRead>(
32742 reader: &mut Reader<R>,
32743 start_tag: &BytesStart,
32744 is_empty: bool,
32745 ) -> Result<Self, ParseError> {
32746 let mut f_ns: Option<u32> = None;
32747 let mut f_cells = None;
32748 let mut f_o = None;
32749 let mut f_n = Vec::new();
32750 #[cfg(feature = "extra-attrs")]
32751 let mut extra_attrs = std::collections::HashMap::new();
32752 #[cfg(feature = "extra-children")]
32753 let mut extra_children = Vec::new();
32754 #[cfg(feature = "extra-children")]
32755 let mut child_idx: usize = 0;
32756
32757 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
32759 let val = String::from_utf8_lossy(&attr.value);
32760 match attr.key.local_name().as_ref() {
32761 b"ns" => {
32762 f_ns = val.parse().ok();
32763 }
32764 b"c" => {
32765 f_cells = val.parse().ok();
32766 }
32767 b"o" => {
32768 f_o = val.parse().ok();
32769 }
32770 #[cfg(feature = "extra-attrs")]
32771 unknown => {
32772 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
32773 extra_attrs.insert(key, val.into_owned());
32774 }
32775 #[cfg(not(feature = "extra-attrs"))]
32776 _ => {}
32777 }
32778 }
32779
32780 if !is_empty {
32782 let mut buf = Vec::new();
32783 loop {
32784 match reader.read_event_into(&mut buf)? {
32785 Event::Start(e) => {
32786 match e.local_name().as_ref() {
32787 b"n" => {
32788 f_n.push(CTMetadataStringIndex::from_xml(reader, &e, false)?);
32789 #[cfg(feature = "extra-children")]
32790 {
32791 child_idx += 1;
32792 }
32793 }
32794 #[cfg(feature = "extra-children")]
32795 _ => {
32796 let elem = RawXmlElement::from_reader(reader, &e)?;
32798 extra_children.push(PositionedNode::new(
32799 child_idx,
32800 RawXmlNode::Element(elem),
32801 ));
32802 child_idx += 1;
32803 }
32804 #[cfg(not(feature = "extra-children"))]
32805 _ => {
32806 skip_element(reader)?;
32808 }
32809 }
32810 }
32811 Event::Empty(e) => {
32812 match e.local_name().as_ref() {
32813 b"n" => {
32814 f_n.push(CTMetadataStringIndex::from_xml(reader, &e, true)?);
32815 #[cfg(feature = "extra-children")]
32816 {
32817 child_idx += 1;
32818 }
32819 }
32820 #[cfg(feature = "extra-children")]
32821 _ => {
32822 let elem = RawXmlElement::from_empty(&e);
32824 extra_children.push(PositionedNode::new(
32825 child_idx,
32826 RawXmlNode::Element(elem),
32827 ));
32828 child_idx += 1;
32829 }
32830 #[cfg(not(feature = "extra-children"))]
32831 _ => {}
32832 }
32833 }
32834 Event::End(_) => break,
32835 Event::Eof => break,
32836 _ => {}
32837 }
32838 buf.clear();
32839 }
32840 }
32841
32842 Ok(Self {
32843 ns: f_ns.ok_or_else(|| ParseError::MissingAttribute("ns".to_string()))?,
32844 cells: f_cells,
32845 o: f_o,
32846 n: f_n,
32847 #[cfg(feature = "extra-attrs")]
32848 extra_attrs,
32849 #[cfg(feature = "extra-children")]
32850 extra_children,
32851 })
32852 }
32853}
32854
32855impl FromXml for CTMdxMemeberProp {
32856 fn from_xml<R: BufRead>(
32857 reader: &mut Reader<R>,
32858 start_tag: &BytesStart,
32859 is_empty: bool,
32860 ) -> Result<Self, ParseError> {
32861 let mut f_n: Option<u32> = None;
32862 let mut f_np: Option<u32> = None;
32863 #[cfg(feature = "extra-attrs")]
32864 let mut extra_attrs = std::collections::HashMap::new();
32865
32866 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
32868 let val = String::from_utf8_lossy(&attr.value);
32869 match attr.key.local_name().as_ref() {
32870 b"n" => {
32871 f_n = val.parse().ok();
32872 }
32873 b"np" => {
32874 f_np = val.parse().ok();
32875 }
32876 #[cfg(feature = "extra-attrs")]
32877 unknown => {
32878 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
32879 extra_attrs.insert(key, val.into_owned());
32880 }
32881 #[cfg(not(feature = "extra-attrs"))]
32882 _ => {}
32883 }
32884 }
32885
32886 if !is_empty {
32887 let mut buf = Vec::new();
32888 loop {
32889 match reader.read_event_into(&mut buf)? {
32890 Event::End(_) => break,
32891 Event::Eof => break,
32892 _ => {}
32893 }
32894 buf.clear();
32895 }
32896 }
32897
32898 Ok(Self {
32899 n: f_n.ok_or_else(|| ParseError::MissingAttribute("n".to_string()))?,
32900 np: f_np.ok_or_else(|| ParseError::MissingAttribute("np".to_string()))?,
32901 #[cfg(feature = "extra-attrs")]
32902 extra_attrs,
32903 })
32904 }
32905}
32906
32907impl FromXml for CTMdxKPI {
32908 fn from_xml<R: BufRead>(
32909 reader: &mut Reader<R>,
32910 start_tag: &BytesStart,
32911 is_empty: bool,
32912 ) -> Result<Self, ParseError> {
32913 let mut f_n: Option<u32> = None;
32914 let mut f_np: Option<u32> = None;
32915 let mut f_p: Option<STMdxKPIProperty> = None;
32916 #[cfg(feature = "extra-attrs")]
32917 let mut extra_attrs = std::collections::HashMap::new();
32918
32919 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
32921 let val = String::from_utf8_lossy(&attr.value);
32922 match attr.key.local_name().as_ref() {
32923 b"n" => {
32924 f_n = val.parse().ok();
32925 }
32926 b"np" => {
32927 f_np = val.parse().ok();
32928 }
32929 b"p" => {
32930 f_p = val.parse().ok();
32931 }
32932 #[cfg(feature = "extra-attrs")]
32933 unknown => {
32934 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
32935 extra_attrs.insert(key, val.into_owned());
32936 }
32937 #[cfg(not(feature = "extra-attrs"))]
32938 _ => {}
32939 }
32940 }
32941
32942 if !is_empty {
32943 let mut buf = Vec::new();
32944 loop {
32945 match reader.read_event_into(&mut buf)? {
32946 Event::End(_) => break,
32947 Event::Eof => break,
32948 _ => {}
32949 }
32950 buf.clear();
32951 }
32952 }
32953
32954 Ok(Self {
32955 n: f_n.ok_or_else(|| ParseError::MissingAttribute("n".to_string()))?,
32956 np: f_np.ok_or_else(|| ParseError::MissingAttribute("np".to_string()))?,
32957 p: f_p.ok_or_else(|| ParseError::MissingAttribute("p".to_string()))?,
32958 #[cfg(feature = "extra-attrs")]
32959 extra_attrs,
32960 })
32961 }
32962}
32963
32964impl FromXml for CTMetadataStringIndex {
32965 fn from_xml<R: BufRead>(
32966 reader: &mut Reader<R>,
32967 start_tag: &BytesStart,
32968 is_empty: bool,
32969 ) -> Result<Self, ParseError> {
32970 let mut f_x: Option<u32> = None;
32971 let mut f_style_index = None;
32972 #[cfg(feature = "extra-attrs")]
32973 let mut extra_attrs = std::collections::HashMap::new();
32974
32975 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
32977 let val = String::from_utf8_lossy(&attr.value);
32978 match attr.key.local_name().as_ref() {
32979 b"x" => {
32980 f_x = val.parse().ok();
32981 }
32982 b"s" => {
32983 f_style_index = Some(val == "true" || val == "1");
32984 }
32985 #[cfg(feature = "extra-attrs")]
32986 unknown => {
32987 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
32988 extra_attrs.insert(key, val.into_owned());
32989 }
32990 #[cfg(not(feature = "extra-attrs"))]
32991 _ => {}
32992 }
32993 }
32994
32995 if !is_empty {
32996 let mut buf = Vec::new();
32997 loop {
32998 match reader.read_event_into(&mut buf)? {
32999 Event::End(_) => break,
33000 Event::Eof => break,
33001 _ => {}
33002 }
33003 buf.clear();
33004 }
33005 }
33006
33007 Ok(Self {
33008 x: f_x.ok_or_else(|| ParseError::MissingAttribute("x".to_string()))?,
33009 style_index: f_style_index,
33010 #[cfg(feature = "extra-attrs")]
33011 extra_attrs,
33012 })
33013 }
33014}
33015
33016impl FromXml for MetadataStrings {
33017 fn from_xml<R: BufRead>(
33018 reader: &mut Reader<R>,
33019 start_tag: &BytesStart,
33020 is_empty: bool,
33021 ) -> Result<Self, ParseError> {
33022 let mut f_count = None;
33023 let mut f_style_index = Vec::new();
33024 #[cfg(feature = "extra-attrs")]
33025 let mut extra_attrs = std::collections::HashMap::new();
33026 #[cfg(feature = "extra-children")]
33027 let mut extra_children = Vec::new();
33028 #[cfg(feature = "extra-children")]
33029 let mut child_idx: usize = 0;
33030
33031 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
33033 let val = String::from_utf8_lossy(&attr.value);
33034 match attr.key.local_name().as_ref() {
33035 b"count" => {
33036 f_count = val.parse().ok();
33037 }
33038 #[cfg(feature = "extra-attrs")]
33039 unknown => {
33040 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
33041 extra_attrs.insert(key, val.into_owned());
33042 }
33043 #[cfg(not(feature = "extra-attrs"))]
33044 _ => {}
33045 }
33046 }
33047
33048 if !is_empty {
33050 let mut buf = Vec::new();
33051 loop {
33052 match reader.read_event_into(&mut buf)? {
33053 Event::Start(e) => {
33054 match e.local_name().as_ref() {
33055 b"s" => {
33056 f_style_index.push(CTXStringElement::from_xml(reader, &e, false)?);
33057 #[cfg(feature = "extra-children")]
33058 {
33059 child_idx += 1;
33060 }
33061 }
33062 #[cfg(feature = "extra-children")]
33063 _ => {
33064 let elem = RawXmlElement::from_reader(reader, &e)?;
33066 extra_children.push(PositionedNode::new(
33067 child_idx,
33068 RawXmlNode::Element(elem),
33069 ));
33070 child_idx += 1;
33071 }
33072 #[cfg(not(feature = "extra-children"))]
33073 _ => {
33074 skip_element(reader)?;
33076 }
33077 }
33078 }
33079 Event::Empty(e) => {
33080 match e.local_name().as_ref() {
33081 b"s" => {
33082 f_style_index.push(CTXStringElement::from_xml(reader, &e, true)?);
33083 #[cfg(feature = "extra-children")]
33084 {
33085 child_idx += 1;
33086 }
33087 }
33088 #[cfg(feature = "extra-children")]
33089 _ => {
33090 let elem = RawXmlElement::from_empty(&e);
33092 extra_children.push(PositionedNode::new(
33093 child_idx,
33094 RawXmlNode::Element(elem),
33095 ));
33096 child_idx += 1;
33097 }
33098 #[cfg(not(feature = "extra-children"))]
33099 _ => {}
33100 }
33101 }
33102 Event::End(_) => break,
33103 Event::Eof => break,
33104 _ => {}
33105 }
33106 buf.clear();
33107 }
33108 }
33109
33110 Ok(Self {
33111 count: f_count,
33112 style_index: f_style_index,
33113 #[cfg(feature = "extra-attrs")]
33114 extra_attrs,
33115 #[cfg(feature = "extra-children")]
33116 extra_children,
33117 })
33118 }
33119}
33120
33121impl FromXml for SingleXmlCells {
33122 fn from_xml<R: BufRead>(
33123 reader: &mut Reader<R>,
33124 start_tag: &BytesStart,
33125 is_empty: bool,
33126 ) -> Result<Self, ParseError> {
33127 let mut f_single_xml_cell = Vec::new();
33128 #[cfg(feature = "extra-children")]
33129 let mut extra_children = Vec::new();
33130 #[cfg(feature = "extra-children")]
33131 let mut child_idx: usize = 0;
33132
33133 if !is_empty {
33135 let mut buf = Vec::new();
33136 loop {
33137 match reader.read_event_into(&mut buf)? {
33138 Event::Start(e) => {
33139 match e.local_name().as_ref() {
33140 b"singleXmlCell" => {
33141 f_single_xml_cell.push(SingleXmlCell::from_xml(reader, &e, false)?);
33142 #[cfg(feature = "extra-children")]
33143 {
33144 child_idx += 1;
33145 }
33146 }
33147 #[cfg(feature = "extra-children")]
33148 _ => {
33149 let elem = RawXmlElement::from_reader(reader, &e)?;
33151 extra_children.push(PositionedNode::new(
33152 child_idx,
33153 RawXmlNode::Element(elem),
33154 ));
33155 child_idx += 1;
33156 }
33157 #[cfg(not(feature = "extra-children"))]
33158 _ => {
33159 skip_element(reader)?;
33161 }
33162 }
33163 }
33164 Event::Empty(e) => {
33165 match e.local_name().as_ref() {
33166 b"singleXmlCell" => {
33167 f_single_xml_cell.push(SingleXmlCell::from_xml(reader, &e, true)?);
33168 #[cfg(feature = "extra-children")]
33169 {
33170 child_idx += 1;
33171 }
33172 }
33173 #[cfg(feature = "extra-children")]
33174 _ => {
33175 let elem = RawXmlElement::from_empty(&e);
33177 extra_children.push(PositionedNode::new(
33178 child_idx,
33179 RawXmlNode::Element(elem),
33180 ));
33181 child_idx += 1;
33182 }
33183 #[cfg(not(feature = "extra-children"))]
33184 _ => {}
33185 }
33186 }
33187 Event::End(_) => break,
33188 Event::Eof => break,
33189 _ => {}
33190 }
33191 buf.clear();
33192 }
33193 }
33194
33195 Ok(Self {
33196 single_xml_cell: f_single_xml_cell,
33197 #[cfg(feature = "extra-children")]
33198 extra_children,
33199 })
33200 }
33201}
33202
33203impl FromXml for SingleXmlCell {
33204 fn from_xml<R: BufRead>(
33205 reader: &mut Reader<R>,
33206 start_tag: &BytesStart,
33207 is_empty: bool,
33208 ) -> Result<Self, ParseError> {
33209 let mut f_id: Option<u32> = None;
33210 let mut f_reference: Option<CellRef> = None;
33211 let mut f_connection_id: Option<u32> = None;
33212 let mut f_xml_cell_pr: Option<Box<XmlCellProperties>> = None;
33213 let mut f_extension_list = None;
33214 #[cfg(feature = "extra-attrs")]
33215 let mut extra_attrs = std::collections::HashMap::new();
33216 #[cfg(feature = "extra-children")]
33217 let mut extra_children = Vec::new();
33218 #[cfg(feature = "extra-children")]
33219 let mut child_idx: usize = 0;
33220
33221 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
33223 let val = String::from_utf8_lossy(&attr.value);
33224 match attr.key.local_name().as_ref() {
33225 b"id" => {
33226 f_id = val.parse().ok();
33227 }
33228 b"r" => {
33229 f_reference = Some(val.into_owned());
33230 }
33231 b"connectionId" => {
33232 f_connection_id = val.parse().ok();
33233 }
33234 #[cfg(feature = "extra-attrs")]
33235 unknown => {
33236 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
33237 extra_attrs.insert(key, val.into_owned());
33238 }
33239 #[cfg(not(feature = "extra-attrs"))]
33240 _ => {}
33241 }
33242 }
33243
33244 if !is_empty {
33246 let mut buf = Vec::new();
33247 loop {
33248 match reader.read_event_into(&mut buf)? {
33249 Event::Start(e) => {
33250 match e.local_name().as_ref() {
33251 b"xmlCellPr" => {
33252 f_xml_cell_pr =
33253 Some(Box::new(XmlCellProperties::from_xml(reader, &e, false)?));
33254 #[cfg(feature = "extra-children")]
33255 {
33256 child_idx += 1;
33257 }
33258 }
33259 b"extLst" => {
33260 f_extension_list =
33261 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
33262 #[cfg(feature = "extra-children")]
33263 {
33264 child_idx += 1;
33265 }
33266 }
33267 #[cfg(feature = "extra-children")]
33268 _ => {
33269 let elem = RawXmlElement::from_reader(reader, &e)?;
33271 extra_children.push(PositionedNode::new(
33272 child_idx,
33273 RawXmlNode::Element(elem),
33274 ));
33275 child_idx += 1;
33276 }
33277 #[cfg(not(feature = "extra-children"))]
33278 _ => {
33279 skip_element(reader)?;
33281 }
33282 }
33283 }
33284 Event::Empty(e) => {
33285 match e.local_name().as_ref() {
33286 b"xmlCellPr" => {
33287 f_xml_cell_pr =
33288 Some(Box::new(XmlCellProperties::from_xml(reader, &e, true)?));
33289 #[cfg(feature = "extra-children")]
33290 {
33291 child_idx += 1;
33292 }
33293 }
33294 b"extLst" => {
33295 f_extension_list =
33296 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
33297 #[cfg(feature = "extra-children")]
33298 {
33299 child_idx += 1;
33300 }
33301 }
33302 #[cfg(feature = "extra-children")]
33303 _ => {
33304 let elem = RawXmlElement::from_empty(&e);
33306 extra_children.push(PositionedNode::new(
33307 child_idx,
33308 RawXmlNode::Element(elem),
33309 ));
33310 child_idx += 1;
33311 }
33312 #[cfg(not(feature = "extra-children"))]
33313 _ => {}
33314 }
33315 }
33316 Event::End(_) => break,
33317 Event::Eof => break,
33318 _ => {}
33319 }
33320 buf.clear();
33321 }
33322 }
33323
33324 Ok(Self {
33325 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
33326 reference: f_reference.ok_or_else(|| ParseError::MissingAttribute("r".to_string()))?,
33327 connection_id: f_connection_id
33328 .ok_or_else(|| ParseError::MissingAttribute("connectionId".to_string()))?,
33329 xml_cell_pr: f_xml_cell_pr
33330 .ok_or_else(|| ParseError::MissingAttribute("xmlCellPr".to_string()))?,
33331 extension_list: f_extension_list,
33332 #[cfg(feature = "extra-attrs")]
33333 extra_attrs,
33334 #[cfg(feature = "extra-children")]
33335 extra_children,
33336 })
33337 }
33338}
33339
33340impl FromXml for XmlCellProperties {
33341 fn from_xml<R: BufRead>(
33342 reader: &mut Reader<R>,
33343 start_tag: &BytesStart,
33344 is_empty: bool,
33345 ) -> Result<Self, ParseError> {
33346 let mut f_id: Option<u32> = None;
33347 let mut f_unique_name = None;
33348 let mut f_xml_pr: Option<Box<XmlProperties>> = None;
33349 let mut f_extension_list = None;
33350 #[cfg(feature = "extra-attrs")]
33351 let mut extra_attrs = std::collections::HashMap::new();
33352 #[cfg(feature = "extra-children")]
33353 let mut extra_children = Vec::new();
33354 #[cfg(feature = "extra-children")]
33355 let mut child_idx: usize = 0;
33356
33357 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
33359 let val = String::from_utf8_lossy(&attr.value);
33360 match attr.key.local_name().as_ref() {
33361 b"id" => {
33362 f_id = val.parse().ok();
33363 }
33364 b"uniqueName" => {
33365 f_unique_name = Some(val.into_owned());
33366 }
33367 #[cfg(feature = "extra-attrs")]
33368 unknown => {
33369 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
33370 extra_attrs.insert(key, val.into_owned());
33371 }
33372 #[cfg(not(feature = "extra-attrs"))]
33373 _ => {}
33374 }
33375 }
33376
33377 if !is_empty {
33379 let mut buf = Vec::new();
33380 loop {
33381 match reader.read_event_into(&mut buf)? {
33382 Event::Start(e) => {
33383 match e.local_name().as_ref() {
33384 b"xmlPr" => {
33385 f_xml_pr =
33386 Some(Box::new(XmlProperties::from_xml(reader, &e, false)?));
33387 #[cfg(feature = "extra-children")]
33388 {
33389 child_idx += 1;
33390 }
33391 }
33392 b"extLst" => {
33393 f_extension_list =
33394 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
33395 #[cfg(feature = "extra-children")]
33396 {
33397 child_idx += 1;
33398 }
33399 }
33400 #[cfg(feature = "extra-children")]
33401 _ => {
33402 let elem = RawXmlElement::from_reader(reader, &e)?;
33404 extra_children.push(PositionedNode::new(
33405 child_idx,
33406 RawXmlNode::Element(elem),
33407 ));
33408 child_idx += 1;
33409 }
33410 #[cfg(not(feature = "extra-children"))]
33411 _ => {
33412 skip_element(reader)?;
33414 }
33415 }
33416 }
33417 Event::Empty(e) => {
33418 match e.local_name().as_ref() {
33419 b"xmlPr" => {
33420 f_xml_pr =
33421 Some(Box::new(XmlProperties::from_xml(reader, &e, true)?));
33422 #[cfg(feature = "extra-children")]
33423 {
33424 child_idx += 1;
33425 }
33426 }
33427 b"extLst" => {
33428 f_extension_list =
33429 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
33430 #[cfg(feature = "extra-children")]
33431 {
33432 child_idx += 1;
33433 }
33434 }
33435 #[cfg(feature = "extra-children")]
33436 _ => {
33437 let elem = RawXmlElement::from_empty(&e);
33439 extra_children.push(PositionedNode::new(
33440 child_idx,
33441 RawXmlNode::Element(elem),
33442 ));
33443 child_idx += 1;
33444 }
33445 #[cfg(not(feature = "extra-children"))]
33446 _ => {}
33447 }
33448 }
33449 Event::End(_) => break,
33450 Event::Eof => break,
33451 _ => {}
33452 }
33453 buf.clear();
33454 }
33455 }
33456
33457 Ok(Self {
33458 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
33459 unique_name: f_unique_name,
33460 xml_pr: f_xml_pr.ok_or_else(|| ParseError::MissingAttribute("xmlPr".to_string()))?,
33461 extension_list: f_extension_list,
33462 #[cfg(feature = "extra-attrs")]
33463 extra_attrs,
33464 #[cfg(feature = "extra-children")]
33465 extra_children,
33466 })
33467 }
33468}
33469
33470impl FromXml for XmlProperties {
33471 fn from_xml<R: BufRead>(
33472 reader: &mut Reader<R>,
33473 start_tag: &BytesStart,
33474 is_empty: bool,
33475 ) -> Result<Self, ParseError> {
33476 let mut f_map_id: Option<u32> = None;
33477 let mut f_xpath: Option<XmlString> = None;
33478 let mut f_xml_data_type: Option<STXmlDataType> = None;
33479 let mut f_extension_list = None;
33480 #[cfg(feature = "extra-attrs")]
33481 let mut extra_attrs = std::collections::HashMap::new();
33482 #[cfg(feature = "extra-children")]
33483 let mut extra_children = Vec::new();
33484 #[cfg(feature = "extra-children")]
33485 let mut child_idx: usize = 0;
33486
33487 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
33489 let val = String::from_utf8_lossy(&attr.value);
33490 match attr.key.local_name().as_ref() {
33491 b"mapId" => {
33492 f_map_id = val.parse().ok();
33493 }
33494 b"xpath" => {
33495 f_xpath = Some(val.into_owned());
33496 }
33497 b"xmlDataType" => {
33498 f_xml_data_type = Some(val.into_owned());
33499 }
33500 #[cfg(feature = "extra-attrs")]
33501 unknown => {
33502 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
33503 extra_attrs.insert(key, val.into_owned());
33504 }
33505 #[cfg(not(feature = "extra-attrs"))]
33506 _ => {}
33507 }
33508 }
33509
33510 if !is_empty {
33512 let mut buf = Vec::new();
33513 loop {
33514 match reader.read_event_into(&mut buf)? {
33515 Event::Start(e) => {
33516 match e.local_name().as_ref() {
33517 b"extLst" => {
33518 f_extension_list =
33519 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
33520 #[cfg(feature = "extra-children")]
33521 {
33522 child_idx += 1;
33523 }
33524 }
33525 #[cfg(feature = "extra-children")]
33526 _ => {
33527 let elem = RawXmlElement::from_reader(reader, &e)?;
33529 extra_children.push(PositionedNode::new(
33530 child_idx,
33531 RawXmlNode::Element(elem),
33532 ));
33533 child_idx += 1;
33534 }
33535 #[cfg(not(feature = "extra-children"))]
33536 _ => {
33537 skip_element(reader)?;
33539 }
33540 }
33541 }
33542 Event::Empty(e) => {
33543 match e.local_name().as_ref() {
33544 b"extLst" => {
33545 f_extension_list =
33546 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
33547 #[cfg(feature = "extra-children")]
33548 {
33549 child_idx += 1;
33550 }
33551 }
33552 #[cfg(feature = "extra-children")]
33553 _ => {
33554 let elem = RawXmlElement::from_empty(&e);
33556 extra_children.push(PositionedNode::new(
33557 child_idx,
33558 RawXmlNode::Element(elem),
33559 ));
33560 child_idx += 1;
33561 }
33562 #[cfg(not(feature = "extra-children"))]
33563 _ => {}
33564 }
33565 }
33566 Event::End(_) => break,
33567 Event::Eof => break,
33568 _ => {}
33569 }
33570 buf.clear();
33571 }
33572 }
33573
33574 Ok(Self {
33575 map_id: f_map_id.ok_or_else(|| ParseError::MissingAttribute("mapId".to_string()))?,
33576 xpath: f_xpath.ok_or_else(|| ParseError::MissingAttribute("xpath".to_string()))?,
33577 xml_data_type: f_xml_data_type
33578 .ok_or_else(|| ParseError::MissingAttribute("xmlDataType".to_string()))?,
33579 extension_list: f_extension_list,
33580 #[cfg(feature = "extra-attrs")]
33581 extra_attrs,
33582 #[cfg(feature = "extra-children")]
33583 extra_children,
33584 })
33585 }
33586}
33587
33588impl FromXml for Stylesheet {
33589 fn from_xml<R: BufRead>(
33590 reader: &mut Reader<R>,
33591 start_tag: &BytesStart,
33592 is_empty: bool,
33593 ) -> Result<Self, ParseError> {
33594 #[cfg(feature = "sml-styling")]
33595 let mut f_num_fmts = None;
33596 #[cfg(feature = "sml-styling")]
33597 let mut f_fonts = None;
33598 #[cfg(feature = "sml-styling")]
33599 let mut f_fills = None;
33600 #[cfg(feature = "sml-styling")]
33601 let mut f_borders = None;
33602 #[cfg(feature = "sml-styling")]
33603 let mut f_cell_style_xfs = None;
33604 #[cfg(feature = "sml-styling")]
33605 let mut f_cell_xfs = None;
33606 #[cfg(feature = "sml-styling")]
33607 let mut f_cell_styles = None;
33608 #[cfg(feature = "sml-styling")]
33609 let mut f_dxfs = None;
33610 #[cfg(feature = "sml-styling")]
33611 let mut f_table_styles = None;
33612 #[cfg(feature = "sml-styling")]
33613 let mut f_colors = None;
33614 #[cfg(feature = "sml-extensions")]
33615 let mut f_extension_list = None;
33616 #[cfg(feature = "extra-children")]
33617 let mut extra_children = Vec::new();
33618 #[cfg(feature = "extra-children")]
33619 let mut child_idx: usize = 0;
33620
33621 if !is_empty {
33623 let mut buf = Vec::new();
33624 loop {
33625 match reader.read_event_into(&mut buf)? {
33626 Event::Start(e) => {
33627 match e.local_name().as_ref() {
33628 #[cfg(feature = "sml-styling")]
33629 b"numFmts" => {
33630 f_num_fmts =
33631 Some(Box::new(NumberFormats::from_xml(reader, &e, false)?));
33632 #[cfg(feature = "extra-children")]
33633 {
33634 child_idx += 1;
33635 }
33636 }
33637 #[cfg(feature = "sml-styling")]
33638 b"fonts" => {
33639 f_fonts = Some(Box::new(Fonts::from_xml(reader, &e, false)?));
33640 #[cfg(feature = "extra-children")]
33641 {
33642 child_idx += 1;
33643 }
33644 }
33645 #[cfg(feature = "sml-styling")]
33646 b"fills" => {
33647 f_fills = Some(Box::new(Fills::from_xml(reader, &e, false)?));
33648 #[cfg(feature = "extra-children")]
33649 {
33650 child_idx += 1;
33651 }
33652 }
33653 #[cfg(feature = "sml-styling")]
33654 b"borders" => {
33655 f_borders = Some(Box::new(Borders::from_xml(reader, &e, false)?));
33656 #[cfg(feature = "extra-children")]
33657 {
33658 child_idx += 1;
33659 }
33660 }
33661 #[cfg(feature = "sml-styling")]
33662 b"cellStyleXfs" => {
33663 f_cell_style_xfs =
33664 Some(Box::new(CellStyleFormats::from_xml(reader, &e, false)?));
33665 #[cfg(feature = "extra-children")]
33666 {
33667 child_idx += 1;
33668 }
33669 }
33670 #[cfg(feature = "sml-styling")]
33671 b"cellXfs" => {
33672 f_cell_xfs =
33673 Some(Box::new(CellFormats::from_xml(reader, &e, false)?));
33674 #[cfg(feature = "extra-children")]
33675 {
33676 child_idx += 1;
33677 }
33678 }
33679 #[cfg(feature = "sml-styling")]
33680 b"cellStyles" => {
33681 f_cell_styles =
33682 Some(Box::new(CellStyles::from_xml(reader, &e, false)?));
33683 #[cfg(feature = "extra-children")]
33684 {
33685 child_idx += 1;
33686 }
33687 }
33688 #[cfg(feature = "sml-styling")]
33689 b"dxfs" => {
33690 f_dxfs = Some(Box::new(DifferentialFormats::from_xml(
33691 reader, &e, false,
33692 )?));
33693 #[cfg(feature = "extra-children")]
33694 {
33695 child_idx += 1;
33696 }
33697 }
33698 #[cfg(feature = "sml-styling")]
33699 b"tableStyles" => {
33700 f_table_styles =
33701 Some(Box::new(TableStyles::from_xml(reader, &e, false)?));
33702 #[cfg(feature = "extra-children")]
33703 {
33704 child_idx += 1;
33705 }
33706 }
33707 #[cfg(feature = "sml-styling")]
33708 b"colors" => {
33709 f_colors = Some(Box::new(Colors::from_xml(reader, &e, false)?));
33710 #[cfg(feature = "extra-children")]
33711 {
33712 child_idx += 1;
33713 }
33714 }
33715 #[cfg(feature = "sml-extensions")]
33716 b"extLst" => {
33717 f_extension_list =
33718 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
33719 #[cfg(feature = "extra-children")]
33720 {
33721 child_idx += 1;
33722 }
33723 }
33724 #[cfg(feature = "extra-children")]
33725 _ => {
33726 let elem = RawXmlElement::from_reader(reader, &e)?;
33728 extra_children.push(PositionedNode::new(
33729 child_idx,
33730 RawXmlNode::Element(elem),
33731 ));
33732 child_idx += 1;
33733 }
33734 #[cfg(not(feature = "extra-children"))]
33735 _ => {
33736 skip_element(reader)?;
33738 }
33739 }
33740 }
33741 Event::Empty(e) => {
33742 match e.local_name().as_ref() {
33743 #[cfg(feature = "sml-styling")]
33744 b"numFmts" => {
33745 f_num_fmts =
33746 Some(Box::new(NumberFormats::from_xml(reader, &e, true)?));
33747 #[cfg(feature = "extra-children")]
33748 {
33749 child_idx += 1;
33750 }
33751 }
33752 #[cfg(feature = "sml-styling")]
33753 b"fonts" => {
33754 f_fonts = Some(Box::new(Fonts::from_xml(reader, &e, true)?));
33755 #[cfg(feature = "extra-children")]
33756 {
33757 child_idx += 1;
33758 }
33759 }
33760 #[cfg(feature = "sml-styling")]
33761 b"fills" => {
33762 f_fills = Some(Box::new(Fills::from_xml(reader, &e, true)?));
33763 #[cfg(feature = "extra-children")]
33764 {
33765 child_idx += 1;
33766 }
33767 }
33768 #[cfg(feature = "sml-styling")]
33769 b"borders" => {
33770 f_borders = Some(Box::new(Borders::from_xml(reader, &e, true)?));
33771 #[cfg(feature = "extra-children")]
33772 {
33773 child_idx += 1;
33774 }
33775 }
33776 #[cfg(feature = "sml-styling")]
33777 b"cellStyleXfs" => {
33778 f_cell_style_xfs =
33779 Some(Box::new(CellStyleFormats::from_xml(reader, &e, true)?));
33780 #[cfg(feature = "extra-children")]
33781 {
33782 child_idx += 1;
33783 }
33784 }
33785 #[cfg(feature = "sml-styling")]
33786 b"cellXfs" => {
33787 f_cell_xfs =
33788 Some(Box::new(CellFormats::from_xml(reader, &e, true)?));
33789 #[cfg(feature = "extra-children")]
33790 {
33791 child_idx += 1;
33792 }
33793 }
33794 #[cfg(feature = "sml-styling")]
33795 b"cellStyles" => {
33796 f_cell_styles =
33797 Some(Box::new(CellStyles::from_xml(reader, &e, true)?));
33798 #[cfg(feature = "extra-children")]
33799 {
33800 child_idx += 1;
33801 }
33802 }
33803 #[cfg(feature = "sml-styling")]
33804 b"dxfs" => {
33805 f_dxfs = Some(Box::new(DifferentialFormats::from_xml(
33806 reader, &e, true,
33807 )?));
33808 #[cfg(feature = "extra-children")]
33809 {
33810 child_idx += 1;
33811 }
33812 }
33813 #[cfg(feature = "sml-styling")]
33814 b"tableStyles" => {
33815 f_table_styles =
33816 Some(Box::new(TableStyles::from_xml(reader, &e, true)?));
33817 #[cfg(feature = "extra-children")]
33818 {
33819 child_idx += 1;
33820 }
33821 }
33822 #[cfg(feature = "sml-styling")]
33823 b"colors" => {
33824 f_colors = Some(Box::new(Colors::from_xml(reader, &e, true)?));
33825 #[cfg(feature = "extra-children")]
33826 {
33827 child_idx += 1;
33828 }
33829 }
33830 #[cfg(feature = "sml-extensions")]
33831 b"extLst" => {
33832 f_extension_list =
33833 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
33834 #[cfg(feature = "extra-children")]
33835 {
33836 child_idx += 1;
33837 }
33838 }
33839 #[cfg(feature = "extra-children")]
33840 _ => {
33841 let elem = RawXmlElement::from_empty(&e);
33843 extra_children.push(PositionedNode::new(
33844 child_idx,
33845 RawXmlNode::Element(elem),
33846 ));
33847 child_idx += 1;
33848 }
33849 #[cfg(not(feature = "extra-children"))]
33850 _ => {}
33851 }
33852 }
33853 Event::End(_) => break,
33854 Event::Eof => break,
33855 _ => {}
33856 }
33857 buf.clear();
33858 }
33859 }
33860
33861 Ok(Self {
33862 #[cfg(feature = "sml-styling")]
33863 num_fmts: f_num_fmts,
33864 #[cfg(feature = "sml-styling")]
33865 fonts: f_fonts,
33866 #[cfg(feature = "sml-styling")]
33867 fills: f_fills,
33868 #[cfg(feature = "sml-styling")]
33869 borders: f_borders,
33870 #[cfg(feature = "sml-styling")]
33871 cell_style_xfs: f_cell_style_xfs,
33872 #[cfg(feature = "sml-styling")]
33873 cell_xfs: f_cell_xfs,
33874 #[cfg(feature = "sml-styling")]
33875 cell_styles: f_cell_styles,
33876 #[cfg(feature = "sml-styling")]
33877 dxfs: f_dxfs,
33878 #[cfg(feature = "sml-styling")]
33879 table_styles: f_table_styles,
33880 #[cfg(feature = "sml-styling")]
33881 colors: f_colors,
33882 #[cfg(feature = "sml-extensions")]
33883 extension_list: f_extension_list,
33884 #[cfg(feature = "extra-children")]
33885 extra_children,
33886 })
33887 }
33888}
33889
33890impl FromXml for CellAlignment {
33891 fn from_xml<R: BufRead>(
33892 reader: &mut Reader<R>,
33893 start_tag: &BytesStart,
33894 is_empty: bool,
33895 ) -> Result<Self, ParseError> {
33896 #[cfg(feature = "sml-styling")]
33897 let mut f_horizontal = None;
33898 #[cfg(feature = "sml-styling")]
33899 let mut f_vertical = None;
33900 #[cfg(feature = "sml-styling")]
33901 let mut f_text_rotation = None;
33902 #[cfg(feature = "sml-styling")]
33903 let mut f_wrap_text = None;
33904 #[cfg(feature = "sml-styling")]
33905 let mut f_indent = None;
33906 #[cfg(feature = "sml-styling")]
33907 let mut f_relative_indent = None;
33908 #[cfg(feature = "sml-styling")]
33909 let mut f_justify_last_line = None;
33910 #[cfg(feature = "sml-styling")]
33911 let mut f_shrink_to_fit = None;
33912 #[cfg(feature = "sml-styling")]
33913 let mut f_reading_order = None;
33914 #[cfg(feature = "extra-attrs")]
33915 let mut extra_attrs = std::collections::HashMap::new();
33916
33917 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
33919 let val = String::from_utf8_lossy(&attr.value);
33920 match attr.key.local_name().as_ref() {
33921 #[cfg(feature = "sml-styling")]
33922 b"horizontal" => {
33923 f_horizontal = val.parse().ok();
33924 }
33925 #[cfg(feature = "sml-styling")]
33926 b"vertical" => {
33927 f_vertical = val.parse().ok();
33928 }
33929 #[cfg(feature = "sml-styling")]
33930 b"textRotation" => {
33931 f_text_rotation = Some(val.into_owned());
33932 }
33933 #[cfg(feature = "sml-styling")]
33934 b"wrapText" => {
33935 f_wrap_text = Some(val == "true" || val == "1");
33936 }
33937 #[cfg(feature = "sml-styling")]
33938 b"indent" => {
33939 f_indent = val.parse().ok();
33940 }
33941 #[cfg(feature = "sml-styling")]
33942 b"relativeIndent" => {
33943 f_relative_indent = val.parse().ok();
33944 }
33945 #[cfg(feature = "sml-styling")]
33946 b"justifyLastLine" => {
33947 f_justify_last_line = Some(val == "true" || val == "1");
33948 }
33949 #[cfg(feature = "sml-styling")]
33950 b"shrinkToFit" => {
33951 f_shrink_to_fit = Some(val == "true" || val == "1");
33952 }
33953 #[cfg(feature = "sml-styling")]
33954 b"readingOrder" => {
33955 f_reading_order = val.parse().ok();
33956 }
33957 #[cfg(feature = "extra-attrs")]
33958 unknown => {
33959 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
33960 extra_attrs.insert(key, val.into_owned());
33961 }
33962 #[cfg(not(feature = "extra-attrs"))]
33963 _ => {}
33964 }
33965 }
33966
33967 if !is_empty {
33968 let mut buf = Vec::new();
33969 loop {
33970 match reader.read_event_into(&mut buf)? {
33971 Event::End(_) => break,
33972 Event::Eof => break,
33973 _ => {}
33974 }
33975 buf.clear();
33976 }
33977 }
33978
33979 Ok(Self {
33980 #[cfg(feature = "sml-styling")]
33981 horizontal: f_horizontal,
33982 #[cfg(feature = "sml-styling")]
33983 vertical: f_vertical,
33984 #[cfg(feature = "sml-styling")]
33985 text_rotation: f_text_rotation,
33986 #[cfg(feature = "sml-styling")]
33987 wrap_text: f_wrap_text,
33988 #[cfg(feature = "sml-styling")]
33989 indent: f_indent,
33990 #[cfg(feature = "sml-styling")]
33991 relative_indent: f_relative_indent,
33992 #[cfg(feature = "sml-styling")]
33993 justify_last_line: f_justify_last_line,
33994 #[cfg(feature = "sml-styling")]
33995 shrink_to_fit: f_shrink_to_fit,
33996 #[cfg(feature = "sml-styling")]
33997 reading_order: f_reading_order,
33998 #[cfg(feature = "extra-attrs")]
33999 extra_attrs,
34000 })
34001 }
34002}
34003
34004impl FromXml for Borders {
34005 fn from_xml<R: BufRead>(
34006 reader: &mut Reader<R>,
34007 start_tag: &BytesStart,
34008 is_empty: bool,
34009 ) -> Result<Self, ParseError> {
34010 let mut f_count = None;
34011 let mut f_border = Vec::new();
34012 #[cfg(feature = "extra-attrs")]
34013 let mut extra_attrs = std::collections::HashMap::new();
34014 #[cfg(feature = "extra-children")]
34015 let mut extra_children = Vec::new();
34016 #[cfg(feature = "extra-children")]
34017 let mut child_idx: usize = 0;
34018
34019 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
34021 let val = String::from_utf8_lossy(&attr.value);
34022 match attr.key.local_name().as_ref() {
34023 b"count" => {
34024 f_count = val.parse().ok();
34025 }
34026 #[cfg(feature = "extra-attrs")]
34027 unknown => {
34028 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
34029 extra_attrs.insert(key, val.into_owned());
34030 }
34031 #[cfg(not(feature = "extra-attrs"))]
34032 _ => {}
34033 }
34034 }
34035
34036 if !is_empty {
34038 let mut buf = Vec::new();
34039 loop {
34040 match reader.read_event_into(&mut buf)? {
34041 Event::Start(e) => {
34042 match e.local_name().as_ref() {
34043 b"border" => {
34044 f_border.push(Border::from_xml(reader, &e, false)?);
34045 #[cfg(feature = "extra-children")]
34046 {
34047 child_idx += 1;
34048 }
34049 }
34050 #[cfg(feature = "extra-children")]
34051 _ => {
34052 let elem = RawXmlElement::from_reader(reader, &e)?;
34054 extra_children.push(PositionedNode::new(
34055 child_idx,
34056 RawXmlNode::Element(elem),
34057 ));
34058 child_idx += 1;
34059 }
34060 #[cfg(not(feature = "extra-children"))]
34061 _ => {
34062 skip_element(reader)?;
34064 }
34065 }
34066 }
34067 Event::Empty(e) => {
34068 match e.local_name().as_ref() {
34069 b"border" => {
34070 f_border.push(Border::from_xml(reader, &e, true)?);
34071 #[cfg(feature = "extra-children")]
34072 {
34073 child_idx += 1;
34074 }
34075 }
34076 #[cfg(feature = "extra-children")]
34077 _ => {
34078 let elem = RawXmlElement::from_empty(&e);
34080 extra_children.push(PositionedNode::new(
34081 child_idx,
34082 RawXmlNode::Element(elem),
34083 ));
34084 child_idx += 1;
34085 }
34086 #[cfg(not(feature = "extra-children"))]
34087 _ => {}
34088 }
34089 }
34090 Event::End(_) => break,
34091 Event::Eof => break,
34092 _ => {}
34093 }
34094 buf.clear();
34095 }
34096 }
34097
34098 Ok(Self {
34099 count: f_count,
34100 border: f_border,
34101 #[cfg(feature = "extra-attrs")]
34102 extra_attrs,
34103 #[cfg(feature = "extra-children")]
34104 extra_children,
34105 })
34106 }
34107}
34108
34109impl FromXml for Border {
34110 fn from_xml<R: BufRead>(
34111 reader: &mut Reader<R>,
34112 start_tag: &BytesStart,
34113 is_empty: bool,
34114 ) -> Result<Self, ParseError> {
34115 #[cfg(feature = "sml-styling")]
34116 let mut f_diagonal_up = None;
34117 #[cfg(feature = "sml-styling")]
34118 let mut f_diagonal_down = None;
34119 #[cfg(feature = "sml-styling")]
34120 let mut f_outline = None;
34121 let mut f_start = None;
34122 let mut f_end = None;
34123 #[cfg(feature = "sml-styling")]
34124 let mut f_left = None;
34125 #[cfg(feature = "sml-styling")]
34126 let mut f_right = None;
34127 #[cfg(feature = "sml-styling")]
34128 let mut f_top = None;
34129 #[cfg(feature = "sml-styling")]
34130 let mut f_bottom = None;
34131 #[cfg(feature = "sml-styling")]
34132 let mut f_diagonal = None;
34133 #[cfg(feature = "sml-styling")]
34134 let mut f_vertical = None;
34135 #[cfg(feature = "sml-styling")]
34136 let mut f_horizontal = None;
34137 #[cfg(feature = "extra-attrs")]
34138 let mut extra_attrs = std::collections::HashMap::new();
34139 #[cfg(feature = "extra-children")]
34140 let mut extra_children = Vec::new();
34141 #[cfg(feature = "extra-children")]
34142 let mut child_idx: usize = 0;
34143
34144 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
34146 let val = String::from_utf8_lossy(&attr.value);
34147 match attr.key.local_name().as_ref() {
34148 #[cfg(feature = "sml-styling")]
34149 b"diagonalUp" => {
34150 f_diagonal_up = Some(val == "true" || val == "1");
34151 }
34152 #[cfg(feature = "sml-styling")]
34153 b"diagonalDown" => {
34154 f_diagonal_down = Some(val == "true" || val == "1");
34155 }
34156 #[cfg(feature = "sml-styling")]
34157 b"outline" => {
34158 f_outline = Some(val == "true" || val == "1");
34159 }
34160 #[cfg(feature = "extra-attrs")]
34161 unknown => {
34162 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
34163 extra_attrs.insert(key, val.into_owned());
34164 }
34165 #[cfg(not(feature = "extra-attrs"))]
34166 _ => {}
34167 }
34168 }
34169
34170 if !is_empty {
34172 let mut buf = Vec::new();
34173 loop {
34174 match reader.read_event_into(&mut buf)? {
34175 Event::Start(e) => {
34176 match e.local_name().as_ref() {
34177 b"start" => {
34178 f_start =
34179 Some(Box::new(BorderProperties::from_xml(reader, &e, false)?));
34180 #[cfg(feature = "extra-children")]
34181 {
34182 child_idx += 1;
34183 }
34184 }
34185 b"end" => {
34186 f_end =
34187 Some(Box::new(BorderProperties::from_xml(reader, &e, false)?));
34188 #[cfg(feature = "extra-children")]
34189 {
34190 child_idx += 1;
34191 }
34192 }
34193 #[cfg(feature = "sml-styling")]
34194 b"left" => {
34195 f_left =
34196 Some(Box::new(BorderProperties::from_xml(reader, &e, false)?));
34197 #[cfg(feature = "extra-children")]
34198 {
34199 child_idx += 1;
34200 }
34201 }
34202 #[cfg(feature = "sml-styling")]
34203 b"right" => {
34204 f_right =
34205 Some(Box::new(BorderProperties::from_xml(reader, &e, false)?));
34206 #[cfg(feature = "extra-children")]
34207 {
34208 child_idx += 1;
34209 }
34210 }
34211 #[cfg(feature = "sml-styling")]
34212 b"top" => {
34213 f_top =
34214 Some(Box::new(BorderProperties::from_xml(reader, &e, false)?));
34215 #[cfg(feature = "extra-children")]
34216 {
34217 child_idx += 1;
34218 }
34219 }
34220 #[cfg(feature = "sml-styling")]
34221 b"bottom" => {
34222 f_bottom =
34223 Some(Box::new(BorderProperties::from_xml(reader, &e, false)?));
34224 #[cfg(feature = "extra-children")]
34225 {
34226 child_idx += 1;
34227 }
34228 }
34229 #[cfg(feature = "sml-styling")]
34230 b"diagonal" => {
34231 f_diagonal =
34232 Some(Box::new(BorderProperties::from_xml(reader, &e, false)?));
34233 #[cfg(feature = "extra-children")]
34234 {
34235 child_idx += 1;
34236 }
34237 }
34238 #[cfg(feature = "sml-styling")]
34239 b"vertical" => {
34240 f_vertical =
34241 Some(Box::new(BorderProperties::from_xml(reader, &e, false)?));
34242 #[cfg(feature = "extra-children")]
34243 {
34244 child_idx += 1;
34245 }
34246 }
34247 #[cfg(feature = "sml-styling")]
34248 b"horizontal" => {
34249 f_horizontal =
34250 Some(Box::new(BorderProperties::from_xml(reader, &e, false)?));
34251 #[cfg(feature = "extra-children")]
34252 {
34253 child_idx += 1;
34254 }
34255 }
34256 #[cfg(feature = "extra-children")]
34257 _ => {
34258 let elem = RawXmlElement::from_reader(reader, &e)?;
34260 extra_children.push(PositionedNode::new(
34261 child_idx,
34262 RawXmlNode::Element(elem),
34263 ));
34264 child_idx += 1;
34265 }
34266 #[cfg(not(feature = "extra-children"))]
34267 _ => {
34268 skip_element(reader)?;
34270 }
34271 }
34272 }
34273 Event::Empty(e) => {
34274 match e.local_name().as_ref() {
34275 b"start" => {
34276 f_start =
34277 Some(Box::new(BorderProperties::from_xml(reader, &e, true)?));
34278 #[cfg(feature = "extra-children")]
34279 {
34280 child_idx += 1;
34281 }
34282 }
34283 b"end" => {
34284 f_end =
34285 Some(Box::new(BorderProperties::from_xml(reader, &e, true)?));
34286 #[cfg(feature = "extra-children")]
34287 {
34288 child_idx += 1;
34289 }
34290 }
34291 #[cfg(feature = "sml-styling")]
34292 b"left" => {
34293 f_left =
34294 Some(Box::new(BorderProperties::from_xml(reader, &e, true)?));
34295 #[cfg(feature = "extra-children")]
34296 {
34297 child_idx += 1;
34298 }
34299 }
34300 #[cfg(feature = "sml-styling")]
34301 b"right" => {
34302 f_right =
34303 Some(Box::new(BorderProperties::from_xml(reader, &e, true)?));
34304 #[cfg(feature = "extra-children")]
34305 {
34306 child_idx += 1;
34307 }
34308 }
34309 #[cfg(feature = "sml-styling")]
34310 b"top" => {
34311 f_top =
34312 Some(Box::new(BorderProperties::from_xml(reader, &e, true)?));
34313 #[cfg(feature = "extra-children")]
34314 {
34315 child_idx += 1;
34316 }
34317 }
34318 #[cfg(feature = "sml-styling")]
34319 b"bottom" => {
34320 f_bottom =
34321 Some(Box::new(BorderProperties::from_xml(reader, &e, true)?));
34322 #[cfg(feature = "extra-children")]
34323 {
34324 child_idx += 1;
34325 }
34326 }
34327 #[cfg(feature = "sml-styling")]
34328 b"diagonal" => {
34329 f_diagonal =
34330 Some(Box::new(BorderProperties::from_xml(reader, &e, true)?));
34331 #[cfg(feature = "extra-children")]
34332 {
34333 child_idx += 1;
34334 }
34335 }
34336 #[cfg(feature = "sml-styling")]
34337 b"vertical" => {
34338 f_vertical =
34339 Some(Box::new(BorderProperties::from_xml(reader, &e, true)?));
34340 #[cfg(feature = "extra-children")]
34341 {
34342 child_idx += 1;
34343 }
34344 }
34345 #[cfg(feature = "sml-styling")]
34346 b"horizontal" => {
34347 f_horizontal =
34348 Some(Box::new(BorderProperties::from_xml(reader, &e, true)?));
34349 #[cfg(feature = "extra-children")]
34350 {
34351 child_idx += 1;
34352 }
34353 }
34354 #[cfg(feature = "extra-children")]
34355 _ => {
34356 let elem = RawXmlElement::from_empty(&e);
34358 extra_children.push(PositionedNode::new(
34359 child_idx,
34360 RawXmlNode::Element(elem),
34361 ));
34362 child_idx += 1;
34363 }
34364 #[cfg(not(feature = "extra-children"))]
34365 _ => {}
34366 }
34367 }
34368 Event::End(_) => break,
34369 Event::Eof => break,
34370 _ => {}
34371 }
34372 buf.clear();
34373 }
34374 }
34375
34376 Ok(Self {
34377 #[cfg(feature = "sml-styling")]
34378 diagonal_up: f_diagonal_up,
34379 #[cfg(feature = "sml-styling")]
34380 diagonal_down: f_diagonal_down,
34381 #[cfg(feature = "sml-styling")]
34382 outline: f_outline,
34383 start: f_start,
34384 end: f_end,
34385 #[cfg(feature = "sml-styling")]
34386 left: f_left,
34387 #[cfg(feature = "sml-styling")]
34388 right: f_right,
34389 #[cfg(feature = "sml-styling")]
34390 top: f_top,
34391 #[cfg(feature = "sml-styling")]
34392 bottom: f_bottom,
34393 #[cfg(feature = "sml-styling")]
34394 diagonal: f_diagonal,
34395 #[cfg(feature = "sml-styling")]
34396 vertical: f_vertical,
34397 #[cfg(feature = "sml-styling")]
34398 horizontal: f_horizontal,
34399 #[cfg(feature = "extra-attrs")]
34400 extra_attrs,
34401 #[cfg(feature = "extra-children")]
34402 extra_children,
34403 })
34404 }
34405}
34406
34407impl FromXml for BorderProperties {
34408 fn from_xml<R: BufRead>(
34409 reader: &mut Reader<R>,
34410 start_tag: &BytesStart,
34411 is_empty: bool,
34412 ) -> Result<Self, ParseError> {
34413 let mut f_style = None;
34414 let mut f_color = None;
34415 #[cfg(feature = "extra-attrs")]
34416 let mut extra_attrs = std::collections::HashMap::new();
34417 #[cfg(feature = "extra-children")]
34418 let mut extra_children = Vec::new();
34419 #[cfg(feature = "extra-children")]
34420 let mut child_idx: usize = 0;
34421
34422 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
34424 let val = String::from_utf8_lossy(&attr.value);
34425 match attr.key.local_name().as_ref() {
34426 b"style" => {
34427 f_style = val.parse().ok();
34428 }
34429 #[cfg(feature = "extra-attrs")]
34430 unknown => {
34431 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
34432 extra_attrs.insert(key, val.into_owned());
34433 }
34434 #[cfg(not(feature = "extra-attrs"))]
34435 _ => {}
34436 }
34437 }
34438
34439 if !is_empty {
34441 let mut buf = Vec::new();
34442 loop {
34443 match reader.read_event_into(&mut buf)? {
34444 Event::Start(e) => {
34445 match e.local_name().as_ref() {
34446 b"color" => {
34447 f_color = Some(Box::new(Color::from_xml(reader, &e, false)?));
34448 #[cfg(feature = "extra-children")]
34449 {
34450 child_idx += 1;
34451 }
34452 }
34453 #[cfg(feature = "extra-children")]
34454 _ => {
34455 let elem = RawXmlElement::from_reader(reader, &e)?;
34457 extra_children.push(PositionedNode::new(
34458 child_idx,
34459 RawXmlNode::Element(elem),
34460 ));
34461 child_idx += 1;
34462 }
34463 #[cfg(not(feature = "extra-children"))]
34464 _ => {
34465 skip_element(reader)?;
34467 }
34468 }
34469 }
34470 Event::Empty(e) => {
34471 match e.local_name().as_ref() {
34472 b"color" => {
34473 f_color = Some(Box::new(Color::from_xml(reader, &e, true)?));
34474 #[cfg(feature = "extra-children")]
34475 {
34476 child_idx += 1;
34477 }
34478 }
34479 #[cfg(feature = "extra-children")]
34480 _ => {
34481 let elem = RawXmlElement::from_empty(&e);
34483 extra_children.push(PositionedNode::new(
34484 child_idx,
34485 RawXmlNode::Element(elem),
34486 ));
34487 child_idx += 1;
34488 }
34489 #[cfg(not(feature = "extra-children"))]
34490 _ => {}
34491 }
34492 }
34493 Event::End(_) => break,
34494 Event::Eof => break,
34495 _ => {}
34496 }
34497 buf.clear();
34498 }
34499 }
34500
34501 Ok(Self {
34502 style: f_style,
34503 color: f_color,
34504 #[cfg(feature = "extra-attrs")]
34505 extra_attrs,
34506 #[cfg(feature = "extra-children")]
34507 extra_children,
34508 })
34509 }
34510}
34511
34512impl FromXml for CellProtection {
34513 fn from_xml<R: BufRead>(
34514 reader: &mut Reader<R>,
34515 start_tag: &BytesStart,
34516 is_empty: bool,
34517 ) -> Result<Self, ParseError> {
34518 #[cfg(feature = "sml-protection")]
34519 let mut f_locked = None;
34520 #[cfg(feature = "sml-protection")]
34521 let mut f_hidden = None;
34522 #[cfg(feature = "extra-attrs")]
34523 let mut extra_attrs = std::collections::HashMap::new();
34524
34525 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
34527 let val = String::from_utf8_lossy(&attr.value);
34528 match attr.key.local_name().as_ref() {
34529 #[cfg(feature = "sml-protection")]
34530 b"locked" => {
34531 f_locked = Some(val == "true" || val == "1");
34532 }
34533 #[cfg(feature = "sml-protection")]
34534 b"hidden" => {
34535 f_hidden = Some(val == "true" || val == "1");
34536 }
34537 #[cfg(feature = "extra-attrs")]
34538 unknown => {
34539 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
34540 extra_attrs.insert(key, val.into_owned());
34541 }
34542 #[cfg(not(feature = "extra-attrs"))]
34543 _ => {}
34544 }
34545 }
34546
34547 if !is_empty {
34548 let mut buf = Vec::new();
34549 loop {
34550 match reader.read_event_into(&mut buf)? {
34551 Event::End(_) => break,
34552 Event::Eof => break,
34553 _ => {}
34554 }
34555 buf.clear();
34556 }
34557 }
34558
34559 Ok(Self {
34560 #[cfg(feature = "sml-protection")]
34561 locked: f_locked,
34562 #[cfg(feature = "sml-protection")]
34563 hidden: f_hidden,
34564 #[cfg(feature = "extra-attrs")]
34565 extra_attrs,
34566 })
34567 }
34568}
34569
34570impl FromXml for Fonts {
34571 fn from_xml<R: BufRead>(
34572 reader: &mut Reader<R>,
34573 start_tag: &BytesStart,
34574 is_empty: bool,
34575 ) -> Result<Self, ParseError> {
34576 let mut f_count = None;
34577 let mut f_font = Vec::new();
34578 #[cfg(feature = "extra-attrs")]
34579 let mut extra_attrs = std::collections::HashMap::new();
34580 #[cfg(feature = "extra-children")]
34581 let mut extra_children = Vec::new();
34582 #[cfg(feature = "extra-children")]
34583 let mut child_idx: usize = 0;
34584
34585 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
34587 let val = String::from_utf8_lossy(&attr.value);
34588 match attr.key.local_name().as_ref() {
34589 b"count" => {
34590 f_count = val.parse().ok();
34591 }
34592 #[cfg(feature = "extra-attrs")]
34593 unknown => {
34594 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
34595 extra_attrs.insert(key, val.into_owned());
34596 }
34597 #[cfg(not(feature = "extra-attrs"))]
34598 _ => {}
34599 }
34600 }
34601
34602 if !is_empty {
34604 let mut buf = Vec::new();
34605 loop {
34606 match reader.read_event_into(&mut buf)? {
34607 Event::Start(e) => {
34608 match e.local_name().as_ref() {
34609 b"font" => {
34610 f_font.push(Font::from_xml(reader, &e, false)?);
34611 #[cfg(feature = "extra-children")]
34612 {
34613 child_idx += 1;
34614 }
34615 }
34616 #[cfg(feature = "extra-children")]
34617 _ => {
34618 let elem = RawXmlElement::from_reader(reader, &e)?;
34620 extra_children.push(PositionedNode::new(
34621 child_idx,
34622 RawXmlNode::Element(elem),
34623 ));
34624 child_idx += 1;
34625 }
34626 #[cfg(not(feature = "extra-children"))]
34627 _ => {
34628 skip_element(reader)?;
34630 }
34631 }
34632 }
34633 Event::Empty(e) => {
34634 match e.local_name().as_ref() {
34635 b"font" => {
34636 f_font.push(Font::from_xml(reader, &e, true)?);
34637 #[cfg(feature = "extra-children")]
34638 {
34639 child_idx += 1;
34640 }
34641 }
34642 #[cfg(feature = "extra-children")]
34643 _ => {
34644 let elem = RawXmlElement::from_empty(&e);
34646 extra_children.push(PositionedNode::new(
34647 child_idx,
34648 RawXmlNode::Element(elem),
34649 ));
34650 child_idx += 1;
34651 }
34652 #[cfg(not(feature = "extra-children"))]
34653 _ => {}
34654 }
34655 }
34656 Event::End(_) => break,
34657 Event::Eof => break,
34658 _ => {}
34659 }
34660 buf.clear();
34661 }
34662 }
34663
34664 Ok(Self {
34665 count: f_count,
34666 font: f_font,
34667 #[cfg(feature = "extra-attrs")]
34668 extra_attrs,
34669 #[cfg(feature = "extra-children")]
34670 extra_children,
34671 })
34672 }
34673}
34674
34675impl FromXml for Fills {
34676 fn from_xml<R: BufRead>(
34677 reader: &mut Reader<R>,
34678 start_tag: &BytesStart,
34679 is_empty: bool,
34680 ) -> Result<Self, ParseError> {
34681 let mut f_count = None;
34682 let mut f_fill = Vec::new();
34683 #[cfg(feature = "extra-attrs")]
34684 let mut extra_attrs = std::collections::HashMap::new();
34685 #[cfg(feature = "extra-children")]
34686 let mut extra_children = Vec::new();
34687 #[cfg(feature = "extra-children")]
34688 let mut child_idx: usize = 0;
34689
34690 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
34692 let val = String::from_utf8_lossy(&attr.value);
34693 match attr.key.local_name().as_ref() {
34694 b"count" => {
34695 f_count = val.parse().ok();
34696 }
34697 #[cfg(feature = "extra-attrs")]
34698 unknown => {
34699 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
34700 extra_attrs.insert(key, val.into_owned());
34701 }
34702 #[cfg(not(feature = "extra-attrs"))]
34703 _ => {}
34704 }
34705 }
34706
34707 if !is_empty {
34709 let mut buf = Vec::new();
34710 loop {
34711 match reader.read_event_into(&mut buf)? {
34712 Event::Start(e) => {
34713 match e.local_name().as_ref() {
34714 b"fill" => {
34715 f_fill.push(Fill::from_xml(reader, &e, false)?);
34716 #[cfg(feature = "extra-children")]
34717 {
34718 child_idx += 1;
34719 }
34720 }
34721 #[cfg(feature = "extra-children")]
34722 _ => {
34723 let elem = RawXmlElement::from_reader(reader, &e)?;
34725 extra_children.push(PositionedNode::new(
34726 child_idx,
34727 RawXmlNode::Element(elem),
34728 ));
34729 child_idx += 1;
34730 }
34731 #[cfg(not(feature = "extra-children"))]
34732 _ => {
34733 skip_element(reader)?;
34735 }
34736 }
34737 }
34738 Event::Empty(e) => {
34739 match e.local_name().as_ref() {
34740 b"fill" => {
34741 f_fill.push(Fill::from_xml(reader, &e, true)?);
34742 #[cfg(feature = "extra-children")]
34743 {
34744 child_idx += 1;
34745 }
34746 }
34747 #[cfg(feature = "extra-children")]
34748 _ => {
34749 let elem = RawXmlElement::from_empty(&e);
34751 extra_children.push(PositionedNode::new(
34752 child_idx,
34753 RawXmlNode::Element(elem),
34754 ));
34755 child_idx += 1;
34756 }
34757 #[cfg(not(feature = "extra-children"))]
34758 _ => {}
34759 }
34760 }
34761 Event::End(_) => break,
34762 Event::Eof => break,
34763 _ => {}
34764 }
34765 buf.clear();
34766 }
34767 }
34768
34769 Ok(Self {
34770 count: f_count,
34771 fill: f_fill,
34772 #[cfg(feature = "extra-attrs")]
34773 extra_attrs,
34774 #[cfg(feature = "extra-children")]
34775 extra_children,
34776 })
34777 }
34778}
34779
34780impl FromXml for Fill {
34781 fn from_xml<R: BufRead>(
34782 reader: &mut Reader<R>,
34783 start_tag: &BytesStart,
34784 is_empty: bool,
34785 ) -> Result<Self, ParseError> {
34786 #[cfg(feature = "sml-styling")]
34787 let mut f_pattern_fill = None;
34788 #[cfg(feature = "sml-styling")]
34789 let mut f_gradient_fill = None;
34790 #[cfg(feature = "extra-children")]
34791 let mut extra_children = Vec::new();
34792 #[cfg(feature = "extra-children")]
34793 let mut child_idx: usize = 0;
34794
34795 if !is_empty {
34797 let mut buf = Vec::new();
34798 loop {
34799 match reader.read_event_into(&mut buf)? {
34800 Event::Start(e) => {
34801 match e.local_name().as_ref() {
34802 #[cfg(feature = "sml-styling")]
34803 b"patternFill" => {
34804 f_pattern_fill =
34805 Some(Box::new(PatternFill::from_xml(reader, &e, false)?));
34806 #[cfg(feature = "extra-children")]
34807 {
34808 child_idx += 1;
34809 }
34810 }
34811 #[cfg(feature = "sml-styling")]
34812 b"gradientFill" => {
34813 f_gradient_fill =
34814 Some(Box::new(GradientFill::from_xml(reader, &e, false)?));
34815 #[cfg(feature = "extra-children")]
34816 {
34817 child_idx += 1;
34818 }
34819 }
34820 #[cfg(feature = "extra-children")]
34821 _ => {
34822 let elem = RawXmlElement::from_reader(reader, &e)?;
34824 extra_children.push(PositionedNode::new(
34825 child_idx,
34826 RawXmlNode::Element(elem),
34827 ));
34828 child_idx += 1;
34829 }
34830 #[cfg(not(feature = "extra-children"))]
34831 _ => {
34832 skip_element(reader)?;
34834 }
34835 }
34836 }
34837 Event::Empty(e) => {
34838 match e.local_name().as_ref() {
34839 #[cfg(feature = "sml-styling")]
34840 b"patternFill" => {
34841 f_pattern_fill =
34842 Some(Box::new(PatternFill::from_xml(reader, &e, true)?));
34843 #[cfg(feature = "extra-children")]
34844 {
34845 child_idx += 1;
34846 }
34847 }
34848 #[cfg(feature = "sml-styling")]
34849 b"gradientFill" => {
34850 f_gradient_fill =
34851 Some(Box::new(GradientFill::from_xml(reader, &e, true)?));
34852 #[cfg(feature = "extra-children")]
34853 {
34854 child_idx += 1;
34855 }
34856 }
34857 #[cfg(feature = "extra-children")]
34858 _ => {
34859 let elem = RawXmlElement::from_empty(&e);
34861 extra_children.push(PositionedNode::new(
34862 child_idx,
34863 RawXmlNode::Element(elem),
34864 ));
34865 child_idx += 1;
34866 }
34867 #[cfg(not(feature = "extra-children"))]
34868 _ => {}
34869 }
34870 }
34871 Event::End(_) => break,
34872 Event::Eof => break,
34873 _ => {}
34874 }
34875 buf.clear();
34876 }
34877 }
34878
34879 Ok(Self {
34880 #[cfg(feature = "sml-styling")]
34881 pattern_fill: f_pattern_fill,
34882 #[cfg(feature = "sml-styling")]
34883 gradient_fill: f_gradient_fill,
34884 #[cfg(feature = "extra-children")]
34885 extra_children,
34886 })
34887 }
34888}
34889
34890impl FromXml for PatternFill {
34891 fn from_xml<R: BufRead>(
34892 reader: &mut Reader<R>,
34893 start_tag: &BytesStart,
34894 is_empty: bool,
34895 ) -> Result<Self, ParseError> {
34896 let mut f_pattern_type = None;
34897 let mut f_fg_color = None;
34898 let mut f_bg_color = None;
34899 #[cfg(feature = "extra-attrs")]
34900 let mut extra_attrs = std::collections::HashMap::new();
34901 #[cfg(feature = "extra-children")]
34902 let mut extra_children = Vec::new();
34903 #[cfg(feature = "extra-children")]
34904 let mut child_idx: usize = 0;
34905
34906 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
34908 let val = String::from_utf8_lossy(&attr.value);
34909 match attr.key.local_name().as_ref() {
34910 b"patternType" => {
34911 f_pattern_type = val.parse().ok();
34912 }
34913 #[cfg(feature = "extra-attrs")]
34914 unknown => {
34915 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
34916 extra_attrs.insert(key, val.into_owned());
34917 }
34918 #[cfg(not(feature = "extra-attrs"))]
34919 _ => {}
34920 }
34921 }
34922
34923 if !is_empty {
34925 let mut buf = Vec::new();
34926 loop {
34927 match reader.read_event_into(&mut buf)? {
34928 Event::Start(e) => {
34929 match e.local_name().as_ref() {
34930 b"fgColor" => {
34931 f_fg_color = Some(Box::new(Color::from_xml(reader, &e, false)?));
34932 #[cfg(feature = "extra-children")]
34933 {
34934 child_idx += 1;
34935 }
34936 }
34937 b"bgColor" => {
34938 f_bg_color = Some(Box::new(Color::from_xml(reader, &e, false)?));
34939 #[cfg(feature = "extra-children")]
34940 {
34941 child_idx += 1;
34942 }
34943 }
34944 #[cfg(feature = "extra-children")]
34945 _ => {
34946 let elem = RawXmlElement::from_reader(reader, &e)?;
34948 extra_children.push(PositionedNode::new(
34949 child_idx,
34950 RawXmlNode::Element(elem),
34951 ));
34952 child_idx += 1;
34953 }
34954 #[cfg(not(feature = "extra-children"))]
34955 _ => {
34956 skip_element(reader)?;
34958 }
34959 }
34960 }
34961 Event::Empty(e) => {
34962 match e.local_name().as_ref() {
34963 b"fgColor" => {
34964 f_fg_color = Some(Box::new(Color::from_xml(reader, &e, true)?));
34965 #[cfg(feature = "extra-children")]
34966 {
34967 child_idx += 1;
34968 }
34969 }
34970 b"bgColor" => {
34971 f_bg_color = Some(Box::new(Color::from_xml(reader, &e, true)?));
34972 #[cfg(feature = "extra-children")]
34973 {
34974 child_idx += 1;
34975 }
34976 }
34977 #[cfg(feature = "extra-children")]
34978 _ => {
34979 let elem = RawXmlElement::from_empty(&e);
34981 extra_children.push(PositionedNode::new(
34982 child_idx,
34983 RawXmlNode::Element(elem),
34984 ));
34985 child_idx += 1;
34986 }
34987 #[cfg(not(feature = "extra-children"))]
34988 _ => {}
34989 }
34990 }
34991 Event::End(_) => break,
34992 Event::Eof => break,
34993 _ => {}
34994 }
34995 buf.clear();
34996 }
34997 }
34998
34999 Ok(Self {
35000 pattern_type: f_pattern_type,
35001 fg_color: f_fg_color,
35002 bg_color: f_bg_color,
35003 #[cfg(feature = "extra-attrs")]
35004 extra_attrs,
35005 #[cfg(feature = "extra-children")]
35006 extra_children,
35007 })
35008 }
35009}
35010
35011impl FromXml for Color {
35012 fn from_xml<R: BufRead>(
35013 reader: &mut Reader<R>,
35014 start_tag: &BytesStart,
35015 is_empty: bool,
35016 ) -> Result<Self, ParseError> {
35017 #[cfg(feature = "sml-styling")]
35018 let mut f_auto = None;
35019 #[cfg(feature = "sml-styling")]
35020 let mut f_indexed = None;
35021 #[cfg(feature = "sml-styling")]
35022 let mut f_rgb = None;
35023 #[cfg(feature = "sml-styling")]
35024 let mut f_theme = None;
35025 #[cfg(feature = "sml-styling")]
35026 let mut f_tint = None;
35027 #[cfg(feature = "extra-attrs")]
35028 let mut extra_attrs = std::collections::HashMap::new();
35029
35030 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
35032 let val = String::from_utf8_lossy(&attr.value);
35033 match attr.key.local_name().as_ref() {
35034 #[cfg(feature = "sml-styling")]
35035 b"auto" => {
35036 f_auto = Some(val == "true" || val == "1");
35037 }
35038 #[cfg(feature = "sml-styling")]
35039 b"indexed" => {
35040 f_indexed = val.parse().ok();
35041 }
35042 #[cfg(feature = "sml-styling")]
35043 b"rgb" => {
35044 f_rgb = decode_hex(&val);
35045 }
35046 #[cfg(feature = "sml-styling")]
35047 b"theme" => {
35048 f_theme = val.parse().ok();
35049 }
35050 #[cfg(feature = "sml-styling")]
35051 b"tint" => {
35052 f_tint = val.parse().ok();
35053 }
35054 #[cfg(feature = "extra-attrs")]
35055 unknown => {
35056 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
35057 extra_attrs.insert(key, val.into_owned());
35058 }
35059 #[cfg(not(feature = "extra-attrs"))]
35060 _ => {}
35061 }
35062 }
35063
35064 if !is_empty {
35065 let mut buf = Vec::new();
35066 loop {
35067 match reader.read_event_into(&mut buf)? {
35068 Event::End(_) => break,
35069 Event::Eof => break,
35070 _ => {}
35071 }
35072 buf.clear();
35073 }
35074 }
35075
35076 Ok(Self {
35077 #[cfg(feature = "sml-styling")]
35078 auto: f_auto,
35079 #[cfg(feature = "sml-styling")]
35080 indexed: f_indexed,
35081 #[cfg(feature = "sml-styling")]
35082 rgb: f_rgb,
35083 #[cfg(feature = "sml-styling")]
35084 theme: f_theme,
35085 #[cfg(feature = "sml-styling")]
35086 tint: f_tint,
35087 #[cfg(feature = "extra-attrs")]
35088 extra_attrs,
35089 })
35090 }
35091}
35092
35093impl FromXml for GradientFill {
35094 fn from_xml<R: BufRead>(
35095 reader: &mut Reader<R>,
35096 start_tag: &BytesStart,
35097 is_empty: bool,
35098 ) -> Result<Self, ParseError> {
35099 let mut f_type = None;
35100 let mut f_degree = None;
35101 let mut f_left = None;
35102 let mut f_right = None;
35103 let mut f_top = None;
35104 let mut f_bottom = None;
35105 let mut f_stop = Vec::new();
35106 #[cfg(feature = "extra-attrs")]
35107 let mut extra_attrs = std::collections::HashMap::new();
35108 #[cfg(feature = "extra-children")]
35109 let mut extra_children = Vec::new();
35110 #[cfg(feature = "extra-children")]
35111 let mut child_idx: usize = 0;
35112
35113 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
35115 let val = String::from_utf8_lossy(&attr.value);
35116 match attr.key.local_name().as_ref() {
35117 b"type" => {
35118 f_type = val.parse().ok();
35119 }
35120 b"degree" => {
35121 f_degree = val.parse().ok();
35122 }
35123 b"left" => {
35124 f_left = val.parse().ok();
35125 }
35126 b"right" => {
35127 f_right = val.parse().ok();
35128 }
35129 b"top" => {
35130 f_top = val.parse().ok();
35131 }
35132 b"bottom" => {
35133 f_bottom = val.parse().ok();
35134 }
35135 #[cfg(feature = "extra-attrs")]
35136 unknown => {
35137 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
35138 extra_attrs.insert(key, val.into_owned());
35139 }
35140 #[cfg(not(feature = "extra-attrs"))]
35141 _ => {}
35142 }
35143 }
35144
35145 if !is_empty {
35147 let mut buf = Vec::new();
35148 loop {
35149 match reader.read_event_into(&mut buf)? {
35150 Event::Start(e) => {
35151 match e.local_name().as_ref() {
35152 b"stop" => {
35153 f_stop.push(GradientStop::from_xml(reader, &e, false)?);
35154 #[cfg(feature = "extra-children")]
35155 {
35156 child_idx += 1;
35157 }
35158 }
35159 #[cfg(feature = "extra-children")]
35160 _ => {
35161 let elem = RawXmlElement::from_reader(reader, &e)?;
35163 extra_children.push(PositionedNode::new(
35164 child_idx,
35165 RawXmlNode::Element(elem),
35166 ));
35167 child_idx += 1;
35168 }
35169 #[cfg(not(feature = "extra-children"))]
35170 _ => {
35171 skip_element(reader)?;
35173 }
35174 }
35175 }
35176 Event::Empty(e) => {
35177 match e.local_name().as_ref() {
35178 b"stop" => {
35179 f_stop.push(GradientStop::from_xml(reader, &e, true)?);
35180 #[cfg(feature = "extra-children")]
35181 {
35182 child_idx += 1;
35183 }
35184 }
35185 #[cfg(feature = "extra-children")]
35186 _ => {
35187 let elem = RawXmlElement::from_empty(&e);
35189 extra_children.push(PositionedNode::new(
35190 child_idx,
35191 RawXmlNode::Element(elem),
35192 ));
35193 child_idx += 1;
35194 }
35195 #[cfg(not(feature = "extra-children"))]
35196 _ => {}
35197 }
35198 }
35199 Event::End(_) => break,
35200 Event::Eof => break,
35201 _ => {}
35202 }
35203 buf.clear();
35204 }
35205 }
35206
35207 Ok(Self {
35208 r#type: f_type,
35209 degree: f_degree,
35210 left: f_left,
35211 right: f_right,
35212 top: f_top,
35213 bottom: f_bottom,
35214 stop: f_stop,
35215 #[cfg(feature = "extra-attrs")]
35216 extra_attrs,
35217 #[cfg(feature = "extra-children")]
35218 extra_children,
35219 })
35220 }
35221}
35222
35223impl FromXml for GradientStop {
35224 fn from_xml<R: BufRead>(
35225 reader: &mut Reader<R>,
35226 start_tag: &BytesStart,
35227 is_empty: bool,
35228 ) -> Result<Self, ParseError> {
35229 let mut f_position: Option<f64> = None;
35230 let mut f_color: Option<Box<Color>> = None;
35231 #[cfg(feature = "extra-attrs")]
35232 let mut extra_attrs = std::collections::HashMap::new();
35233 #[cfg(feature = "extra-children")]
35234 let mut extra_children = Vec::new();
35235 #[cfg(feature = "extra-children")]
35236 let mut child_idx: usize = 0;
35237
35238 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
35240 let val = String::from_utf8_lossy(&attr.value);
35241 match attr.key.local_name().as_ref() {
35242 b"position" => {
35243 f_position = val.parse().ok();
35244 }
35245 #[cfg(feature = "extra-attrs")]
35246 unknown => {
35247 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
35248 extra_attrs.insert(key, val.into_owned());
35249 }
35250 #[cfg(not(feature = "extra-attrs"))]
35251 _ => {}
35252 }
35253 }
35254
35255 if !is_empty {
35257 let mut buf = Vec::new();
35258 loop {
35259 match reader.read_event_into(&mut buf)? {
35260 Event::Start(e) => {
35261 match e.local_name().as_ref() {
35262 b"color" => {
35263 f_color = Some(Box::new(Color::from_xml(reader, &e, false)?));
35264 #[cfg(feature = "extra-children")]
35265 {
35266 child_idx += 1;
35267 }
35268 }
35269 #[cfg(feature = "extra-children")]
35270 _ => {
35271 let elem = RawXmlElement::from_reader(reader, &e)?;
35273 extra_children.push(PositionedNode::new(
35274 child_idx,
35275 RawXmlNode::Element(elem),
35276 ));
35277 child_idx += 1;
35278 }
35279 #[cfg(not(feature = "extra-children"))]
35280 _ => {
35281 skip_element(reader)?;
35283 }
35284 }
35285 }
35286 Event::Empty(e) => {
35287 match e.local_name().as_ref() {
35288 b"color" => {
35289 f_color = Some(Box::new(Color::from_xml(reader, &e, true)?));
35290 #[cfg(feature = "extra-children")]
35291 {
35292 child_idx += 1;
35293 }
35294 }
35295 #[cfg(feature = "extra-children")]
35296 _ => {
35297 let elem = RawXmlElement::from_empty(&e);
35299 extra_children.push(PositionedNode::new(
35300 child_idx,
35301 RawXmlNode::Element(elem),
35302 ));
35303 child_idx += 1;
35304 }
35305 #[cfg(not(feature = "extra-children"))]
35306 _ => {}
35307 }
35308 }
35309 Event::End(_) => break,
35310 Event::Eof => break,
35311 _ => {}
35312 }
35313 buf.clear();
35314 }
35315 }
35316
35317 Ok(Self {
35318 position: f_position
35319 .ok_or_else(|| ParseError::MissingAttribute("position".to_string()))?,
35320 color: f_color.ok_or_else(|| ParseError::MissingAttribute("color".to_string()))?,
35321 #[cfg(feature = "extra-attrs")]
35322 extra_attrs,
35323 #[cfg(feature = "extra-children")]
35324 extra_children,
35325 })
35326 }
35327}
35328
35329impl FromXml for NumberFormats {
35330 fn from_xml<R: BufRead>(
35331 reader: &mut Reader<R>,
35332 start_tag: &BytesStart,
35333 is_empty: bool,
35334 ) -> Result<Self, ParseError> {
35335 let mut f_count = None;
35336 let mut f_num_fmt = Vec::new();
35337 #[cfg(feature = "extra-attrs")]
35338 let mut extra_attrs = std::collections::HashMap::new();
35339 #[cfg(feature = "extra-children")]
35340 let mut extra_children = Vec::new();
35341 #[cfg(feature = "extra-children")]
35342 let mut child_idx: usize = 0;
35343
35344 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
35346 let val = String::from_utf8_lossy(&attr.value);
35347 match attr.key.local_name().as_ref() {
35348 b"count" => {
35349 f_count = val.parse().ok();
35350 }
35351 #[cfg(feature = "extra-attrs")]
35352 unknown => {
35353 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
35354 extra_attrs.insert(key, val.into_owned());
35355 }
35356 #[cfg(not(feature = "extra-attrs"))]
35357 _ => {}
35358 }
35359 }
35360
35361 if !is_empty {
35363 let mut buf = Vec::new();
35364 loop {
35365 match reader.read_event_into(&mut buf)? {
35366 Event::Start(e) => {
35367 match e.local_name().as_ref() {
35368 b"numFmt" => {
35369 f_num_fmt.push(NumberFormat::from_xml(reader, &e, false)?);
35370 #[cfg(feature = "extra-children")]
35371 {
35372 child_idx += 1;
35373 }
35374 }
35375 #[cfg(feature = "extra-children")]
35376 _ => {
35377 let elem = RawXmlElement::from_reader(reader, &e)?;
35379 extra_children.push(PositionedNode::new(
35380 child_idx,
35381 RawXmlNode::Element(elem),
35382 ));
35383 child_idx += 1;
35384 }
35385 #[cfg(not(feature = "extra-children"))]
35386 _ => {
35387 skip_element(reader)?;
35389 }
35390 }
35391 }
35392 Event::Empty(e) => {
35393 match e.local_name().as_ref() {
35394 b"numFmt" => {
35395 f_num_fmt.push(NumberFormat::from_xml(reader, &e, true)?);
35396 #[cfg(feature = "extra-children")]
35397 {
35398 child_idx += 1;
35399 }
35400 }
35401 #[cfg(feature = "extra-children")]
35402 _ => {
35403 let elem = RawXmlElement::from_empty(&e);
35405 extra_children.push(PositionedNode::new(
35406 child_idx,
35407 RawXmlNode::Element(elem),
35408 ));
35409 child_idx += 1;
35410 }
35411 #[cfg(not(feature = "extra-children"))]
35412 _ => {}
35413 }
35414 }
35415 Event::End(_) => break,
35416 Event::Eof => break,
35417 _ => {}
35418 }
35419 buf.clear();
35420 }
35421 }
35422
35423 Ok(Self {
35424 count: f_count,
35425 num_fmt: f_num_fmt,
35426 #[cfg(feature = "extra-attrs")]
35427 extra_attrs,
35428 #[cfg(feature = "extra-children")]
35429 extra_children,
35430 })
35431 }
35432}
35433
35434impl FromXml for NumberFormat {
35435 fn from_xml<R: BufRead>(
35436 reader: &mut Reader<R>,
35437 start_tag: &BytesStart,
35438 is_empty: bool,
35439 ) -> Result<Self, ParseError> {
35440 #[cfg(feature = "sml-styling")]
35441 let mut f_number_format_id: Option<STNumFmtId> = None;
35442 #[cfg(feature = "sml-styling")]
35443 let mut f_format_code: Option<XmlString> = None;
35444 #[cfg(feature = "extra-attrs")]
35445 let mut extra_attrs = std::collections::HashMap::new();
35446
35447 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
35449 let val = String::from_utf8_lossy(&attr.value);
35450 match attr.key.local_name().as_ref() {
35451 #[cfg(feature = "sml-styling")]
35452 b"numFmtId" => {
35453 f_number_format_id = val.parse().ok();
35454 }
35455 #[cfg(feature = "sml-styling")]
35456 b"formatCode" => {
35457 f_format_code = Some(val.into_owned());
35458 }
35459 #[cfg(feature = "extra-attrs")]
35460 unknown => {
35461 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
35462 extra_attrs.insert(key, val.into_owned());
35463 }
35464 #[cfg(not(feature = "extra-attrs"))]
35465 _ => {}
35466 }
35467 }
35468
35469 if !is_empty {
35470 let mut buf = Vec::new();
35471 loop {
35472 match reader.read_event_into(&mut buf)? {
35473 Event::End(_) => break,
35474 Event::Eof => break,
35475 _ => {}
35476 }
35477 buf.clear();
35478 }
35479 }
35480
35481 Ok(Self {
35482 #[cfg(feature = "sml-styling")]
35483 number_format_id: f_number_format_id
35484 .ok_or_else(|| ParseError::MissingAttribute("numFmtId".to_string()))?,
35485 #[cfg(feature = "sml-styling")]
35486 format_code: f_format_code
35487 .ok_or_else(|| ParseError::MissingAttribute("formatCode".to_string()))?,
35488 #[cfg(feature = "extra-attrs")]
35489 extra_attrs,
35490 })
35491 }
35492}
35493
35494impl FromXml for CellStyleFormats {
35495 fn from_xml<R: BufRead>(
35496 reader: &mut Reader<R>,
35497 start_tag: &BytesStart,
35498 is_empty: bool,
35499 ) -> Result<Self, ParseError> {
35500 let mut f_count = None;
35501 let mut f_xf = Vec::new();
35502 #[cfg(feature = "extra-attrs")]
35503 let mut extra_attrs = std::collections::HashMap::new();
35504 #[cfg(feature = "extra-children")]
35505 let mut extra_children = Vec::new();
35506 #[cfg(feature = "extra-children")]
35507 let mut child_idx: usize = 0;
35508
35509 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
35511 let val = String::from_utf8_lossy(&attr.value);
35512 match attr.key.local_name().as_ref() {
35513 b"count" => {
35514 f_count = val.parse().ok();
35515 }
35516 #[cfg(feature = "extra-attrs")]
35517 unknown => {
35518 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
35519 extra_attrs.insert(key, val.into_owned());
35520 }
35521 #[cfg(not(feature = "extra-attrs"))]
35522 _ => {}
35523 }
35524 }
35525
35526 if !is_empty {
35528 let mut buf = Vec::new();
35529 loop {
35530 match reader.read_event_into(&mut buf)? {
35531 Event::Start(e) => {
35532 match e.local_name().as_ref() {
35533 b"xf" => {
35534 f_xf.push(Format::from_xml(reader, &e, false)?);
35535 #[cfg(feature = "extra-children")]
35536 {
35537 child_idx += 1;
35538 }
35539 }
35540 #[cfg(feature = "extra-children")]
35541 _ => {
35542 let elem = RawXmlElement::from_reader(reader, &e)?;
35544 extra_children.push(PositionedNode::new(
35545 child_idx,
35546 RawXmlNode::Element(elem),
35547 ));
35548 child_idx += 1;
35549 }
35550 #[cfg(not(feature = "extra-children"))]
35551 _ => {
35552 skip_element(reader)?;
35554 }
35555 }
35556 }
35557 Event::Empty(e) => {
35558 match e.local_name().as_ref() {
35559 b"xf" => {
35560 f_xf.push(Format::from_xml(reader, &e, true)?);
35561 #[cfg(feature = "extra-children")]
35562 {
35563 child_idx += 1;
35564 }
35565 }
35566 #[cfg(feature = "extra-children")]
35567 _ => {
35568 let elem = RawXmlElement::from_empty(&e);
35570 extra_children.push(PositionedNode::new(
35571 child_idx,
35572 RawXmlNode::Element(elem),
35573 ));
35574 child_idx += 1;
35575 }
35576 #[cfg(not(feature = "extra-children"))]
35577 _ => {}
35578 }
35579 }
35580 Event::End(_) => break,
35581 Event::Eof => break,
35582 _ => {}
35583 }
35584 buf.clear();
35585 }
35586 }
35587
35588 Ok(Self {
35589 count: f_count,
35590 xf: f_xf,
35591 #[cfg(feature = "extra-attrs")]
35592 extra_attrs,
35593 #[cfg(feature = "extra-children")]
35594 extra_children,
35595 })
35596 }
35597}
35598
35599impl FromXml for CellFormats {
35600 fn from_xml<R: BufRead>(
35601 reader: &mut Reader<R>,
35602 start_tag: &BytesStart,
35603 is_empty: bool,
35604 ) -> Result<Self, ParseError> {
35605 let mut f_count = None;
35606 let mut f_xf = Vec::new();
35607 #[cfg(feature = "extra-attrs")]
35608 let mut extra_attrs = std::collections::HashMap::new();
35609 #[cfg(feature = "extra-children")]
35610 let mut extra_children = Vec::new();
35611 #[cfg(feature = "extra-children")]
35612 let mut child_idx: usize = 0;
35613
35614 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
35616 let val = String::from_utf8_lossy(&attr.value);
35617 match attr.key.local_name().as_ref() {
35618 b"count" => {
35619 f_count = val.parse().ok();
35620 }
35621 #[cfg(feature = "extra-attrs")]
35622 unknown => {
35623 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
35624 extra_attrs.insert(key, val.into_owned());
35625 }
35626 #[cfg(not(feature = "extra-attrs"))]
35627 _ => {}
35628 }
35629 }
35630
35631 if !is_empty {
35633 let mut buf = Vec::new();
35634 loop {
35635 match reader.read_event_into(&mut buf)? {
35636 Event::Start(e) => {
35637 match e.local_name().as_ref() {
35638 b"xf" => {
35639 f_xf.push(Format::from_xml(reader, &e, false)?);
35640 #[cfg(feature = "extra-children")]
35641 {
35642 child_idx += 1;
35643 }
35644 }
35645 #[cfg(feature = "extra-children")]
35646 _ => {
35647 let elem = RawXmlElement::from_reader(reader, &e)?;
35649 extra_children.push(PositionedNode::new(
35650 child_idx,
35651 RawXmlNode::Element(elem),
35652 ));
35653 child_idx += 1;
35654 }
35655 #[cfg(not(feature = "extra-children"))]
35656 _ => {
35657 skip_element(reader)?;
35659 }
35660 }
35661 }
35662 Event::Empty(e) => {
35663 match e.local_name().as_ref() {
35664 b"xf" => {
35665 f_xf.push(Format::from_xml(reader, &e, true)?);
35666 #[cfg(feature = "extra-children")]
35667 {
35668 child_idx += 1;
35669 }
35670 }
35671 #[cfg(feature = "extra-children")]
35672 _ => {
35673 let elem = RawXmlElement::from_empty(&e);
35675 extra_children.push(PositionedNode::new(
35676 child_idx,
35677 RawXmlNode::Element(elem),
35678 ));
35679 child_idx += 1;
35680 }
35681 #[cfg(not(feature = "extra-children"))]
35682 _ => {}
35683 }
35684 }
35685 Event::End(_) => break,
35686 Event::Eof => break,
35687 _ => {}
35688 }
35689 buf.clear();
35690 }
35691 }
35692
35693 Ok(Self {
35694 count: f_count,
35695 xf: f_xf,
35696 #[cfg(feature = "extra-attrs")]
35697 extra_attrs,
35698 #[cfg(feature = "extra-children")]
35699 extra_children,
35700 })
35701 }
35702}
35703
35704impl FromXml for Format {
35705 fn from_xml<R: BufRead>(
35706 reader: &mut Reader<R>,
35707 start_tag: &BytesStart,
35708 is_empty: bool,
35709 ) -> Result<Self, ParseError> {
35710 #[cfg(feature = "sml-styling")]
35711 let mut f_number_format_id = None;
35712 #[cfg(feature = "sml-styling")]
35713 let mut f_font_id = None;
35714 #[cfg(feature = "sml-styling")]
35715 let mut f_fill_id = None;
35716 #[cfg(feature = "sml-styling")]
35717 let mut f_border_id = None;
35718 #[cfg(feature = "sml-styling")]
35719 let mut f_format_id = None;
35720 #[cfg(feature = "sml-styling")]
35721 let mut f_quote_prefix = None;
35722 #[cfg(feature = "sml-pivot")]
35723 let mut f_pivot_button = None;
35724 #[cfg(feature = "sml-styling")]
35725 let mut f_apply_number_format = None;
35726 #[cfg(feature = "sml-styling")]
35727 let mut f_apply_font = None;
35728 #[cfg(feature = "sml-styling")]
35729 let mut f_apply_fill = None;
35730 #[cfg(feature = "sml-styling")]
35731 let mut f_apply_border = None;
35732 #[cfg(feature = "sml-styling")]
35733 let mut f_apply_alignment = None;
35734 #[cfg(feature = "sml-styling")]
35735 let mut f_apply_protection = None;
35736 #[cfg(feature = "sml-styling")]
35737 let mut f_alignment = None;
35738 #[cfg(feature = "sml-protection")]
35739 let mut f_protection = None;
35740 #[cfg(feature = "sml-extensions")]
35741 let mut f_extension_list = None;
35742 #[cfg(feature = "extra-attrs")]
35743 let mut extra_attrs = std::collections::HashMap::new();
35744 #[cfg(feature = "extra-children")]
35745 let mut extra_children = Vec::new();
35746 #[cfg(feature = "extra-children")]
35747 let mut child_idx: usize = 0;
35748
35749 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
35751 let val = String::from_utf8_lossy(&attr.value);
35752 match attr.key.local_name().as_ref() {
35753 #[cfg(feature = "sml-styling")]
35754 b"numFmtId" => {
35755 f_number_format_id = val.parse().ok();
35756 }
35757 #[cfg(feature = "sml-styling")]
35758 b"fontId" => {
35759 f_font_id = val.parse().ok();
35760 }
35761 #[cfg(feature = "sml-styling")]
35762 b"fillId" => {
35763 f_fill_id = val.parse().ok();
35764 }
35765 #[cfg(feature = "sml-styling")]
35766 b"borderId" => {
35767 f_border_id = val.parse().ok();
35768 }
35769 #[cfg(feature = "sml-styling")]
35770 b"xfId" => {
35771 f_format_id = val.parse().ok();
35772 }
35773 #[cfg(feature = "sml-styling")]
35774 b"quotePrefix" => {
35775 f_quote_prefix = Some(val == "true" || val == "1");
35776 }
35777 #[cfg(feature = "sml-pivot")]
35778 b"pivotButton" => {
35779 f_pivot_button = Some(val == "true" || val == "1");
35780 }
35781 #[cfg(feature = "sml-styling")]
35782 b"applyNumberFormat" => {
35783 f_apply_number_format = Some(val == "true" || val == "1");
35784 }
35785 #[cfg(feature = "sml-styling")]
35786 b"applyFont" => {
35787 f_apply_font = Some(val == "true" || val == "1");
35788 }
35789 #[cfg(feature = "sml-styling")]
35790 b"applyFill" => {
35791 f_apply_fill = Some(val == "true" || val == "1");
35792 }
35793 #[cfg(feature = "sml-styling")]
35794 b"applyBorder" => {
35795 f_apply_border = Some(val == "true" || val == "1");
35796 }
35797 #[cfg(feature = "sml-styling")]
35798 b"applyAlignment" => {
35799 f_apply_alignment = Some(val == "true" || val == "1");
35800 }
35801 #[cfg(feature = "sml-styling")]
35802 b"applyProtection" => {
35803 f_apply_protection = Some(val == "true" || val == "1");
35804 }
35805 #[cfg(feature = "extra-attrs")]
35806 unknown => {
35807 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
35808 extra_attrs.insert(key, val.into_owned());
35809 }
35810 #[cfg(not(feature = "extra-attrs"))]
35811 _ => {}
35812 }
35813 }
35814
35815 if !is_empty {
35817 let mut buf = Vec::new();
35818 loop {
35819 match reader.read_event_into(&mut buf)? {
35820 Event::Start(e) => {
35821 match e.local_name().as_ref() {
35822 #[cfg(feature = "sml-styling")]
35823 b"alignment" => {
35824 f_alignment =
35825 Some(Box::new(CellAlignment::from_xml(reader, &e, false)?));
35826 #[cfg(feature = "extra-children")]
35827 {
35828 child_idx += 1;
35829 }
35830 }
35831 #[cfg(feature = "sml-protection")]
35832 b"protection" => {
35833 f_protection =
35834 Some(Box::new(CellProtection::from_xml(reader, &e, false)?));
35835 #[cfg(feature = "extra-children")]
35836 {
35837 child_idx += 1;
35838 }
35839 }
35840 #[cfg(feature = "sml-extensions")]
35841 b"extLst" => {
35842 f_extension_list =
35843 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
35844 #[cfg(feature = "extra-children")]
35845 {
35846 child_idx += 1;
35847 }
35848 }
35849 #[cfg(feature = "extra-children")]
35850 _ => {
35851 let elem = RawXmlElement::from_reader(reader, &e)?;
35853 extra_children.push(PositionedNode::new(
35854 child_idx,
35855 RawXmlNode::Element(elem),
35856 ));
35857 child_idx += 1;
35858 }
35859 #[cfg(not(feature = "extra-children"))]
35860 _ => {
35861 skip_element(reader)?;
35863 }
35864 }
35865 }
35866 Event::Empty(e) => {
35867 match e.local_name().as_ref() {
35868 #[cfg(feature = "sml-styling")]
35869 b"alignment" => {
35870 f_alignment =
35871 Some(Box::new(CellAlignment::from_xml(reader, &e, true)?));
35872 #[cfg(feature = "extra-children")]
35873 {
35874 child_idx += 1;
35875 }
35876 }
35877 #[cfg(feature = "sml-protection")]
35878 b"protection" => {
35879 f_protection =
35880 Some(Box::new(CellProtection::from_xml(reader, &e, true)?));
35881 #[cfg(feature = "extra-children")]
35882 {
35883 child_idx += 1;
35884 }
35885 }
35886 #[cfg(feature = "sml-extensions")]
35887 b"extLst" => {
35888 f_extension_list =
35889 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
35890 #[cfg(feature = "extra-children")]
35891 {
35892 child_idx += 1;
35893 }
35894 }
35895 #[cfg(feature = "extra-children")]
35896 _ => {
35897 let elem = RawXmlElement::from_empty(&e);
35899 extra_children.push(PositionedNode::new(
35900 child_idx,
35901 RawXmlNode::Element(elem),
35902 ));
35903 child_idx += 1;
35904 }
35905 #[cfg(not(feature = "extra-children"))]
35906 _ => {}
35907 }
35908 }
35909 Event::End(_) => break,
35910 Event::Eof => break,
35911 _ => {}
35912 }
35913 buf.clear();
35914 }
35915 }
35916
35917 Ok(Self {
35918 #[cfg(feature = "sml-styling")]
35919 number_format_id: f_number_format_id,
35920 #[cfg(feature = "sml-styling")]
35921 font_id: f_font_id,
35922 #[cfg(feature = "sml-styling")]
35923 fill_id: f_fill_id,
35924 #[cfg(feature = "sml-styling")]
35925 border_id: f_border_id,
35926 #[cfg(feature = "sml-styling")]
35927 format_id: f_format_id,
35928 #[cfg(feature = "sml-styling")]
35929 quote_prefix: f_quote_prefix,
35930 #[cfg(feature = "sml-pivot")]
35931 pivot_button: f_pivot_button,
35932 #[cfg(feature = "sml-styling")]
35933 apply_number_format: f_apply_number_format,
35934 #[cfg(feature = "sml-styling")]
35935 apply_font: f_apply_font,
35936 #[cfg(feature = "sml-styling")]
35937 apply_fill: f_apply_fill,
35938 #[cfg(feature = "sml-styling")]
35939 apply_border: f_apply_border,
35940 #[cfg(feature = "sml-styling")]
35941 apply_alignment: f_apply_alignment,
35942 #[cfg(feature = "sml-styling")]
35943 apply_protection: f_apply_protection,
35944 #[cfg(feature = "sml-styling")]
35945 alignment: f_alignment,
35946 #[cfg(feature = "sml-protection")]
35947 protection: f_protection,
35948 #[cfg(feature = "sml-extensions")]
35949 extension_list: f_extension_list,
35950 #[cfg(feature = "extra-attrs")]
35951 extra_attrs,
35952 #[cfg(feature = "extra-children")]
35953 extra_children,
35954 })
35955 }
35956}
35957
35958impl FromXml for CellStyles {
35959 fn from_xml<R: BufRead>(
35960 reader: &mut Reader<R>,
35961 start_tag: &BytesStart,
35962 is_empty: bool,
35963 ) -> Result<Self, ParseError> {
35964 let mut f_count = None;
35965 let mut f_cell_style = Vec::new();
35966 #[cfg(feature = "extra-attrs")]
35967 let mut extra_attrs = std::collections::HashMap::new();
35968 #[cfg(feature = "extra-children")]
35969 let mut extra_children = Vec::new();
35970 #[cfg(feature = "extra-children")]
35971 let mut child_idx: usize = 0;
35972
35973 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
35975 let val = String::from_utf8_lossy(&attr.value);
35976 match attr.key.local_name().as_ref() {
35977 b"count" => {
35978 f_count = val.parse().ok();
35979 }
35980 #[cfg(feature = "extra-attrs")]
35981 unknown => {
35982 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
35983 extra_attrs.insert(key, val.into_owned());
35984 }
35985 #[cfg(not(feature = "extra-attrs"))]
35986 _ => {}
35987 }
35988 }
35989
35990 if !is_empty {
35992 let mut buf = Vec::new();
35993 loop {
35994 match reader.read_event_into(&mut buf)? {
35995 Event::Start(e) => {
35996 match e.local_name().as_ref() {
35997 b"cellStyle" => {
35998 f_cell_style.push(CellStyle::from_xml(reader, &e, false)?);
35999 #[cfg(feature = "extra-children")]
36000 {
36001 child_idx += 1;
36002 }
36003 }
36004 #[cfg(feature = "extra-children")]
36005 _ => {
36006 let elem = RawXmlElement::from_reader(reader, &e)?;
36008 extra_children.push(PositionedNode::new(
36009 child_idx,
36010 RawXmlNode::Element(elem),
36011 ));
36012 child_idx += 1;
36013 }
36014 #[cfg(not(feature = "extra-children"))]
36015 _ => {
36016 skip_element(reader)?;
36018 }
36019 }
36020 }
36021 Event::Empty(e) => {
36022 match e.local_name().as_ref() {
36023 b"cellStyle" => {
36024 f_cell_style.push(CellStyle::from_xml(reader, &e, true)?);
36025 #[cfg(feature = "extra-children")]
36026 {
36027 child_idx += 1;
36028 }
36029 }
36030 #[cfg(feature = "extra-children")]
36031 _ => {
36032 let elem = RawXmlElement::from_empty(&e);
36034 extra_children.push(PositionedNode::new(
36035 child_idx,
36036 RawXmlNode::Element(elem),
36037 ));
36038 child_idx += 1;
36039 }
36040 #[cfg(not(feature = "extra-children"))]
36041 _ => {}
36042 }
36043 }
36044 Event::End(_) => break,
36045 Event::Eof => break,
36046 _ => {}
36047 }
36048 buf.clear();
36049 }
36050 }
36051
36052 Ok(Self {
36053 count: f_count,
36054 cell_style: f_cell_style,
36055 #[cfg(feature = "extra-attrs")]
36056 extra_attrs,
36057 #[cfg(feature = "extra-children")]
36058 extra_children,
36059 })
36060 }
36061}
36062
36063impl FromXml for CellStyle {
36064 fn from_xml<R: BufRead>(
36065 reader: &mut Reader<R>,
36066 start_tag: &BytesStart,
36067 is_empty: bool,
36068 ) -> Result<Self, ParseError> {
36069 let mut f_name = None;
36070 let mut f_format_id: Option<STCellStyleXfId> = None;
36071 let mut f_builtin_id = None;
36072 let mut f_i_level = None;
36073 let mut f_hidden = None;
36074 let mut f_custom_builtin = None;
36075 let mut f_extension_list = None;
36076 #[cfg(feature = "extra-attrs")]
36077 let mut extra_attrs = std::collections::HashMap::new();
36078 #[cfg(feature = "extra-children")]
36079 let mut extra_children = Vec::new();
36080 #[cfg(feature = "extra-children")]
36081 let mut child_idx: usize = 0;
36082
36083 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
36085 let val = String::from_utf8_lossy(&attr.value);
36086 match attr.key.local_name().as_ref() {
36087 b"name" => {
36088 f_name = Some(val.into_owned());
36089 }
36090 b"xfId" => {
36091 f_format_id = val.parse().ok();
36092 }
36093 b"builtinId" => {
36094 f_builtin_id = val.parse().ok();
36095 }
36096 b"iLevel" => {
36097 f_i_level = val.parse().ok();
36098 }
36099 b"hidden" => {
36100 f_hidden = Some(val == "true" || val == "1");
36101 }
36102 b"customBuiltin" => {
36103 f_custom_builtin = Some(val == "true" || val == "1");
36104 }
36105 #[cfg(feature = "extra-attrs")]
36106 unknown => {
36107 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
36108 extra_attrs.insert(key, val.into_owned());
36109 }
36110 #[cfg(not(feature = "extra-attrs"))]
36111 _ => {}
36112 }
36113 }
36114
36115 if !is_empty {
36117 let mut buf = Vec::new();
36118 loop {
36119 match reader.read_event_into(&mut buf)? {
36120 Event::Start(e) => {
36121 match e.local_name().as_ref() {
36122 b"extLst" => {
36123 f_extension_list =
36124 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
36125 #[cfg(feature = "extra-children")]
36126 {
36127 child_idx += 1;
36128 }
36129 }
36130 #[cfg(feature = "extra-children")]
36131 _ => {
36132 let elem = RawXmlElement::from_reader(reader, &e)?;
36134 extra_children.push(PositionedNode::new(
36135 child_idx,
36136 RawXmlNode::Element(elem),
36137 ));
36138 child_idx += 1;
36139 }
36140 #[cfg(not(feature = "extra-children"))]
36141 _ => {
36142 skip_element(reader)?;
36144 }
36145 }
36146 }
36147 Event::Empty(e) => {
36148 match e.local_name().as_ref() {
36149 b"extLst" => {
36150 f_extension_list =
36151 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
36152 #[cfg(feature = "extra-children")]
36153 {
36154 child_idx += 1;
36155 }
36156 }
36157 #[cfg(feature = "extra-children")]
36158 _ => {
36159 let elem = RawXmlElement::from_empty(&e);
36161 extra_children.push(PositionedNode::new(
36162 child_idx,
36163 RawXmlNode::Element(elem),
36164 ));
36165 child_idx += 1;
36166 }
36167 #[cfg(not(feature = "extra-children"))]
36168 _ => {}
36169 }
36170 }
36171 Event::End(_) => break,
36172 Event::Eof => break,
36173 _ => {}
36174 }
36175 buf.clear();
36176 }
36177 }
36178
36179 Ok(Self {
36180 name: f_name,
36181 format_id: f_format_id
36182 .ok_or_else(|| ParseError::MissingAttribute("xfId".to_string()))?,
36183 builtin_id: f_builtin_id,
36184 i_level: f_i_level,
36185 hidden: f_hidden,
36186 custom_builtin: f_custom_builtin,
36187 extension_list: f_extension_list,
36188 #[cfg(feature = "extra-attrs")]
36189 extra_attrs,
36190 #[cfg(feature = "extra-children")]
36191 extra_children,
36192 })
36193 }
36194}
36195
36196impl FromXml for DifferentialFormats {
36197 fn from_xml<R: BufRead>(
36198 reader: &mut Reader<R>,
36199 start_tag: &BytesStart,
36200 is_empty: bool,
36201 ) -> Result<Self, ParseError> {
36202 let mut f_count = None;
36203 let mut f_dxf = Vec::new();
36204 #[cfg(feature = "extra-attrs")]
36205 let mut extra_attrs = std::collections::HashMap::new();
36206 #[cfg(feature = "extra-children")]
36207 let mut extra_children = Vec::new();
36208 #[cfg(feature = "extra-children")]
36209 let mut child_idx: usize = 0;
36210
36211 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
36213 let val = String::from_utf8_lossy(&attr.value);
36214 match attr.key.local_name().as_ref() {
36215 b"count" => {
36216 f_count = val.parse().ok();
36217 }
36218 #[cfg(feature = "extra-attrs")]
36219 unknown => {
36220 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
36221 extra_attrs.insert(key, val.into_owned());
36222 }
36223 #[cfg(not(feature = "extra-attrs"))]
36224 _ => {}
36225 }
36226 }
36227
36228 if !is_empty {
36230 let mut buf = Vec::new();
36231 loop {
36232 match reader.read_event_into(&mut buf)? {
36233 Event::Start(e) => {
36234 match e.local_name().as_ref() {
36235 b"dxf" => {
36236 f_dxf.push(DifferentialFormat::from_xml(reader, &e, false)?);
36237 #[cfg(feature = "extra-children")]
36238 {
36239 child_idx += 1;
36240 }
36241 }
36242 #[cfg(feature = "extra-children")]
36243 _ => {
36244 let elem = RawXmlElement::from_reader(reader, &e)?;
36246 extra_children.push(PositionedNode::new(
36247 child_idx,
36248 RawXmlNode::Element(elem),
36249 ));
36250 child_idx += 1;
36251 }
36252 #[cfg(not(feature = "extra-children"))]
36253 _ => {
36254 skip_element(reader)?;
36256 }
36257 }
36258 }
36259 Event::Empty(e) => {
36260 match e.local_name().as_ref() {
36261 b"dxf" => {
36262 f_dxf.push(DifferentialFormat::from_xml(reader, &e, true)?);
36263 #[cfg(feature = "extra-children")]
36264 {
36265 child_idx += 1;
36266 }
36267 }
36268 #[cfg(feature = "extra-children")]
36269 _ => {
36270 let elem = RawXmlElement::from_empty(&e);
36272 extra_children.push(PositionedNode::new(
36273 child_idx,
36274 RawXmlNode::Element(elem),
36275 ));
36276 child_idx += 1;
36277 }
36278 #[cfg(not(feature = "extra-children"))]
36279 _ => {}
36280 }
36281 }
36282 Event::End(_) => break,
36283 Event::Eof => break,
36284 _ => {}
36285 }
36286 buf.clear();
36287 }
36288 }
36289
36290 Ok(Self {
36291 count: f_count,
36292 dxf: f_dxf,
36293 #[cfg(feature = "extra-attrs")]
36294 extra_attrs,
36295 #[cfg(feature = "extra-children")]
36296 extra_children,
36297 })
36298 }
36299}
36300
36301impl FromXml for DifferentialFormat {
36302 fn from_xml<R: BufRead>(
36303 reader: &mut Reader<R>,
36304 start_tag: &BytesStart,
36305 is_empty: bool,
36306 ) -> Result<Self, ParseError> {
36307 let mut f_font = None;
36308 let mut f_num_fmt = None;
36309 let mut f_fill = None;
36310 let mut f_alignment = None;
36311 let mut f_border = None;
36312 let mut f_protection = None;
36313 let mut f_extension_list = None;
36314 #[cfg(feature = "extra-children")]
36315 let mut extra_children = Vec::new();
36316 #[cfg(feature = "extra-children")]
36317 let mut child_idx: usize = 0;
36318
36319 if !is_empty {
36321 let mut buf = Vec::new();
36322 loop {
36323 match reader.read_event_into(&mut buf)? {
36324 Event::Start(e) => {
36325 match e.local_name().as_ref() {
36326 b"font" => {
36327 f_font = Some(Box::new(Font::from_xml(reader, &e, false)?));
36328 #[cfg(feature = "extra-children")]
36329 {
36330 child_idx += 1;
36331 }
36332 }
36333 b"numFmt" => {
36334 f_num_fmt =
36335 Some(Box::new(NumberFormat::from_xml(reader, &e, false)?));
36336 #[cfg(feature = "extra-children")]
36337 {
36338 child_idx += 1;
36339 }
36340 }
36341 b"fill" => {
36342 f_fill = Some(Box::new(Fill::from_xml(reader, &e, false)?));
36343 #[cfg(feature = "extra-children")]
36344 {
36345 child_idx += 1;
36346 }
36347 }
36348 b"alignment" => {
36349 f_alignment =
36350 Some(Box::new(CellAlignment::from_xml(reader, &e, false)?));
36351 #[cfg(feature = "extra-children")]
36352 {
36353 child_idx += 1;
36354 }
36355 }
36356 b"border" => {
36357 f_border = Some(Box::new(Border::from_xml(reader, &e, false)?));
36358 #[cfg(feature = "extra-children")]
36359 {
36360 child_idx += 1;
36361 }
36362 }
36363 b"protection" => {
36364 f_protection =
36365 Some(Box::new(CellProtection::from_xml(reader, &e, false)?));
36366 #[cfg(feature = "extra-children")]
36367 {
36368 child_idx += 1;
36369 }
36370 }
36371 b"extLst" => {
36372 f_extension_list =
36373 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
36374 #[cfg(feature = "extra-children")]
36375 {
36376 child_idx += 1;
36377 }
36378 }
36379 #[cfg(feature = "extra-children")]
36380 _ => {
36381 let elem = RawXmlElement::from_reader(reader, &e)?;
36383 extra_children.push(PositionedNode::new(
36384 child_idx,
36385 RawXmlNode::Element(elem),
36386 ));
36387 child_idx += 1;
36388 }
36389 #[cfg(not(feature = "extra-children"))]
36390 _ => {
36391 skip_element(reader)?;
36393 }
36394 }
36395 }
36396 Event::Empty(e) => {
36397 match e.local_name().as_ref() {
36398 b"font" => {
36399 f_font = Some(Box::new(Font::from_xml(reader, &e, true)?));
36400 #[cfg(feature = "extra-children")]
36401 {
36402 child_idx += 1;
36403 }
36404 }
36405 b"numFmt" => {
36406 f_num_fmt =
36407 Some(Box::new(NumberFormat::from_xml(reader, &e, true)?));
36408 #[cfg(feature = "extra-children")]
36409 {
36410 child_idx += 1;
36411 }
36412 }
36413 b"fill" => {
36414 f_fill = Some(Box::new(Fill::from_xml(reader, &e, true)?));
36415 #[cfg(feature = "extra-children")]
36416 {
36417 child_idx += 1;
36418 }
36419 }
36420 b"alignment" => {
36421 f_alignment =
36422 Some(Box::new(CellAlignment::from_xml(reader, &e, true)?));
36423 #[cfg(feature = "extra-children")]
36424 {
36425 child_idx += 1;
36426 }
36427 }
36428 b"border" => {
36429 f_border = Some(Box::new(Border::from_xml(reader, &e, true)?));
36430 #[cfg(feature = "extra-children")]
36431 {
36432 child_idx += 1;
36433 }
36434 }
36435 b"protection" => {
36436 f_protection =
36437 Some(Box::new(CellProtection::from_xml(reader, &e, true)?));
36438 #[cfg(feature = "extra-children")]
36439 {
36440 child_idx += 1;
36441 }
36442 }
36443 b"extLst" => {
36444 f_extension_list =
36445 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
36446 #[cfg(feature = "extra-children")]
36447 {
36448 child_idx += 1;
36449 }
36450 }
36451 #[cfg(feature = "extra-children")]
36452 _ => {
36453 let elem = RawXmlElement::from_empty(&e);
36455 extra_children.push(PositionedNode::new(
36456 child_idx,
36457 RawXmlNode::Element(elem),
36458 ));
36459 child_idx += 1;
36460 }
36461 #[cfg(not(feature = "extra-children"))]
36462 _ => {}
36463 }
36464 }
36465 Event::End(_) => break,
36466 Event::Eof => break,
36467 _ => {}
36468 }
36469 buf.clear();
36470 }
36471 }
36472
36473 Ok(Self {
36474 font: f_font,
36475 num_fmt: f_num_fmt,
36476 fill: f_fill,
36477 alignment: f_alignment,
36478 border: f_border,
36479 protection: f_protection,
36480 extension_list: f_extension_list,
36481 #[cfg(feature = "extra-children")]
36482 extra_children,
36483 })
36484 }
36485}
36486
36487impl FromXml for Colors {
36488 fn from_xml<R: BufRead>(
36489 reader: &mut Reader<R>,
36490 start_tag: &BytesStart,
36491 is_empty: bool,
36492 ) -> Result<Self, ParseError> {
36493 #[cfg(feature = "sml-styling")]
36494 let mut f_indexed_colors = None;
36495 #[cfg(feature = "sml-styling")]
36496 let mut f_mru_colors = None;
36497 #[cfg(feature = "extra-children")]
36498 let mut extra_children = Vec::new();
36499 #[cfg(feature = "extra-children")]
36500 let mut child_idx: usize = 0;
36501
36502 if !is_empty {
36504 let mut buf = Vec::new();
36505 loop {
36506 match reader.read_event_into(&mut buf)? {
36507 Event::Start(e) => {
36508 match e.local_name().as_ref() {
36509 #[cfg(feature = "sml-styling")]
36510 b"indexedColors" => {
36511 f_indexed_colors =
36512 Some(Box::new(IndexedColors::from_xml(reader, &e, false)?));
36513 #[cfg(feature = "extra-children")]
36514 {
36515 child_idx += 1;
36516 }
36517 }
36518 #[cfg(feature = "sml-styling")]
36519 b"mruColors" => {
36520 f_mru_colors =
36521 Some(Box::new(MostRecentColors::from_xml(reader, &e, false)?));
36522 #[cfg(feature = "extra-children")]
36523 {
36524 child_idx += 1;
36525 }
36526 }
36527 #[cfg(feature = "extra-children")]
36528 _ => {
36529 let elem = RawXmlElement::from_reader(reader, &e)?;
36531 extra_children.push(PositionedNode::new(
36532 child_idx,
36533 RawXmlNode::Element(elem),
36534 ));
36535 child_idx += 1;
36536 }
36537 #[cfg(not(feature = "extra-children"))]
36538 _ => {
36539 skip_element(reader)?;
36541 }
36542 }
36543 }
36544 Event::Empty(e) => {
36545 match e.local_name().as_ref() {
36546 #[cfg(feature = "sml-styling")]
36547 b"indexedColors" => {
36548 f_indexed_colors =
36549 Some(Box::new(IndexedColors::from_xml(reader, &e, true)?));
36550 #[cfg(feature = "extra-children")]
36551 {
36552 child_idx += 1;
36553 }
36554 }
36555 #[cfg(feature = "sml-styling")]
36556 b"mruColors" => {
36557 f_mru_colors =
36558 Some(Box::new(MostRecentColors::from_xml(reader, &e, true)?));
36559 #[cfg(feature = "extra-children")]
36560 {
36561 child_idx += 1;
36562 }
36563 }
36564 #[cfg(feature = "extra-children")]
36565 _ => {
36566 let elem = RawXmlElement::from_empty(&e);
36568 extra_children.push(PositionedNode::new(
36569 child_idx,
36570 RawXmlNode::Element(elem),
36571 ));
36572 child_idx += 1;
36573 }
36574 #[cfg(not(feature = "extra-children"))]
36575 _ => {}
36576 }
36577 }
36578 Event::End(_) => break,
36579 Event::Eof => break,
36580 _ => {}
36581 }
36582 buf.clear();
36583 }
36584 }
36585
36586 Ok(Self {
36587 #[cfg(feature = "sml-styling")]
36588 indexed_colors: f_indexed_colors,
36589 #[cfg(feature = "sml-styling")]
36590 mru_colors: f_mru_colors,
36591 #[cfg(feature = "extra-children")]
36592 extra_children,
36593 })
36594 }
36595}
36596
36597impl FromXml for IndexedColors {
36598 fn from_xml<R: BufRead>(
36599 reader: &mut Reader<R>,
36600 start_tag: &BytesStart,
36601 is_empty: bool,
36602 ) -> Result<Self, ParseError> {
36603 let mut f_rgb_color = Vec::new();
36604 #[cfg(feature = "extra-children")]
36605 let mut extra_children = Vec::new();
36606 #[cfg(feature = "extra-children")]
36607 let mut child_idx: usize = 0;
36608
36609 if !is_empty {
36611 let mut buf = Vec::new();
36612 loop {
36613 match reader.read_event_into(&mut buf)? {
36614 Event::Start(e) => {
36615 match e.local_name().as_ref() {
36616 b"rgbColor" => {
36617 f_rgb_color.push(RgbColor::from_xml(reader, &e, false)?);
36618 #[cfg(feature = "extra-children")]
36619 {
36620 child_idx += 1;
36621 }
36622 }
36623 #[cfg(feature = "extra-children")]
36624 _ => {
36625 let elem = RawXmlElement::from_reader(reader, &e)?;
36627 extra_children.push(PositionedNode::new(
36628 child_idx,
36629 RawXmlNode::Element(elem),
36630 ));
36631 child_idx += 1;
36632 }
36633 #[cfg(not(feature = "extra-children"))]
36634 _ => {
36635 skip_element(reader)?;
36637 }
36638 }
36639 }
36640 Event::Empty(e) => {
36641 match e.local_name().as_ref() {
36642 b"rgbColor" => {
36643 f_rgb_color.push(RgbColor::from_xml(reader, &e, true)?);
36644 #[cfg(feature = "extra-children")]
36645 {
36646 child_idx += 1;
36647 }
36648 }
36649 #[cfg(feature = "extra-children")]
36650 _ => {
36651 let elem = RawXmlElement::from_empty(&e);
36653 extra_children.push(PositionedNode::new(
36654 child_idx,
36655 RawXmlNode::Element(elem),
36656 ));
36657 child_idx += 1;
36658 }
36659 #[cfg(not(feature = "extra-children"))]
36660 _ => {}
36661 }
36662 }
36663 Event::End(_) => break,
36664 Event::Eof => break,
36665 _ => {}
36666 }
36667 buf.clear();
36668 }
36669 }
36670
36671 Ok(Self {
36672 rgb_color: f_rgb_color,
36673 #[cfg(feature = "extra-children")]
36674 extra_children,
36675 })
36676 }
36677}
36678
36679impl FromXml for MostRecentColors {
36680 fn from_xml<R: BufRead>(
36681 reader: &mut Reader<R>,
36682 start_tag: &BytesStart,
36683 is_empty: bool,
36684 ) -> Result<Self, ParseError> {
36685 let mut f_color = Vec::new();
36686 #[cfg(feature = "extra-children")]
36687 let mut extra_children = Vec::new();
36688 #[cfg(feature = "extra-children")]
36689 let mut child_idx: usize = 0;
36690
36691 if !is_empty {
36693 let mut buf = Vec::new();
36694 loop {
36695 match reader.read_event_into(&mut buf)? {
36696 Event::Start(e) => {
36697 match e.local_name().as_ref() {
36698 b"color" => {
36699 f_color.push(Color::from_xml(reader, &e, false)?);
36700 #[cfg(feature = "extra-children")]
36701 {
36702 child_idx += 1;
36703 }
36704 }
36705 #[cfg(feature = "extra-children")]
36706 _ => {
36707 let elem = RawXmlElement::from_reader(reader, &e)?;
36709 extra_children.push(PositionedNode::new(
36710 child_idx,
36711 RawXmlNode::Element(elem),
36712 ));
36713 child_idx += 1;
36714 }
36715 #[cfg(not(feature = "extra-children"))]
36716 _ => {
36717 skip_element(reader)?;
36719 }
36720 }
36721 }
36722 Event::Empty(e) => {
36723 match e.local_name().as_ref() {
36724 b"color" => {
36725 f_color.push(Color::from_xml(reader, &e, true)?);
36726 #[cfg(feature = "extra-children")]
36727 {
36728 child_idx += 1;
36729 }
36730 }
36731 #[cfg(feature = "extra-children")]
36732 _ => {
36733 let elem = RawXmlElement::from_empty(&e);
36735 extra_children.push(PositionedNode::new(
36736 child_idx,
36737 RawXmlNode::Element(elem),
36738 ));
36739 child_idx += 1;
36740 }
36741 #[cfg(not(feature = "extra-children"))]
36742 _ => {}
36743 }
36744 }
36745 Event::End(_) => break,
36746 Event::Eof => break,
36747 _ => {}
36748 }
36749 buf.clear();
36750 }
36751 }
36752
36753 Ok(Self {
36754 color: f_color,
36755 #[cfg(feature = "extra-children")]
36756 extra_children,
36757 })
36758 }
36759}
36760
36761impl FromXml for RgbColor {
36762 fn from_xml<R: BufRead>(
36763 reader: &mut Reader<R>,
36764 start_tag: &BytesStart,
36765 is_empty: bool,
36766 ) -> Result<Self, ParseError> {
36767 let mut f_rgb = None;
36768 #[cfg(feature = "extra-attrs")]
36769 let mut extra_attrs = std::collections::HashMap::new();
36770
36771 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
36773 let val = String::from_utf8_lossy(&attr.value);
36774 match attr.key.local_name().as_ref() {
36775 b"rgb" => {
36776 f_rgb = decode_hex(&val);
36777 }
36778 #[cfg(feature = "extra-attrs")]
36779 unknown => {
36780 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
36781 extra_attrs.insert(key, val.into_owned());
36782 }
36783 #[cfg(not(feature = "extra-attrs"))]
36784 _ => {}
36785 }
36786 }
36787
36788 if !is_empty {
36789 let mut buf = Vec::new();
36790 loop {
36791 match reader.read_event_into(&mut buf)? {
36792 Event::End(_) => break,
36793 Event::Eof => break,
36794 _ => {}
36795 }
36796 buf.clear();
36797 }
36798 }
36799
36800 Ok(Self {
36801 rgb: f_rgb,
36802 #[cfg(feature = "extra-attrs")]
36803 extra_attrs,
36804 })
36805 }
36806}
36807
36808impl FromXml for TableStyles {
36809 fn from_xml<R: BufRead>(
36810 reader: &mut Reader<R>,
36811 start_tag: &BytesStart,
36812 is_empty: bool,
36813 ) -> Result<Self, ParseError> {
36814 let mut f_count = None;
36815 let mut f_default_table_style = None;
36816 let mut f_default_pivot_style = None;
36817 let mut f_table_style = Vec::new();
36818 #[cfg(feature = "extra-attrs")]
36819 let mut extra_attrs = std::collections::HashMap::new();
36820 #[cfg(feature = "extra-children")]
36821 let mut extra_children = Vec::new();
36822 #[cfg(feature = "extra-children")]
36823 let mut child_idx: usize = 0;
36824
36825 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
36827 let val = String::from_utf8_lossy(&attr.value);
36828 match attr.key.local_name().as_ref() {
36829 b"count" => {
36830 f_count = val.parse().ok();
36831 }
36832 b"defaultTableStyle" => {
36833 f_default_table_style = Some(val.into_owned());
36834 }
36835 b"defaultPivotStyle" => {
36836 f_default_pivot_style = Some(val.into_owned());
36837 }
36838 #[cfg(feature = "extra-attrs")]
36839 unknown => {
36840 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
36841 extra_attrs.insert(key, val.into_owned());
36842 }
36843 #[cfg(not(feature = "extra-attrs"))]
36844 _ => {}
36845 }
36846 }
36847
36848 if !is_empty {
36850 let mut buf = Vec::new();
36851 loop {
36852 match reader.read_event_into(&mut buf)? {
36853 Event::Start(e) => {
36854 match e.local_name().as_ref() {
36855 b"tableStyle" => {
36856 f_table_style.push(TableStyle::from_xml(reader, &e, false)?);
36857 #[cfg(feature = "extra-children")]
36858 {
36859 child_idx += 1;
36860 }
36861 }
36862 #[cfg(feature = "extra-children")]
36863 _ => {
36864 let elem = RawXmlElement::from_reader(reader, &e)?;
36866 extra_children.push(PositionedNode::new(
36867 child_idx,
36868 RawXmlNode::Element(elem),
36869 ));
36870 child_idx += 1;
36871 }
36872 #[cfg(not(feature = "extra-children"))]
36873 _ => {
36874 skip_element(reader)?;
36876 }
36877 }
36878 }
36879 Event::Empty(e) => {
36880 match e.local_name().as_ref() {
36881 b"tableStyle" => {
36882 f_table_style.push(TableStyle::from_xml(reader, &e, true)?);
36883 #[cfg(feature = "extra-children")]
36884 {
36885 child_idx += 1;
36886 }
36887 }
36888 #[cfg(feature = "extra-children")]
36889 _ => {
36890 let elem = RawXmlElement::from_empty(&e);
36892 extra_children.push(PositionedNode::new(
36893 child_idx,
36894 RawXmlNode::Element(elem),
36895 ));
36896 child_idx += 1;
36897 }
36898 #[cfg(not(feature = "extra-children"))]
36899 _ => {}
36900 }
36901 }
36902 Event::End(_) => break,
36903 Event::Eof => break,
36904 _ => {}
36905 }
36906 buf.clear();
36907 }
36908 }
36909
36910 Ok(Self {
36911 count: f_count,
36912 default_table_style: f_default_table_style,
36913 default_pivot_style: f_default_pivot_style,
36914 table_style: f_table_style,
36915 #[cfg(feature = "extra-attrs")]
36916 extra_attrs,
36917 #[cfg(feature = "extra-children")]
36918 extra_children,
36919 })
36920 }
36921}
36922
36923impl FromXml for TableStyle {
36924 fn from_xml<R: BufRead>(
36925 reader: &mut Reader<R>,
36926 start_tag: &BytesStart,
36927 is_empty: bool,
36928 ) -> Result<Self, ParseError> {
36929 let mut f_name: Option<String> = None;
36930 let mut f_pivot = None;
36931 let mut f_table = None;
36932 let mut f_count = None;
36933 let mut f_table_style_element = Vec::new();
36934 #[cfg(feature = "extra-attrs")]
36935 let mut extra_attrs = std::collections::HashMap::new();
36936 #[cfg(feature = "extra-children")]
36937 let mut extra_children = Vec::new();
36938 #[cfg(feature = "extra-children")]
36939 let mut child_idx: usize = 0;
36940
36941 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
36943 let val = String::from_utf8_lossy(&attr.value);
36944 match attr.key.local_name().as_ref() {
36945 b"name" => {
36946 f_name = Some(val.into_owned());
36947 }
36948 b"pivot" => {
36949 f_pivot = Some(val == "true" || val == "1");
36950 }
36951 b"table" => {
36952 f_table = Some(val == "true" || val == "1");
36953 }
36954 b"count" => {
36955 f_count = val.parse().ok();
36956 }
36957 #[cfg(feature = "extra-attrs")]
36958 unknown => {
36959 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
36960 extra_attrs.insert(key, val.into_owned());
36961 }
36962 #[cfg(not(feature = "extra-attrs"))]
36963 _ => {}
36964 }
36965 }
36966
36967 if !is_empty {
36969 let mut buf = Vec::new();
36970 loop {
36971 match reader.read_event_into(&mut buf)? {
36972 Event::Start(e) => {
36973 match e.local_name().as_ref() {
36974 b"tableStyleElement" => {
36975 f_table_style_element
36976 .push(TableStyleElement::from_xml(reader, &e, false)?);
36977 #[cfg(feature = "extra-children")]
36978 {
36979 child_idx += 1;
36980 }
36981 }
36982 #[cfg(feature = "extra-children")]
36983 _ => {
36984 let elem = RawXmlElement::from_reader(reader, &e)?;
36986 extra_children.push(PositionedNode::new(
36987 child_idx,
36988 RawXmlNode::Element(elem),
36989 ));
36990 child_idx += 1;
36991 }
36992 #[cfg(not(feature = "extra-children"))]
36993 _ => {
36994 skip_element(reader)?;
36996 }
36997 }
36998 }
36999 Event::Empty(e) => {
37000 match e.local_name().as_ref() {
37001 b"tableStyleElement" => {
37002 f_table_style_element
37003 .push(TableStyleElement::from_xml(reader, &e, true)?);
37004 #[cfg(feature = "extra-children")]
37005 {
37006 child_idx += 1;
37007 }
37008 }
37009 #[cfg(feature = "extra-children")]
37010 _ => {
37011 let elem = RawXmlElement::from_empty(&e);
37013 extra_children.push(PositionedNode::new(
37014 child_idx,
37015 RawXmlNode::Element(elem),
37016 ));
37017 child_idx += 1;
37018 }
37019 #[cfg(not(feature = "extra-children"))]
37020 _ => {}
37021 }
37022 }
37023 Event::End(_) => break,
37024 Event::Eof => break,
37025 _ => {}
37026 }
37027 buf.clear();
37028 }
37029 }
37030
37031 Ok(Self {
37032 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
37033 pivot: f_pivot,
37034 table: f_table,
37035 count: f_count,
37036 table_style_element: f_table_style_element,
37037 #[cfg(feature = "extra-attrs")]
37038 extra_attrs,
37039 #[cfg(feature = "extra-children")]
37040 extra_children,
37041 })
37042 }
37043}
37044
37045impl FromXml for TableStyleElement {
37046 fn from_xml<R: BufRead>(
37047 reader: &mut Reader<R>,
37048 start_tag: &BytesStart,
37049 is_empty: bool,
37050 ) -> Result<Self, ParseError> {
37051 let mut f_type: Option<STTableStyleType> = None;
37052 let mut f_size = None;
37053 let mut f_dxf_id = None;
37054 #[cfg(feature = "extra-attrs")]
37055 let mut extra_attrs = std::collections::HashMap::new();
37056
37057 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
37059 let val = String::from_utf8_lossy(&attr.value);
37060 match attr.key.local_name().as_ref() {
37061 b"type" => {
37062 f_type = val.parse().ok();
37063 }
37064 b"size" => {
37065 f_size = val.parse().ok();
37066 }
37067 b"dxfId" => {
37068 f_dxf_id = val.parse().ok();
37069 }
37070 #[cfg(feature = "extra-attrs")]
37071 unknown => {
37072 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
37073 extra_attrs.insert(key, val.into_owned());
37074 }
37075 #[cfg(not(feature = "extra-attrs"))]
37076 _ => {}
37077 }
37078 }
37079
37080 if !is_empty {
37081 let mut buf = Vec::new();
37082 loop {
37083 match reader.read_event_into(&mut buf)? {
37084 Event::End(_) => break,
37085 Event::Eof => break,
37086 _ => {}
37087 }
37088 buf.clear();
37089 }
37090 }
37091
37092 Ok(Self {
37093 r#type: f_type.ok_or_else(|| ParseError::MissingAttribute("type".to_string()))?,
37094 size: f_size,
37095 dxf_id: f_dxf_id,
37096 #[cfg(feature = "extra-attrs")]
37097 extra_attrs,
37098 })
37099 }
37100}
37101
37102impl FromXml for BooleanProperty {
37103 fn from_xml<R: BufRead>(
37104 reader: &mut Reader<R>,
37105 start_tag: &BytesStart,
37106 is_empty: bool,
37107 ) -> Result<Self, ParseError> {
37108 let mut f_value = None;
37109 #[cfg(feature = "extra-attrs")]
37110 let mut extra_attrs = std::collections::HashMap::new();
37111
37112 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
37114 let val = String::from_utf8_lossy(&attr.value);
37115 match attr.key.local_name().as_ref() {
37116 b"val" => {
37117 f_value = Some(val == "true" || val == "1");
37118 }
37119 #[cfg(feature = "extra-attrs")]
37120 unknown => {
37121 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
37122 extra_attrs.insert(key, val.into_owned());
37123 }
37124 #[cfg(not(feature = "extra-attrs"))]
37125 _ => {}
37126 }
37127 }
37128
37129 if !is_empty {
37130 let mut buf = Vec::new();
37131 loop {
37132 match reader.read_event_into(&mut buf)? {
37133 Event::End(_) => break,
37134 Event::Eof => break,
37135 _ => {}
37136 }
37137 buf.clear();
37138 }
37139 }
37140
37141 Ok(Self {
37142 value: f_value,
37143 #[cfg(feature = "extra-attrs")]
37144 extra_attrs,
37145 })
37146 }
37147}
37148
37149impl FromXml for FontSize {
37150 fn from_xml<R: BufRead>(
37151 reader: &mut Reader<R>,
37152 start_tag: &BytesStart,
37153 is_empty: bool,
37154 ) -> Result<Self, ParseError> {
37155 let mut f_value: Option<f64> = None;
37156 #[cfg(feature = "extra-attrs")]
37157 let mut extra_attrs = std::collections::HashMap::new();
37158
37159 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
37161 let val = String::from_utf8_lossy(&attr.value);
37162 match attr.key.local_name().as_ref() {
37163 b"val" => {
37164 f_value = val.parse().ok();
37165 }
37166 #[cfg(feature = "extra-attrs")]
37167 unknown => {
37168 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
37169 extra_attrs.insert(key, val.into_owned());
37170 }
37171 #[cfg(not(feature = "extra-attrs"))]
37172 _ => {}
37173 }
37174 }
37175
37176 if !is_empty {
37177 let mut buf = Vec::new();
37178 loop {
37179 match reader.read_event_into(&mut buf)? {
37180 Event::End(_) => break,
37181 Event::Eof => break,
37182 _ => {}
37183 }
37184 buf.clear();
37185 }
37186 }
37187
37188 Ok(Self {
37189 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
37190 #[cfg(feature = "extra-attrs")]
37191 extra_attrs,
37192 })
37193 }
37194}
37195
37196impl FromXml for IntProperty {
37197 fn from_xml<R: BufRead>(
37198 reader: &mut Reader<R>,
37199 start_tag: &BytesStart,
37200 is_empty: bool,
37201 ) -> Result<Self, ParseError> {
37202 let mut f_value: Option<i32> = None;
37203 #[cfg(feature = "extra-attrs")]
37204 let mut extra_attrs = std::collections::HashMap::new();
37205
37206 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
37208 let val = String::from_utf8_lossy(&attr.value);
37209 match attr.key.local_name().as_ref() {
37210 b"val" => {
37211 f_value = val.parse().ok();
37212 }
37213 #[cfg(feature = "extra-attrs")]
37214 unknown => {
37215 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
37216 extra_attrs.insert(key, val.into_owned());
37217 }
37218 #[cfg(not(feature = "extra-attrs"))]
37219 _ => {}
37220 }
37221 }
37222
37223 if !is_empty {
37224 let mut buf = Vec::new();
37225 loop {
37226 match reader.read_event_into(&mut buf)? {
37227 Event::End(_) => break,
37228 Event::Eof => break,
37229 _ => {}
37230 }
37231 buf.clear();
37232 }
37233 }
37234
37235 Ok(Self {
37236 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
37237 #[cfg(feature = "extra-attrs")]
37238 extra_attrs,
37239 })
37240 }
37241}
37242
37243impl FromXml for FontName {
37244 fn from_xml<R: BufRead>(
37245 reader: &mut Reader<R>,
37246 start_tag: &BytesStart,
37247 is_empty: bool,
37248 ) -> Result<Self, ParseError> {
37249 let mut f_value: Option<XmlString> = None;
37250 #[cfg(feature = "extra-attrs")]
37251 let mut extra_attrs = std::collections::HashMap::new();
37252
37253 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
37255 let val = String::from_utf8_lossy(&attr.value);
37256 match attr.key.local_name().as_ref() {
37257 b"val" => {
37258 f_value = Some(val.into_owned());
37259 }
37260 #[cfg(feature = "extra-attrs")]
37261 unknown => {
37262 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
37263 extra_attrs.insert(key, val.into_owned());
37264 }
37265 #[cfg(not(feature = "extra-attrs"))]
37266 _ => {}
37267 }
37268 }
37269
37270 if !is_empty {
37271 let mut buf = Vec::new();
37272 loop {
37273 match reader.read_event_into(&mut buf)? {
37274 Event::End(_) => break,
37275 Event::Eof => break,
37276 _ => {}
37277 }
37278 buf.clear();
37279 }
37280 }
37281
37282 Ok(Self {
37283 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
37284 #[cfg(feature = "extra-attrs")]
37285 extra_attrs,
37286 })
37287 }
37288}
37289
37290impl FromXml for VerticalAlignFontProperty {
37291 fn from_xml<R: BufRead>(
37292 reader: &mut Reader<R>,
37293 start_tag: &BytesStart,
37294 is_empty: bool,
37295 ) -> Result<Self, ParseError> {
37296 let mut f_value: Option<VerticalAlignRun> = None;
37297 #[cfg(feature = "extra-attrs")]
37298 let mut extra_attrs = std::collections::HashMap::new();
37299
37300 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
37302 let val = String::from_utf8_lossy(&attr.value);
37303 match attr.key.local_name().as_ref() {
37304 b"val" => {
37305 f_value = val.parse().ok();
37306 }
37307 #[cfg(feature = "extra-attrs")]
37308 unknown => {
37309 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
37310 extra_attrs.insert(key, val.into_owned());
37311 }
37312 #[cfg(not(feature = "extra-attrs"))]
37313 _ => {}
37314 }
37315 }
37316
37317 if !is_empty {
37318 let mut buf = Vec::new();
37319 loop {
37320 match reader.read_event_into(&mut buf)? {
37321 Event::End(_) => break,
37322 Event::Eof => break,
37323 _ => {}
37324 }
37325 buf.clear();
37326 }
37327 }
37328
37329 Ok(Self {
37330 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
37331 #[cfg(feature = "extra-attrs")]
37332 extra_attrs,
37333 })
37334 }
37335}
37336
37337impl FromXml for FontSchemeProperty {
37338 fn from_xml<R: BufRead>(
37339 reader: &mut Reader<R>,
37340 start_tag: &BytesStart,
37341 is_empty: bool,
37342 ) -> Result<Self, ParseError> {
37343 let mut f_value: Option<FontScheme> = None;
37344 #[cfg(feature = "extra-attrs")]
37345 let mut extra_attrs = std::collections::HashMap::new();
37346
37347 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
37349 let val = String::from_utf8_lossy(&attr.value);
37350 match attr.key.local_name().as_ref() {
37351 b"val" => {
37352 f_value = val.parse().ok();
37353 }
37354 #[cfg(feature = "extra-attrs")]
37355 unknown => {
37356 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
37357 extra_attrs.insert(key, val.into_owned());
37358 }
37359 #[cfg(not(feature = "extra-attrs"))]
37360 _ => {}
37361 }
37362 }
37363
37364 if !is_empty {
37365 let mut buf = Vec::new();
37366 loop {
37367 match reader.read_event_into(&mut buf)? {
37368 Event::End(_) => break,
37369 Event::Eof => break,
37370 _ => {}
37371 }
37372 buf.clear();
37373 }
37374 }
37375
37376 Ok(Self {
37377 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
37378 #[cfg(feature = "extra-attrs")]
37379 extra_attrs,
37380 })
37381 }
37382}
37383
37384impl FromXml for UnderlineProperty {
37385 fn from_xml<R: BufRead>(
37386 reader: &mut Reader<R>,
37387 start_tag: &BytesStart,
37388 is_empty: bool,
37389 ) -> Result<Self, ParseError> {
37390 let mut f_value = None;
37391 #[cfg(feature = "extra-attrs")]
37392 let mut extra_attrs = std::collections::HashMap::new();
37393
37394 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
37396 let val = String::from_utf8_lossy(&attr.value);
37397 match attr.key.local_name().as_ref() {
37398 b"val" => {
37399 f_value = val.parse().ok();
37400 }
37401 #[cfg(feature = "extra-attrs")]
37402 unknown => {
37403 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
37404 extra_attrs.insert(key, val.into_owned());
37405 }
37406 #[cfg(not(feature = "extra-attrs"))]
37407 _ => {}
37408 }
37409 }
37410
37411 if !is_empty {
37412 let mut buf = Vec::new();
37413 loop {
37414 match reader.read_event_into(&mut buf)? {
37415 Event::End(_) => break,
37416 Event::Eof => break,
37417 _ => {}
37418 }
37419 buf.clear();
37420 }
37421 }
37422
37423 Ok(Self {
37424 value: f_value,
37425 #[cfg(feature = "extra-attrs")]
37426 extra_attrs,
37427 })
37428 }
37429}
37430
37431impl FromXml for Font {
37432 fn from_xml<R: BufRead>(
37433 reader: &mut Reader<R>,
37434 start_tag: &BytesStart,
37435 is_empty: bool,
37436 ) -> Result<Self, ParseError> {
37437 #[cfg(feature = "sml-styling")]
37438 let mut f_name = None;
37439 #[cfg(feature = "sml-styling")]
37440 let mut f_charset = None;
37441 #[cfg(feature = "sml-styling")]
37442 let mut f_family = None;
37443 #[cfg(feature = "sml-styling")]
37444 let mut f_b = None;
37445 #[cfg(feature = "sml-styling")]
37446 let mut f_i = None;
37447 #[cfg(feature = "sml-styling")]
37448 let mut f_strike = None;
37449 #[cfg(feature = "sml-styling")]
37450 let mut f_outline = None;
37451 #[cfg(feature = "sml-styling")]
37452 let mut f_shadow = None;
37453 #[cfg(feature = "sml-styling")]
37454 let mut f_condense = None;
37455 #[cfg(feature = "sml-styling")]
37456 let mut f_extend = None;
37457 #[cfg(feature = "sml-styling")]
37458 let mut f_color = None;
37459 #[cfg(feature = "sml-styling")]
37460 let mut f_sz = None;
37461 #[cfg(feature = "sml-styling")]
37462 let mut f_u = None;
37463 #[cfg(feature = "sml-styling")]
37464 let mut f_vert_align = None;
37465 #[cfg(feature = "sml-styling")]
37466 let mut f_scheme = None;
37467 #[cfg(feature = "extra-children")]
37468 let mut extra_children = Vec::new();
37469 #[cfg(feature = "extra-children")]
37470 let mut child_idx: usize = 0;
37471
37472 if !is_empty {
37474 let mut buf = Vec::new();
37475 loop {
37476 match reader.read_event_into(&mut buf)? {
37477 Event::Start(e) => {
37478 match e.local_name().as_ref() {
37479 #[cfg(feature = "sml-styling")]
37480 b"name" => {
37481 f_name = Some(Box::new(FontName::from_xml(reader, &e, false)?));
37482 #[cfg(feature = "extra-children")]
37483 {
37484 child_idx += 1;
37485 }
37486 }
37487 #[cfg(feature = "sml-styling")]
37488 b"charset" => {
37489 f_charset =
37490 Some(Box::new(IntProperty::from_xml(reader, &e, false)?));
37491 #[cfg(feature = "extra-children")]
37492 {
37493 child_idx += 1;
37494 }
37495 }
37496 #[cfg(feature = "sml-styling")]
37497 b"family" => {
37498 f_family = Some(Box::new(FontFamily::from_xml(reader, &e, false)?));
37499 #[cfg(feature = "extra-children")]
37500 {
37501 child_idx += 1;
37502 }
37503 }
37504 #[cfg(feature = "sml-styling")]
37505 b"b" => {
37506 f_b = Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
37507 #[cfg(feature = "extra-children")]
37508 {
37509 child_idx += 1;
37510 }
37511 }
37512 #[cfg(feature = "sml-styling")]
37513 b"i" => {
37514 f_i = Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
37515 #[cfg(feature = "extra-children")]
37516 {
37517 child_idx += 1;
37518 }
37519 }
37520 #[cfg(feature = "sml-styling")]
37521 b"strike" => {
37522 f_strike =
37523 Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
37524 #[cfg(feature = "extra-children")]
37525 {
37526 child_idx += 1;
37527 }
37528 }
37529 #[cfg(feature = "sml-styling")]
37530 b"outline" => {
37531 f_outline =
37532 Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
37533 #[cfg(feature = "extra-children")]
37534 {
37535 child_idx += 1;
37536 }
37537 }
37538 #[cfg(feature = "sml-styling")]
37539 b"shadow" => {
37540 f_shadow =
37541 Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
37542 #[cfg(feature = "extra-children")]
37543 {
37544 child_idx += 1;
37545 }
37546 }
37547 #[cfg(feature = "sml-styling")]
37548 b"condense" => {
37549 f_condense =
37550 Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
37551 #[cfg(feature = "extra-children")]
37552 {
37553 child_idx += 1;
37554 }
37555 }
37556 #[cfg(feature = "sml-styling")]
37557 b"extend" => {
37558 f_extend =
37559 Some(Box::new(BooleanProperty::from_xml(reader, &e, false)?));
37560 #[cfg(feature = "extra-children")]
37561 {
37562 child_idx += 1;
37563 }
37564 }
37565 #[cfg(feature = "sml-styling")]
37566 b"color" => {
37567 f_color = Some(Box::new(Color::from_xml(reader, &e, false)?));
37568 #[cfg(feature = "extra-children")]
37569 {
37570 child_idx += 1;
37571 }
37572 }
37573 #[cfg(feature = "sml-styling")]
37574 b"sz" => {
37575 f_sz = Some(Box::new(FontSize::from_xml(reader, &e, false)?));
37576 #[cfg(feature = "extra-children")]
37577 {
37578 child_idx += 1;
37579 }
37580 }
37581 #[cfg(feature = "sml-styling")]
37582 b"u" => {
37583 f_u =
37584 Some(Box::new(UnderlineProperty::from_xml(reader, &e, false)?));
37585 #[cfg(feature = "extra-children")]
37586 {
37587 child_idx += 1;
37588 }
37589 }
37590 #[cfg(feature = "sml-styling")]
37591 b"vertAlign" => {
37592 f_vert_align = Some(Box::new(VerticalAlignFontProperty::from_xml(
37593 reader, &e, false,
37594 )?));
37595 #[cfg(feature = "extra-children")]
37596 {
37597 child_idx += 1;
37598 }
37599 }
37600 #[cfg(feature = "sml-styling")]
37601 b"scheme" => {
37602 f_scheme = Some(Box::new(FontSchemeProperty::from_xml(
37603 reader, &e, false,
37604 )?));
37605 #[cfg(feature = "extra-children")]
37606 {
37607 child_idx += 1;
37608 }
37609 }
37610 #[cfg(feature = "extra-children")]
37611 _ => {
37612 let elem = RawXmlElement::from_reader(reader, &e)?;
37614 extra_children.push(PositionedNode::new(
37615 child_idx,
37616 RawXmlNode::Element(elem),
37617 ));
37618 child_idx += 1;
37619 }
37620 #[cfg(not(feature = "extra-children"))]
37621 _ => {
37622 skip_element(reader)?;
37624 }
37625 }
37626 }
37627 Event::Empty(e) => {
37628 match e.local_name().as_ref() {
37629 #[cfg(feature = "sml-styling")]
37630 b"name" => {
37631 f_name = Some(Box::new(FontName::from_xml(reader, &e, true)?));
37632 #[cfg(feature = "extra-children")]
37633 {
37634 child_idx += 1;
37635 }
37636 }
37637 #[cfg(feature = "sml-styling")]
37638 b"charset" => {
37639 f_charset =
37640 Some(Box::new(IntProperty::from_xml(reader, &e, true)?));
37641 #[cfg(feature = "extra-children")]
37642 {
37643 child_idx += 1;
37644 }
37645 }
37646 #[cfg(feature = "sml-styling")]
37647 b"family" => {
37648 f_family = Some(Box::new(FontFamily::from_xml(reader, &e, true)?));
37649 #[cfg(feature = "extra-children")]
37650 {
37651 child_idx += 1;
37652 }
37653 }
37654 #[cfg(feature = "sml-styling")]
37655 b"b" => {
37656 f_b = Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
37657 #[cfg(feature = "extra-children")]
37658 {
37659 child_idx += 1;
37660 }
37661 }
37662 #[cfg(feature = "sml-styling")]
37663 b"i" => {
37664 f_i = Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
37665 #[cfg(feature = "extra-children")]
37666 {
37667 child_idx += 1;
37668 }
37669 }
37670 #[cfg(feature = "sml-styling")]
37671 b"strike" => {
37672 f_strike =
37673 Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
37674 #[cfg(feature = "extra-children")]
37675 {
37676 child_idx += 1;
37677 }
37678 }
37679 #[cfg(feature = "sml-styling")]
37680 b"outline" => {
37681 f_outline =
37682 Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
37683 #[cfg(feature = "extra-children")]
37684 {
37685 child_idx += 1;
37686 }
37687 }
37688 #[cfg(feature = "sml-styling")]
37689 b"shadow" => {
37690 f_shadow =
37691 Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
37692 #[cfg(feature = "extra-children")]
37693 {
37694 child_idx += 1;
37695 }
37696 }
37697 #[cfg(feature = "sml-styling")]
37698 b"condense" => {
37699 f_condense =
37700 Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
37701 #[cfg(feature = "extra-children")]
37702 {
37703 child_idx += 1;
37704 }
37705 }
37706 #[cfg(feature = "sml-styling")]
37707 b"extend" => {
37708 f_extend =
37709 Some(Box::new(BooleanProperty::from_xml(reader, &e, true)?));
37710 #[cfg(feature = "extra-children")]
37711 {
37712 child_idx += 1;
37713 }
37714 }
37715 #[cfg(feature = "sml-styling")]
37716 b"color" => {
37717 f_color = Some(Box::new(Color::from_xml(reader, &e, true)?));
37718 #[cfg(feature = "extra-children")]
37719 {
37720 child_idx += 1;
37721 }
37722 }
37723 #[cfg(feature = "sml-styling")]
37724 b"sz" => {
37725 f_sz = Some(Box::new(FontSize::from_xml(reader, &e, true)?));
37726 #[cfg(feature = "extra-children")]
37727 {
37728 child_idx += 1;
37729 }
37730 }
37731 #[cfg(feature = "sml-styling")]
37732 b"u" => {
37733 f_u =
37734 Some(Box::new(UnderlineProperty::from_xml(reader, &e, true)?));
37735 #[cfg(feature = "extra-children")]
37736 {
37737 child_idx += 1;
37738 }
37739 }
37740 #[cfg(feature = "sml-styling")]
37741 b"vertAlign" => {
37742 f_vert_align = Some(Box::new(VerticalAlignFontProperty::from_xml(
37743 reader, &e, true,
37744 )?));
37745 #[cfg(feature = "extra-children")]
37746 {
37747 child_idx += 1;
37748 }
37749 }
37750 #[cfg(feature = "sml-styling")]
37751 b"scheme" => {
37752 f_scheme =
37753 Some(Box::new(FontSchemeProperty::from_xml(reader, &e, true)?));
37754 #[cfg(feature = "extra-children")]
37755 {
37756 child_idx += 1;
37757 }
37758 }
37759 #[cfg(feature = "extra-children")]
37760 _ => {
37761 let elem = RawXmlElement::from_empty(&e);
37763 extra_children.push(PositionedNode::new(
37764 child_idx,
37765 RawXmlNode::Element(elem),
37766 ));
37767 child_idx += 1;
37768 }
37769 #[cfg(not(feature = "extra-children"))]
37770 _ => {}
37771 }
37772 }
37773 Event::End(_) => break,
37774 Event::Eof => break,
37775 _ => {}
37776 }
37777 buf.clear();
37778 }
37779 }
37780
37781 Ok(Self {
37782 #[cfg(feature = "sml-styling")]
37783 name: f_name,
37784 #[cfg(feature = "sml-styling")]
37785 charset: f_charset,
37786 #[cfg(feature = "sml-styling")]
37787 family: f_family,
37788 #[cfg(feature = "sml-styling")]
37789 b: f_b,
37790 #[cfg(feature = "sml-styling")]
37791 i: f_i,
37792 #[cfg(feature = "sml-styling")]
37793 strike: f_strike,
37794 #[cfg(feature = "sml-styling")]
37795 outline: f_outline,
37796 #[cfg(feature = "sml-styling")]
37797 shadow: f_shadow,
37798 #[cfg(feature = "sml-styling")]
37799 condense: f_condense,
37800 #[cfg(feature = "sml-styling")]
37801 extend: f_extend,
37802 #[cfg(feature = "sml-styling")]
37803 color: f_color,
37804 #[cfg(feature = "sml-styling")]
37805 sz: f_sz,
37806 #[cfg(feature = "sml-styling")]
37807 u: f_u,
37808 #[cfg(feature = "sml-styling")]
37809 vert_align: f_vert_align,
37810 #[cfg(feature = "sml-styling")]
37811 scheme: f_scheme,
37812 #[cfg(feature = "extra-children")]
37813 extra_children,
37814 })
37815 }
37816}
37817
37818impl FromXml for FontFamily {
37819 fn from_xml<R: BufRead>(
37820 reader: &mut Reader<R>,
37821 start_tag: &BytesStart,
37822 is_empty: bool,
37823 ) -> Result<Self, ParseError> {
37824 let mut f_value: Option<STFontFamily> = None;
37825 #[cfg(feature = "extra-attrs")]
37826 let mut extra_attrs = std::collections::HashMap::new();
37827
37828 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
37830 let val = String::from_utf8_lossy(&attr.value);
37831 match attr.key.local_name().as_ref() {
37832 b"val" => {
37833 f_value = val.parse().ok();
37834 }
37835 #[cfg(feature = "extra-attrs")]
37836 unknown => {
37837 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
37838 extra_attrs.insert(key, val.into_owned());
37839 }
37840 #[cfg(not(feature = "extra-attrs"))]
37841 _ => {}
37842 }
37843 }
37844
37845 if !is_empty {
37846 let mut buf = Vec::new();
37847 loop {
37848 match reader.read_event_into(&mut buf)? {
37849 Event::End(_) => break,
37850 Event::Eof => break,
37851 _ => {}
37852 }
37853 buf.clear();
37854 }
37855 }
37856
37857 Ok(Self {
37858 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
37859 #[cfg(feature = "extra-attrs")]
37860 extra_attrs,
37861 })
37862 }
37863}
37864
37865impl FromXml for SmlAGAutoFormat {
37866 fn from_xml<R: BufRead>(
37867 reader: &mut Reader<R>,
37868 start_tag: &BytesStart,
37869 is_empty: bool,
37870 ) -> Result<Self, ParseError> {
37871 let mut f_auto_format_id = None;
37872 let mut f_apply_number_formats = None;
37873 let mut f_apply_border_formats = None;
37874 let mut f_apply_font_formats = None;
37875 let mut f_apply_pattern_formats = None;
37876 let mut f_apply_alignment_formats = None;
37877 let mut f_apply_width_height_formats = None;
37878 #[cfg(feature = "extra-attrs")]
37879 let mut extra_attrs = std::collections::HashMap::new();
37880
37881 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
37883 let val = String::from_utf8_lossy(&attr.value);
37884 match attr.key.local_name().as_ref() {
37885 b"autoFormatId" => {
37886 f_auto_format_id = val.parse().ok();
37887 }
37888 b"applyNumberFormats" => {
37889 f_apply_number_formats = Some(val == "true" || val == "1");
37890 }
37891 b"applyBorderFormats" => {
37892 f_apply_border_formats = Some(val == "true" || val == "1");
37893 }
37894 b"applyFontFormats" => {
37895 f_apply_font_formats = Some(val == "true" || val == "1");
37896 }
37897 b"applyPatternFormats" => {
37898 f_apply_pattern_formats = Some(val == "true" || val == "1");
37899 }
37900 b"applyAlignmentFormats" => {
37901 f_apply_alignment_formats = Some(val == "true" || val == "1");
37902 }
37903 b"applyWidthHeightFormats" => {
37904 f_apply_width_height_formats = Some(val == "true" || val == "1");
37905 }
37906 #[cfg(feature = "extra-attrs")]
37907 unknown => {
37908 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
37909 extra_attrs.insert(key, val.into_owned());
37910 }
37911 #[cfg(not(feature = "extra-attrs"))]
37912 _ => {}
37913 }
37914 }
37915
37916 if !is_empty {
37917 let mut buf = Vec::new();
37918 loop {
37919 match reader.read_event_into(&mut buf)? {
37920 Event::End(_) => break,
37921 Event::Eof => break,
37922 _ => {}
37923 }
37924 buf.clear();
37925 }
37926 }
37927
37928 Ok(Self {
37929 auto_format_id: f_auto_format_id,
37930 apply_number_formats: f_apply_number_formats,
37931 apply_border_formats: f_apply_border_formats,
37932 apply_font_formats: f_apply_font_formats,
37933 apply_pattern_formats: f_apply_pattern_formats,
37934 apply_alignment_formats: f_apply_alignment_formats,
37935 apply_width_height_formats: f_apply_width_height_formats,
37936 #[cfg(feature = "extra-attrs")]
37937 extra_attrs,
37938 })
37939 }
37940}
37941
37942impl FromXml for ExternalLink {
37943 fn from_xml<R: BufRead>(
37944 reader: &mut Reader<R>,
37945 start_tag: &BytesStart,
37946 is_empty: bool,
37947 ) -> Result<Self, ParseError> {
37948 let mut f_external_book = None;
37949 let mut f_dde_link = None;
37950 let mut f_ole_link = None;
37951 let mut f_extension_list = None;
37952 #[cfg(feature = "extra-children")]
37953 let mut extra_children = Vec::new();
37954 #[cfg(feature = "extra-children")]
37955 let mut child_idx: usize = 0;
37956
37957 if !is_empty {
37959 let mut buf = Vec::new();
37960 loop {
37961 match reader.read_event_into(&mut buf)? {
37962 Event::Start(e) => {
37963 match e.local_name().as_ref() {
37964 b"externalBook" => {
37965 f_external_book =
37966 Some(Box::new(ExternalBook::from_xml(reader, &e, false)?));
37967 #[cfg(feature = "extra-children")]
37968 {
37969 child_idx += 1;
37970 }
37971 }
37972 b"ddeLink" => {
37973 f_dde_link = Some(Box::new(DdeLink::from_xml(reader, &e, false)?));
37974 #[cfg(feature = "extra-children")]
37975 {
37976 child_idx += 1;
37977 }
37978 }
37979 b"oleLink" => {
37980 f_ole_link = Some(Box::new(OleLink::from_xml(reader, &e, false)?));
37981 #[cfg(feature = "extra-children")]
37982 {
37983 child_idx += 1;
37984 }
37985 }
37986 b"extLst" => {
37987 f_extension_list =
37988 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
37989 #[cfg(feature = "extra-children")]
37990 {
37991 child_idx += 1;
37992 }
37993 }
37994 #[cfg(feature = "extra-children")]
37995 _ => {
37996 let elem = RawXmlElement::from_reader(reader, &e)?;
37998 extra_children.push(PositionedNode::new(
37999 child_idx,
38000 RawXmlNode::Element(elem),
38001 ));
38002 child_idx += 1;
38003 }
38004 #[cfg(not(feature = "extra-children"))]
38005 _ => {
38006 skip_element(reader)?;
38008 }
38009 }
38010 }
38011 Event::Empty(e) => {
38012 match e.local_name().as_ref() {
38013 b"externalBook" => {
38014 f_external_book =
38015 Some(Box::new(ExternalBook::from_xml(reader, &e, true)?));
38016 #[cfg(feature = "extra-children")]
38017 {
38018 child_idx += 1;
38019 }
38020 }
38021 b"ddeLink" => {
38022 f_dde_link = Some(Box::new(DdeLink::from_xml(reader, &e, true)?));
38023 #[cfg(feature = "extra-children")]
38024 {
38025 child_idx += 1;
38026 }
38027 }
38028 b"oleLink" => {
38029 f_ole_link = Some(Box::new(OleLink::from_xml(reader, &e, true)?));
38030 #[cfg(feature = "extra-children")]
38031 {
38032 child_idx += 1;
38033 }
38034 }
38035 b"extLst" => {
38036 f_extension_list =
38037 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
38038 #[cfg(feature = "extra-children")]
38039 {
38040 child_idx += 1;
38041 }
38042 }
38043 #[cfg(feature = "extra-children")]
38044 _ => {
38045 let elem = RawXmlElement::from_empty(&e);
38047 extra_children.push(PositionedNode::new(
38048 child_idx,
38049 RawXmlNode::Element(elem),
38050 ));
38051 child_idx += 1;
38052 }
38053 #[cfg(not(feature = "extra-children"))]
38054 _ => {}
38055 }
38056 }
38057 Event::End(_) => break,
38058 Event::Eof => break,
38059 _ => {}
38060 }
38061 buf.clear();
38062 }
38063 }
38064
38065 Ok(Self {
38066 external_book: f_external_book,
38067 dde_link: f_dde_link,
38068 ole_link: f_ole_link,
38069 extension_list: f_extension_list,
38070 #[cfg(feature = "extra-children")]
38071 extra_children,
38072 })
38073 }
38074}
38075
38076impl FromXml for ExternalBook {
38077 fn from_xml<R: BufRead>(
38078 reader: &mut Reader<R>,
38079 start_tag: &BytesStart,
38080 is_empty: bool,
38081 ) -> Result<Self, ParseError> {
38082 let mut f_id: Option<STRelationshipId> = None;
38083 let mut f_sheet_names = None;
38084 let mut f_defined_names = None;
38085 let mut f_sheet_data_set = None;
38086 #[cfg(feature = "extra-attrs")]
38087 let mut extra_attrs = std::collections::HashMap::new();
38088 #[cfg(feature = "extra-children")]
38089 let mut extra_children = Vec::new();
38090 #[cfg(feature = "extra-children")]
38091 let mut child_idx: usize = 0;
38092
38093 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
38095 let val = String::from_utf8_lossy(&attr.value);
38096 match attr.key.local_name().as_ref() {
38097 b"id" => {
38098 f_id = Some(val.into_owned());
38099 }
38100 #[cfg(feature = "extra-attrs")]
38101 unknown => {
38102 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
38103 extra_attrs.insert(key, val.into_owned());
38104 }
38105 #[cfg(not(feature = "extra-attrs"))]
38106 _ => {}
38107 }
38108 }
38109
38110 if !is_empty {
38112 let mut buf = Vec::new();
38113 loop {
38114 match reader.read_event_into(&mut buf)? {
38115 Event::Start(e) => {
38116 match e.local_name().as_ref() {
38117 b"sheetNames" => {
38118 f_sheet_names = Some(Box::new(CTExternalSheetNames::from_xml(
38119 reader, &e, false,
38120 )?));
38121 #[cfg(feature = "extra-children")]
38122 {
38123 child_idx += 1;
38124 }
38125 }
38126 b"definedNames" => {
38127 f_defined_names = Some(Box::new(CTExternalDefinedNames::from_xml(
38128 reader, &e, false,
38129 )?));
38130 #[cfg(feature = "extra-children")]
38131 {
38132 child_idx += 1;
38133 }
38134 }
38135 b"sheetDataSet" => {
38136 f_sheet_data_set = Some(Box::new(ExternalSheetDataSet::from_xml(
38137 reader, &e, false,
38138 )?));
38139 #[cfg(feature = "extra-children")]
38140 {
38141 child_idx += 1;
38142 }
38143 }
38144 #[cfg(feature = "extra-children")]
38145 _ => {
38146 let elem = RawXmlElement::from_reader(reader, &e)?;
38148 extra_children.push(PositionedNode::new(
38149 child_idx,
38150 RawXmlNode::Element(elem),
38151 ));
38152 child_idx += 1;
38153 }
38154 #[cfg(not(feature = "extra-children"))]
38155 _ => {
38156 skip_element(reader)?;
38158 }
38159 }
38160 }
38161 Event::Empty(e) => {
38162 match e.local_name().as_ref() {
38163 b"sheetNames" => {
38164 f_sheet_names = Some(Box::new(CTExternalSheetNames::from_xml(
38165 reader, &e, true,
38166 )?));
38167 #[cfg(feature = "extra-children")]
38168 {
38169 child_idx += 1;
38170 }
38171 }
38172 b"definedNames" => {
38173 f_defined_names = Some(Box::new(CTExternalDefinedNames::from_xml(
38174 reader, &e, true,
38175 )?));
38176 #[cfg(feature = "extra-children")]
38177 {
38178 child_idx += 1;
38179 }
38180 }
38181 b"sheetDataSet" => {
38182 f_sheet_data_set = Some(Box::new(ExternalSheetDataSet::from_xml(
38183 reader, &e, true,
38184 )?));
38185 #[cfg(feature = "extra-children")]
38186 {
38187 child_idx += 1;
38188 }
38189 }
38190 #[cfg(feature = "extra-children")]
38191 _ => {
38192 let elem = RawXmlElement::from_empty(&e);
38194 extra_children.push(PositionedNode::new(
38195 child_idx,
38196 RawXmlNode::Element(elem),
38197 ));
38198 child_idx += 1;
38199 }
38200 #[cfg(not(feature = "extra-children"))]
38201 _ => {}
38202 }
38203 }
38204 Event::End(_) => break,
38205 Event::Eof => break,
38206 _ => {}
38207 }
38208 buf.clear();
38209 }
38210 }
38211
38212 Ok(Self {
38213 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
38214 sheet_names: f_sheet_names,
38215 defined_names: f_defined_names,
38216 sheet_data_set: f_sheet_data_set,
38217 #[cfg(feature = "extra-attrs")]
38218 extra_attrs,
38219 #[cfg(feature = "extra-children")]
38220 extra_children,
38221 })
38222 }
38223}
38224
38225impl FromXml for CTExternalSheetNames {
38226 fn from_xml<R: BufRead>(
38227 reader: &mut Reader<R>,
38228 start_tag: &BytesStart,
38229 is_empty: bool,
38230 ) -> Result<Self, ParseError> {
38231 let mut f_sheet_name = Vec::new();
38232 #[cfg(feature = "extra-children")]
38233 let mut extra_children = Vec::new();
38234 #[cfg(feature = "extra-children")]
38235 let mut child_idx: usize = 0;
38236
38237 if !is_empty {
38239 let mut buf = Vec::new();
38240 loop {
38241 match reader.read_event_into(&mut buf)? {
38242 Event::Start(e) => {
38243 match e.local_name().as_ref() {
38244 b"sheetName" => {
38245 f_sheet_name
38246 .push(CTExternalSheetName::from_xml(reader, &e, false)?);
38247 #[cfg(feature = "extra-children")]
38248 {
38249 child_idx += 1;
38250 }
38251 }
38252 #[cfg(feature = "extra-children")]
38253 _ => {
38254 let elem = RawXmlElement::from_reader(reader, &e)?;
38256 extra_children.push(PositionedNode::new(
38257 child_idx,
38258 RawXmlNode::Element(elem),
38259 ));
38260 child_idx += 1;
38261 }
38262 #[cfg(not(feature = "extra-children"))]
38263 _ => {
38264 skip_element(reader)?;
38266 }
38267 }
38268 }
38269 Event::Empty(e) => {
38270 match e.local_name().as_ref() {
38271 b"sheetName" => {
38272 f_sheet_name.push(CTExternalSheetName::from_xml(reader, &e, true)?);
38273 #[cfg(feature = "extra-children")]
38274 {
38275 child_idx += 1;
38276 }
38277 }
38278 #[cfg(feature = "extra-children")]
38279 _ => {
38280 let elem = RawXmlElement::from_empty(&e);
38282 extra_children.push(PositionedNode::new(
38283 child_idx,
38284 RawXmlNode::Element(elem),
38285 ));
38286 child_idx += 1;
38287 }
38288 #[cfg(not(feature = "extra-children"))]
38289 _ => {}
38290 }
38291 }
38292 Event::End(_) => break,
38293 Event::Eof => break,
38294 _ => {}
38295 }
38296 buf.clear();
38297 }
38298 }
38299
38300 Ok(Self {
38301 sheet_name: f_sheet_name,
38302 #[cfg(feature = "extra-children")]
38303 extra_children,
38304 })
38305 }
38306}
38307
38308impl FromXml for CTExternalSheetName {
38309 fn from_xml<R: BufRead>(
38310 reader: &mut Reader<R>,
38311 start_tag: &BytesStart,
38312 is_empty: bool,
38313 ) -> Result<Self, ParseError> {
38314 let mut f_value = None;
38315 #[cfg(feature = "extra-attrs")]
38316 let mut extra_attrs = std::collections::HashMap::new();
38317
38318 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
38320 let val = String::from_utf8_lossy(&attr.value);
38321 match attr.key.local_name().as_ref() {
38322 b"val" => {
38323 f_value = Some(val.into_owned());
38324 }
38325 #[cfg(feature = "extra-attrs")]
38326 unknown => {
38327 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
38328 extra_attrs.insert(key, val.into_owned());
38329 }
38330 #[cfg(not(feature = "extra-attrs"))]
38331 _ => {}
38332 }
38333 }
38334
38335 if !is_empty {
38336 let mut buf = Vec::new();
38337 loop {
38338 match reader.read_event_into(&mut buf)? {
38339 Event::End(_) => break,
38340 Event::Eof => break,
38341 _ => {}
38342 }
38343 buf.clear();
38344 }
38345 }
38346
38347 Ok(Self {
38348 value: f_value,
38349 #[cfg(feature = "extra-attrs")]
38350 extra_attrs,
38351 })
38352 }
38353}
38354
38355impl FromXml for CTExternalDefinedNames {
38356 fn from_xml<R: BufRead>(
38357 reader: &mut Reader<R>,
38358 start_tag: &BytesStart,
38359 is_empty: bool,
38360 ) -> Result<Self, ParseError> {
38361 let mut f_defined_name = Vec::new();
38362 #[cfg(feature = "extra-children")]
38363 let mut extra_children = Vec::new();
38364 #[cfg(feature = "extra-children")]
38365 let mut child_idx: usize = 0;
38366
38367 if !is_empty {
38369 let mut buf = Vec::new();
38370 loop {
38371 match reader.read_event_into(&mut buf)? {
38372 Event::Start(e) => {
38373 match e.local_name().as_ref() {
38374 b"definedName" => {
38375 f_defined_name
38376 .push(CTExternalDefinedName::from_xml(reader, &e, false)?);
38377 #[cfg(feature = "extra-children")]
38378 {
38379 child_idx += 1;
38380 }
38381 }
38382 #[cfg(feature = "extra-children")]
38383 _ => {
38384 let elem = RawXmlElement::from_reader(reader, &e)?;
38386 extra_children.push(PositionedNode::new(
38387 child_idx,
38388 RawXmlNode::Element(elem),
38389 ));
38390 child_idx += 1;
38391 }
38392 #[cfg(not(feature = "extra-children"))]
38393 _ => {
38394 skip_element(reader)?;
38396 }
38397 }
38398 }
38399 Event::Empty(e) => {
38400 match e.local_name().as_ref() {
38401 b"definedName" => {
38402 f_defined_name
38403 .push(CTExternalDefinedName::from_xml(reader, &e, true)?);
38404 #[cfg(feature = "extra-children")]
38405 {
38406 child_idx += 1;
38407 }
38408 }
38409 #[cfg(feature = "extra-children")]
38410 _ => {
38411 let elem = RawXmlElement::from_empty(&e);
38413 extra_children.push(PositionedNode::new(
38414 child_idx,
38415 RawXmlNode::Element(elem),
38416 ));
38417 child_idx += 1;
38418 }
38419 #[cfg(not(feature = "extra-children"))]
38420 _ => {}
38421 }
38422 }
38423 Event::End(_) => break,
38424 Event::Eof => break,
38425 _ => {}
38426 }
38427 buf.clear();
38428 }
38429 }
38430
38431 Ok(Self {
38432 defined_name: f_defined_name,
38433 #[cfg(feature = "extra-children")]
38434 extra_children,
38435 })
38436 }
38437}
38438
38439impl FromXml for CTExternalDefinedName {
38440 fn from_xml<R: BufRead>(
38441 reader: &mut Reader<R>,
38442 start_tag: &BytesStart,
38443 is_empty: bool,
38444 ) -> Result<Self, ParseError> {
38445 let mut f_name: Option<XmlString> = None;
38446 let mut f_refers_to = None;
38447 let mut f_sheet_id = None;
38448 #[cfg(feature = "extra-attrs")]
38449 let mut extra_attrs = std::collections::HashMap::new();
38450
38451 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
38453 let val = String::from_utf8_lossy(&attr.value);
38454 match attr.key.local_name().as_ref() {
38455 b"name" => {
38456 f_name = Some(val.into_owned());
38457 }
38458 b"refersTo" => {
38459 f_refers_to = Some(val.into_owned());
38460 }
38461 b"sheetId" => {
38462 f_sheet_id = val.parse().ok();
38463 }
38464 #[cfg(feature = "extra-attrs")]
38465 unknown => {
38466 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
38467 extra_attrs.insert(key, val.into_owned());
38468 }
38469 #[cfg(not(feature = "extra-attrs"))]
38470 _ => {}
38471 }
38472 }
38473
38474 if !is_empty {
38475 let mut buf = Vec::new();
38476 loop {
38477 match reader.read_event_into(&mut buf)? {
38478 Event::End(_) => break,
38479 Event::Eof => break,
38480 _ => {}
38481 }
38482 buf.clear();
38483 }
38484 }
38485
38486 Ok(Self {
38487 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
38488 refers_to: f_refers_to,
38489 sheet_id: f_sheet_id,
38490 #[cfg(feature = "extra-attrs")]
38491 extra_attrs,
38492 })
38493 }
38494}
38495
38496impl FromXml for ExternalSheetDataSet {
38497 fn from_xml<R: BufRead>(
38498 reader: &mut Reader<R>,
38499 start_tag: &BytesStart,
38500 is_empty: bool,
38501 ) -> Result<Self, ParseError> {
38502 let mut f_sheet_data = Vec::new();
38503 #[cfg(feature = "extra-children")]
38504 let mut extra_children = Vec::new();
38505 #[cfg(feature = "extra-children")]
38506 let mut child_idx: usize = 0;
38507
38508 if !is_empty {
38510 let mut buf = Vec::new();
38511 loop {
38512 match reader.read_event_into(&mut buf)? {
38513 Event::Start(e) => {
38514 match e.local_name().as_ref() {
38515 b"sheetData" => {
38516 f_sheet_data.push(ExternalSheetData::from_xml(reader, &e, false)?);
38517 #[cfg(feature = "extra-children")]
38518 {
38519 child_idx += 1;
38520 }
38521 }
38522 #[cfg(feature = "extra-children")]
38523 _ => {
38524 let elem = RawXmlElement::from_reader(reader, &e)?;
38526 extra_children.push(PositionedNode::new(
38527 child_idx,
38528 RawXmlNode::Element(elem),
38529 ));
38530 child_idx += 1;
38531 }
38532 #[cfg(not(feature = "extra-children"))]
38533 _ => {
38534 skip_element(reader)?;
38536 }
38537 }
38538 }
38539 Event::Empty(e) => {
38540 match e.local_name().as_ref() {
38541 b"sheetData" => {
38542 f_sheet_data.push(ExternalSheetData::from_xml(reader, &e, true)?);
38543 #[cfg(feature = "extra-children")]
38544 {
38545 child_idx += 1;
38546 }
38547 }
38548 #[cfg(feature = "extra-children")]
38549 _ => {
38550 let elem = RawXmlElement::from_empty(&e);
38552 extra_children.push(PositionedNode::new(
38553 child_idx,
38554 RawXmlNode::Element(elem),
38555 ));
38556 child_idx += 1;
38557 }
38558 #[cfg(not(feature = "extra-children"))]
38559 _ => {}
38560 }
38561 }
38562 Event::End(_) => break,
38563 Event::Eof => break,
38564 _ => {}
38565 }
38566 buf.clear();
38567 }
38568 }
38569
38570 Ok(Self {
38571 sheet_data: f_sheet_data,
38572 #[cfg(feature = "extra-children")]
38573 extra_children,
38574 })
38575 }
38576}
38577
38578impl FromXml for ExternalSheetData {
38579 fn from_xml<R: BufRead>(
38580 reader: &mut Reader<R>,
38581 start_tag: &BytesStart,
38582 is_empty: bool,
38583 ) -> Result<Self, ParseError> {
38584 let mut f_sheet_id: Option<u32> = None;
38585 let mut f_refresh_error = None;
38586 let mut f_row = Vec::new();
38587 #[cfg(feature = "extra-attrs")]
38588 let mut extra_attrs = std::collections::HashMap::new();
38589 #[cfg(feature = "extra-children")]
38590 let mut extra_children = Vec::new();
38591 #[cfg(feature = "extra-children")]
38592 let mut child_idx: usize = 0;
38593
38594 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
38596 let val = String::from_utf8_lossy(&attr.value);
38597 match attr.key.local_name().as_ref() {
38598 b"sheetId" => {
38599 f_sheet_id = val.parse().ok();
38600 }
38601 b"refreshError" => {
38602 f_refresh_error = Some(val == "true" || val == "1");
38603 }
38604 #[cfg(feature = "extra-attrs")]
38605 unknown => {
38606 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
38607 extra_attrs.insert(key, val.into_owned());
38608 }
38609 #[cfg(not(feature = "extra-attrs"))]
38610 _ => {}
38611 }
38612 }
38613
38614 if !is_empty {
38616 let mut buf = Vec::new();
38617 loop {
38618 match reader.read_event_into(&mut buf)? {
38619 Event::Start(e) => {
38620 match e.local_name().as_ref() {
38621 b"row" => {
38622 f_row.push(ExternalRow::from_xml(reader, &e, false)?);
38623 #[cfg(feature = "extra-children")]
38624 {
38625 child_idx += 1;
38626 }
38627 }
38628 #[cfg(feature = "extra-children")]
38629 _ => {
38630 let elem = RawXmlElement::from_reader(reader, &e)?;
38632 extra_children.push(PositionedNode::new(
38633 child_idx,
38634 RawXmlNode::Element(elem),
38635 ));
38636 child_idx += 1;
38637 }
38638 #[cfg(not(feature = "extra-children"))]
38639 _ => {
38640 skip_element(reader)?;
38642 }
38643 }
38644 }
38645 Event::Empty(e) => {
38646 match e.local_name().as_ref() {
38647 b"row" => {
38648 f_row.push(ExternalRow::from_xml(reader, &e, true)?);
38649 #[cfg(feature = "extra-children")]
38650 {
38651 child_idx += 1;
38652 }
38653 }
38654 #[cfg(feature = "extra-children")]
38655 _ => {
38656 let elem = RawXmlElement::from_empty(&e);
38658 extra_children.push(PositionedNode::new(
38659 child_idx,
38660 RawXmlNode::Element(elem),
38661 ));
38662 child_idx += 1;
38663 }
38664 #[cfg(not(feature = "extra-children"))]
38665 _ => {}
38666 }
38667 }
38668 Event::End(_) => break,
38669 Event::Eof => break,
38670 _ => {}
38671 }
38672 buf.clear();
38673 }
38674 }
38675
38676 Ok(Self {
38677 sheet_id: f_sheet_id
38678 .ok_or_else(|| ParseError::MissingAttribute("sheetId".to_string()))?,
38679 refresh_error: f_refresh_error,
38680 row: f_row,
38681 #[cfg(feature = "extra-attrs")]
38682 extra_attrs,
38683 #[cfg(feature = "extra-children")]
38684 extra_children,
38685 })
38686 }
38687}
38688
38689impl FromXml for ExternalRow {
38690 fn from_xml<R: BufRead>(
38691 reader: &mut Reader<R>,
38692 start_tag: &BytesStart,
38693 is_empty: bool,
38694 ) -> Result<Self, ParseError> {
38695 let mut f_reference: Option<u32> = None;
38696 let mut f_cell = Vec::new();
38697 #[cfg(feature = "extra-attrs")]
38698 let mut extra_attrs = std::collections::HashMap::new();
38699 #[cfg(feature = "extra-children")]
38700 let mut extra_children = Vec::new();
38701 #[cfg(feature = "extra-children")]
38702 let mut child_idx: usize = 0;
38703
38704 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
38706 let val = String::from_utf8_lossy(&attr.value);
38707 match attr.key.local_name().as_ref() {
38708 b"r" => {
38709 f_reference = val.parse().ok();
38710 }
38711 #[cfg(feature = "extra-attrs")]
38712 unknown => {
38713 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
38714 extra_attrs.insert(key, val.into_owned());
38715 }
38716 #[cfg(not(feature = "extra-attrs"))]
38717 _ => {}
38718 }
38719 }
38720
38721 if !is_empty {
38723 let mut buf = Vec::new();
38724 loop {
38725 match reader.read_event_into(&mut buf)? {
38726 Event::Start(e) => {
38727 match e.local_name().as_ref() {
38728 b"cell" => {
38729 f_cell.push(ExternalCell::from_xml(reader, &e, false)?);
38730 #[cfg(feature = "extra-children")]
38731 {
38732 child_idx += 1;
38733 }
38734 }
38735 #[cfg(feature = "extra-children")]
38736 _ => {
38737 let elem = RawXmlElement::from_reader(reader, &e)?;
38739 extra_children.push(PositionedNode::new(
38740 child_idx,
38741 RawXmlNode::Element(elem),
38742 ));
38743 child_idx += 1;
38744 }
38745 #[cfg(not(feature = "extra-children"))]
38746 _ => {
38747 skip_element(reader)?;
38749 }
38750 }
38751 }
38752 Event::Empty(e) => {
38753 match e.local_name().as_ref() {
38754 b"cell" => {
38755 f_cell.push(ExternalCell::from_xml(reader, &e, true)?);
38756 #[cfg(feature = "extra-children")]
38757 {
38758 child_idx += 1;
38759 }
38760 }
38761 #[cfg(feature = "extra-children")]
38762 _ => {
38763 let elem = RawXmlElement::from_empty(&e);
38765 extra_children.push(PositionedNode::new(
38766 child_idx,
38767 RawXmlNode::Element(elem),
38768 ));
38769 child_idx += 1;
38770 }
38771 #[cfg(not(feature = "extra-children"))]
38772 _ => {}
38773 }
38774 }
38775 Event::End(_) => break,
38776 Event::Eof => break,
38777 _ => {}
38778 }
38779 buf.clear();
38780 }
38781 }
38782
38783 Ok(Self {
38784 reference: f_reference.ok_or_else(|| ParseError::MissingAttribute("r".to_string()))?,
38785 cell: f_cell,
38786 #[cfg(feature = "extra-attrs")]
38787 extra_attrs,
38788 #[cfg(feature = "extra-children")]
38789 extra_children,
38790 })
38791 }
38792}
38793
38794impl FromXml for ExternalCell {
38795 fn from_xml<R: BufRead>(
38796 reader: &mut Reader<R>,
38797 start_tag: &BytesStart,
38798 is_empty: bool,
38799 ) -> Result<Self, ParseError> {
38800 let mut f_reference = None;
38801 let mut f_cell_type = None;
38802 let mut f_vm = None;
38803 let mut f_value = None;
38804 #[cfg(feature = "extra-attrs")]
38805 let mut extra_attrs = std::collections::HashMap::new();
38806 #[cfg(feature = "extra-children")]
38807 let mut extra_children = Vec::new();
38808 #[cfg(feature = "extra-children")]
38809 let mut child_idx: usize = 0;
38810
38811 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
38813 let val = String::from_utf8_lossy(&attr.value);
38814 match attr.key.local_name().as_ref() {
38815 b"r" => {
38816 f_reference = Some(val.into_owned());
38817 }
38818 b"t" => {
38819 f_cell_type = val.parse().ok();
38820 }
38821 b"vm" => {
38822 f_vm = val.parse().ok();
38823 }
38824 #[cfg(feature = "extra-attrs")]
38825 unknown => {
38826 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
38827 extra_attrs.insert(key, val.into_owned());
38828 }
38829 #[cfg(not(feature = "extra-attrs"))]
38830 _ => {}
38831 }
38832 }
38833
38834 if !is_empty {
38836 let mut buf = Vec::new();
38837 loop {
38838 match reader.read_event_into(&mut buf)? {
38839 Event::Start(e) => {
38840 match e.local_name().as_ref() {
38841 b"v" => {
38842 f_value = Some(read_text_content(reader)?);
38843 #[cfg(feature = "extra-children")]
38844 {
38845 child_idx += 1;
38846 }
38847 }
38848 #[cfg(feature = "extra-children")]
38849 _ => {
38850 let elem = RawXmlElement::from_reader(reader, &e)?;
38852 extra_children.push(PositionedNode::new(
38853 child_idx,
38854 RawXmlNode::Element(elem),
38855 ));
38856 child_idx += 1;
38857 }
38858 #[cfg(not(feature = "extra-children"))]
38859 _ => {
38860 skip_element(reader)?;
38862 }
38863 }
38864 }
38865 Event::Empty(e) => {
38866 match e.local_name().as_ref() {
38867 b"v" => {
38868 f_value = Some(String::new());
38869 #[cfg(feature = "extra-children")]
38870 {
38871 child_idx += 1;
38872 }
38873 }
38874 #[cfg(feature = "extra-children")]
38875 _ => {
38876 let elem = RawXmlElement::from_empty(&e);
38878 extra_children.push(PositionedNode::new(
38879 child_idx,
38880 RawXmlNode::Element(elem),
38881 ));
38882 child_idx += 1;
38883 }
38884 #[cfg(not(feature = "extra-children"))]
38885 _ => {}
38886 }
38887 }
38888 Event::End(_) => break,
38889 Event::Eof => break,
38890 _ => {}
38891 }
38892 buf.clear();
38893 }
38894 }
38895
38896 Ok(Self {
38897 reference: f_reference,
38898 cell_type: f_cell_type,
38899 vm: f_vm,
38900 value: f_value,
38901 #[cfg(feature = "extra-attrs")]
38902 extra_attrs,
38903 #[cfg(feature = "extra-children")]
38904 extra_children,
38905 })
38906 }
38907}
38908
38909impl FromXml for DdeLink {
38910 fn from_xml<R: BufRead>(
38911 reader: &mut Reader<R>,
38912 start_tag: &BytesStart,
38913 is_empty: bool,
38914 ) -> Result<Self, ParseError> {
38915 let mut f_dde_service: Option<XmlString> = None;
38916 let mut f_dde_topic: Option<XmlString> = None;
38917 let mut f_dde_items = None;
38918 #[cfg(feature = "extra-attrs")]
38919 let mut extra_attrs = std::collections::HashMap::new();
38920 #[cfg(feature = "extra-children")]
38921 let mut extra_children = Vec::new();
38922 #[cfg(feature = "extra-children")]
38923 let mut child_idx: usize = 0;
38924
38925 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
38927 let val = String::from_utf8_lossy(&attr.value);
38928 match attr.key.local_name().as_ref() {
38929 b"ddeService" => {
38930 f_dde_service = Some(val.into_owned());
38931 }
38932 b"ddeTopic" => {
38933 f_dde_topic = Some(val.into_owned());
38934 }
38935 #[cfg(feature = "extra-attrs")]
38936 unknown => {
38937 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
38938 extra_attrs.insert(key, val.into_owned());
38939 }
38940 #[cfg(not(feature = "extra-attrs"))]
38941 _ => {}
38942 }
38943 }
38944
38945 if !is_empty {
38947 let mut buf = Vec::new();
38948 loop {
38949 match reader.read_event_into(&mut buf)? {
38950 Event::Start(e) => {
38951 match e.local_name().as_ref() {
38952 b"ddeItems" => {
38953 f_dde_items =
38954 Some(Box::new(DdeItems::from_xml(reader, &e, false)?));
38955 #[cfg(feature = "extra-children")]
38956 {
38957 child_idx += 1;
38958 }
38959 }
38960 #[cfg(feature = "extra-children")]
38961 _ => {
38962 let elem = RawXmlElement::from_reader(reader, &e)?;
38964 extra_children.push(PositionedNode::new(
38965 child_idx,
38966 RawXmlNode::Element(elem),
38967 ));
38968 child_idx += 1;
38969 }
38970 #[cfg(not(feature = "extra-children"))]
38971 _ => {
38972 skip_element(reader)?;
38974 }
38975 }
38976 }
38977 Event::Empty(e) => {
38978 match e.local_name().as_ref() {
38979 b"ddeItems" => {
38980 f_dde_items = Some(Box::new(DdeItems::from_xml(reader, &e, true)?));
38981 #[cfg(feature = "extra-children")]
38982 {
38983 child_idx += 1;
38984 }
38985 }
38986 #[cfg(feature = "extra-children")]
38987 _ => {
38988 let elem = RawXmlElement::from_empty(&e);
38990 extra_children.push(PositionedNode::new(
38991 child_idx,
38992 RawXmlNode::Element(elem),
38993 ));
38994 child_idx += 1;
38995 }
38996 #[cfg(not(feature = "extra-children"))]
38997 _ => {}
38998 }
38999 }
39000 Event::End(_) => break,
39001 Event::Eof => break,
39002 _ => {}
39003 }
39004 buf.clear();
39005 }
39006 }
39007
39008 Ok(Self {
39009 dde_service: f_dde_service
39010 .ok_or_else(|| ParseError::MissingAttribute("ddeService".to_string()))?,
39011 dde_topic: f_dde_topic
39012 .ok_or_else(|| ParseError::MissingAttribute("ddeTopic".to_string()))?,
39013 dde_items: f_dde_items,
39014 #[cfg(feature = "extra-attrs")]
39015 extra_attrs,
39016 #[cfg(feature = "extra-children")]
39017 extra_children,
39018 })
39019 }
39020}
39021
39022impl FromXml for DdeItems {
39023 fn from_xml<R: BufRead>(
39024 reader: &mut Reader<R>,
39025 start_tag: &BytesStart,
39026 is_empty: bool,
39027 ) -> Result<Self, ParseError> {
39028 let mut f_dde_item = Vec::new();
39029 #[cfg(feature = "extra-children")]
39030 let mut extra_children = Vec::new();
39031 #[cfg(feature = "extra-children")]
39032 let mut child_idx: usize = 0;
39033
39034 if !is_empty {
39036 let mut buf = Vec::new();
39037 loop {
39038 match reader.read_event_into(&mut buf)? {
39039 Event::Start(e) => {
39040 match e.local_name().as_ref() {
39041 b"ddeItem" => {
39042 f_dde_item.push(DdeItem::from_xml(reader, &e, false)?);
39043 #[cfg(feature = "extra-children")]
39044 {
39045 child_idx += 1;
39046 }
39047 }
39048 #[cfg(feature = "extra-children")]
39049 _ => {
39050 let elem = RawXmlElement::from_reader(reader, &e)?;
39052 extra_children.push(PositionedNode::new(
39053 child_idx,
39054 RawXmlNode::Element(elem),
39055 ));
39056 child_idx += 1;
39057 }
39058 #[cfg(not(feature = "extra-children"))]
39059 _ => {
39060 skip_element(reader)?;
39062 }
39063 }
39064 }
39065 Event::Empty(e) => {
39066 match e.local_name().as_ref() {
39067 b"ddeItem" => {
39068 f_dde_item.push(DdeItem::from_xml(reader, &e, true)?);
39069 #[cfg(feature = "extra-children")]
39070 {
39071 child_idx += 1;
39072 }
39073 }
39074 #[cfg(feature = "extra-children")]
39075 _ => {
39076 let elem = RawXmlElement::from_empty(&e);
39078 extra_children.push(PositionedNode::new(
39079 child_idx,
39080 RawXmlNode::Element(elem),
39081 ));
39082 child_idx += 1;
39083 }
39084 #[cfg(not(feature = "extra-children"))]
39085 _ => {}
39086 }
39087 }
39088 Event::End(_) => break,
39089 Event::Eof => break,
39090 _ => {}
39091 }
39092 buf.clear();
39093 }
39094 }
39095
39096 Ok(Self {
39097 dde_item: f_dde_item,
39098 #[cfg(feature = "extra-children")]
39099 extra_children,
39100 })
39101 }
39102}
39103
39104impl FromXml for DdeItem {
39105 fn from_xml<R: BufRead>(
39106 reader: &mut Reader<R>,
39107 start_tag: &BytesStart,
39108 is_empty: bool,
39109 ) -> Result<Self, ParseError> {
39110 let mut f_name = None;
39111 let mut f_ole = None;
39112 let mut f_advise = None;
39113 let mut f_prefer_pic = None;
39114 let mut f_values = None;
39115 #[cfg(feature = "extra-attrs")]
39116 let mut extra_attrs = std::collections::HashMap::new();
39117 #[cfg(feature = "extra-children")]
39118 let mut extra_children = Vec::new();
39119 #[cfg(feature = "extra-children")]
39120 let mut child_idx: usize = 0;
39121
39122 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
39124 let val = String::from_utf8_lossy(&attr.value);
39125 match attr.key.local_name().as_ref() {
39126 b"name" => {
39127 f_name = Some(val.into_owned());
39128 }
39129 b"ole" => {
39130 f_ole = Some(val == "true" || val == "1");
39131 }
39132 b"advise" => {
39133 f_advise = Some(val == "true" || val == "1");
39134 }
39135 b"preferPic" => {
39136 f_prefer_pic = Some(val == "true" || val == "1");
39137 }
39138 #[cfg(feature = "extra-attrs")]
39139 unknown => {
39140 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
39141 extra_attrs.insert(key, val.into_owned());
39142 }
39143 #[cfg(not(feature = "extra-attrs"))]
39144 _ => {}
39145 }
39146 }
39147
39148 if !is_empty {
39150 let mut buf = Vec::new();
39151 loop {
39152 match reader.read_event_into(&mut buf)? {
39153 Event::Start(e) => {
39154 match e.local_name().as_ref() {
39155 b"values" => {
39156 f_values =
39157 Some(Box::new(CTDdeValues::from_xml(reader, &e, false)?));
39158 #[cfg(feature = "extra-children")]
39159 {
39160 child_idx += 1;
39161 }
39162 }
39163 #[cfg(feature = "extra-children")]
39164 _ => {
39165 let elem = RawXmlElement::from_reader(reader, &e)?;
39167 extra_children.push(PositionedNode::new(
39168 child_idx,
39169 RawXmlNode::Element(elem),
39170 ));
39171 child_idx += 1;
39172 }
39173 #[cfg(not(feature = "extra-children"))]
39174 _ => {
39175 skip_element(reader)?;
39177 }
39178 }
39179 }
39180 Event::Empty(e) => {
39181 match e.local_name().as_ref() {
39182 b"values" => {
39183 f_values = Some(Box::new(CTDdeValues::from_xml(reader, &e, true)?));
39184 #[cfg(feature = "extra-children")]
39185 {
39186 child_idx += 1;
39187 }
39188 }
39189 #[cfg(feature = "extra-children")]
39190 _ => {
39191 let elem = RawXmlElement::from_empty(&e);
39193 extra_children.push(PositionedNode::new(
39194 child_idx,
39195 RawXmlNode::Element(elem),
39196 ));
39197 child_idx += 1;
39198 }
39199 #[cfg(not(feature = "extra-children"))]
39200 _ => {}
39201 }
39202 }
39203 Event::End(_) => break,
39204 Event::Eof => break,
39205 _ => {}
39206 }
39207 buf.clear();
39208 }
39209 }
39210
39211 Ok(Self {
39212 name: f_name,
39213 ole: f_ole,
39214 advise: f_advise,
39215 prefer_pic: f_prefer_pic,
39216 values: f_values,
39217 #[cfg(feature = "extra-attrs")]
39218 extra_attrs,
39219 #[cfg(feature = "extra-children")]
39220 extra_children,
39221 })
39222 }
39223}
39224
39225impl FromXml for CTDdeValues {
39226 fn from_xml<R: BufRead>(
39227 reader: &mut Reader<R>,
39228 start_tag: &BytesStart,
39229 is_empty: bool,
39230 ) -> Result<Self, ParseError> {
39231 let mut f_rows = None;
39232 let mut f_cols = None;
39233 let mut f_value = Vec::new();
39234 #[cfg(feature = "extra-attrs")]
39235 let mut extra_attrs = std::collections::HashMap::new();
39236 #[cfg(feature = "extra-children")]
39237 let mut extra_children = Vec::new();
39238 #[cfg(feature = "extra-children")]
39239 let mut child_idx: usize = 0;
39240
39241 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
39243 let val = String::from_utf8_lossy(&attr.value);
39244 match attr.key.local_name().as_ref() {
39245 b"rows" => {
39246 f_rows = val.parse().ok();
39247 }
39248 b"cols" => {
39249 f_cols = val.parse().ok();
39250 }
39251 #[cfg(feature = "extra-attrs")]
39252 unknown => {
39253 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
39254 extra_attrs.insert(key, val.into_owned());
39255 }
39256 #[cfg(not(feature = "extra-attrs"))]
39257 _ => {}
39258 }
39259 }
39260
39261 if !is_empty {
39263 let mut buf = Vec::new();
39264 loop {
39265 match reader.read_event_into(&mut buf)? {
39266 Event::Start(e) => {
39267 match e.local_name().as_ref() {
39268 b"value" => {
39269 f_value.push(CTDdeValue::from_xml(reader, &e, false)?);
39270 #[cfg(feature = "extra-children")]
39271 {
39272 child_idx += 1;
39273 }
39274 }
39275 #[cfg(feature = "extra-children")]
39276 _ => {
39277 let elem = RawXmlElement::from_reader(reader, &e)?;
39279 extra_children.push(PositionedNode::new(
39280 child_idx,
39281 RawXmlNode::Element(elem),
39282 ));
39283 child_idx += 1;
39284 }
39285 #[cfg(not(feature = "extra-children"))]
39286 _ => {
39287 skip_element(reader)?;
39289 }
39290 }
39291 }
39292 Event::Empty(e) => {
39293 match e.local_name().as_ref() {
39294 b"value" => {
39295 f_value.push(CTDdeValue::from_xml(reader, &e, true)?);
39296 #[cfg(feature = "extra-children")]
39297 {
39298 child_idx += 1;
39299 }
39300 }
39301 #[cfg(feature = "extra-children")]
39302 _ => {
39303 let elem = RawXmlElement::from_empty(&e);
39305 extra_children.push(PositionedNode::new(
39306 child_idx,
39307 RawXmlNode::Element(elem),
39308 ));
39309 child_idx += 1;
39310 }
39311 #[cfg(not(feature = "extra-children"))]
39312 _ => {}
39313 }
39314 }
39315 Event::End(_) => break,
39316 Event::Eof => break,
39317 _ => {}
39318 }
39319 buf.clear();
39320 }
39321 }
39322
39323 Ok(Self {
39324 rows: f_rows,
39325 cols: f_cols,
39326 value: f_value,
39327 #[cfg(feature = "extra-attrs")]
39328 extra_attrs,
39329 #[cfg(feature = "extra-children")]
39330 extra_children,
39331 })
39332 }
39333}
39334
39335impl FromXml for CTDdeValue {
39336 fn from_xml<R: BufRead>(
39337 reader: &mut Reader<R>,
39338 start_tag: &BytesStart,
39339 is_empty: bool,
39340 ) -> Result<Self, ParseError> {
39341 let mut f_cell_type = None;
39342 let mut f_value: Option<XmlString> = None;
39343 #[cfg(feature = "extra-attrs")]
39344 let mut extra_attrs = std::collections::HashMap::new();
39345 #[cfg(feature = "extra-children")]
39346 let mut extra_children = Vec::new();
39347 #[cfg(feature = "extra-children")]
39348 let mut child_idx: usize = 0;
39349
39350 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
39352 let val = String::from_utf8_lossy(&attr.value);
39353 match attr.key.local_name().as_ref() {
39354 b"t" => {
39355 f_cell_type = val.parse().ok();
39356 }
39357 #[cfg(feature = "extra-attrs")]
39358 unknown => {
39359 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
39360 extra_attrs.insert(key, val.into_owned());
39361 }
39362 #[cfg(not(feature = "extra-attrs"))]
39363 _ => {}
39364 }
39365 }
39366
39367 if !is_empty {
39369 let mut buf = Vec::new();
39370 loop {
39371 match reader.read_event_into(&mut buf)? {
39372 Event::Start(e) => {
39373 match e.local_name().as_ref() {
39374 b"val" => {
39375 f_value = Some(read_text_content(reader)?);
39376 #[cfg(feature = "extra-children")]
39377 {
39378 child_idx += 1;
39379 }
39380 }
39381 #[cfg(feature = "extra-children")]
39382 _ => {
39383 let elem = RawXmlElement::from_reader(reader, &e)?;
39385 extra_children.push(PositionedNode::new(
39386 child_idx,
39387 RawXmlNode::Element(elem),
39388 ));
39389 child_idx += 1;
39390 }
39391 #[cfg(not(feature = "extra-children"))]
39392 _ => {
39393 skip_element(reader)?;
39395 }
39396 }
39397 }
39398 Event::Empty(e) => {
39399 match e.local_name().as_ref() {
39400 b"val" => {
39401 f_value = Some(String::new());
39402 #[cfg(feature = "extra-children")]
39403 {
39404 child_idx += 1;
39405 }
39406 }
39407 #[cfg(feature = "extra-children")]
39408 _ => {
39409 let elem = RawXmlElement::from_empty(&e);
39411 extra_children.push(PositionedNode::new(
39412 child_idx,
39413 RawXmlNode::Element(elem),
39414 ));
39415 child_idx += 1;
39416 }
39417 #[cfg(not(feature = "extra-children"))]
39418 _ => {}
39419 }
39420 }
39421 Event::End(_) => break,
39422 Event::Eof => break,
39423 _ => {}
39424 }
39425 buf.clear();
39426 }
39427 }
39428
39429 Ok(Self {
39430 cell_type: f_cell_type,
39431 value: f_value.ok_or_else(|| ParseError::MissingAttribute("val".to_string()))?,
39432 #[cfg(feature = "extra-attrs")]
39433 extra_attrs,
39434 #[cfg(feature = "extra-children")]
39435 extra_children,
39436 })
39437 }
39438}
39439
39440impl FromXml for OleLink {
39441 fn from_xml<R: BufRead>(
39442 reader: &mut Reader<R>,
39443 start_tag: &BytesStart,
39444 is_empty: bool,
39445 ) -> Result<Self, ParseError> {
39446 let mut f_id: Option<STRelationshipId> = None;
39447 let mut f_prog_id: Option<XmlString> = None;
39448 let mut f_ole_items = None;
39449 #[cfg(feature = "extra-attrs")]
39450 let mut extra_attrs = std::collections::HashMap::new();
39451 #[cfg(feature = "extra-children")]
39452 let mut extra_children = Vec::new();
39453 #[cfg(feature = "extra-children")]
39454 let mut child_idx: usize = 0;
39455
39456 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
39458 let val = String::from_utf8_lossy(&attr.value);
39459 match attr.key.local_name().as_ref() {
39460 b"id" => {
39461 f_id = Some(val.into_owned());
39462 }
39463 b"progId" => {
39464 f_prog_id = Some(val.into_owned());
39465 }
39466 #[cfg(feature = "extra-attrs")]
39467 unknown => {
39468 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
39469 extra_attrs.insert(key, val.into_owned());
39470 }
39471 #[cfg(not(feature = "extra-attrs"))]
39472 _ => {}
39473 }
39474 }
39475
39476 if !is_empty {
39478 let mut buf = Vec::new();
39479 loop {
39480 match reader.read_event_into(&mut buf)? {
39481 Event::Start(e) => {
39482 match e.local_name().as_ref() {
39483 b"oleItems" => {
39484 f_ole_items =
39485 Some(Box::new(OleItems::from_xml(reader, &e, false)?));
39486 #[cfg(feature = "extra-children")]
39487 {
39488 child_idx += 1;
39489 }
39490 }
39491 #[cfg(feature = "extra-children")]
39492 _ => {
39493 let elem = RawXmlElement::from_reader(reader, &e)?;
39495 extra_children.push(PositionedNode::new(
39496 child_idx,
39497 RawXmlNode::Element(elem),
39498 ));
39499 child_idx += 1;
39500 }
39501 #[cfg(not(feature = "extra-children"))]
39502 _ => {
39503 skip_element(reader)?;
39505 }
39506 }
39507 }
39508 Event::Empty(e) => {
39509 match e.local_name().as_ref() {
39510 b"oleItems" => {
39511 f_ole_items = Some(Box::new(OleItems::from_xml(reader, &e, true)?));
39512 #[cfg(feature = "extra-children")]
39513 {
39514 child_idx += 1;
39515 }
39516 }
39517 #[cfg(feature = "extra-children")]
39518 _ => {
39519 let elem = RawXmlElement::from_empty(&e);
39521 extra_children.push(PositionedNode::new(
39522 child_idx,
39523 RawXmlNode::Element(elem),
39524 ));
39525 child_idx += 1;
39526 }
39527 #[cfg(not(feature = "extra-children"))]
39528 _ => {}
39529 }
39530 }
39531 Event::End(_) => break,
39532 Event::Eof => break,
39533 _ => {}
39534 }
39535 buf.clear();
39536 }
39537 }
39538
39539 Ok(Self {
39540 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
39541 prog_id: f_prog_id.ok_or_else(|| ParseError::MissingAttribute("progId".to_string()))?,
39542 ole_items: f_ole_items,
39543 #[cfg(feature = "extra-attrs")]
39544 extra_attrs,
39545 #[cfg(feature = "extra-children")]
39546 extra_children,
39547 })
39548 }
39549}
39550
39551impl FromXml for OleItems {
39552 fn from_xml<R: BufRead>(
39553 reader: &mut Reader<R>,
39554 start_tag: &BytesStart,
39555 is_empty: bool,
39556 ) -> Result<Self, ParseError> {
39557 let mut f_ole_item = Vec::new();
39558 #[cfg(feature = "extra-children")]
39559 let mut extra_children = Vec::new();
39560 #[cfg(feature = "extra-children")]
39561 let mut child_idx: usize = 0;
39562
39563 if !is_empty {
39565 let mut buf = Vec::new();
39566 loop {
39567 match reader.read_event_into(&mut buf)? {
39568 Event::Start(e) => {
39569 match e.local_name().as_ref() {
39570 b"oleItem" => {
39571 f_ole_item.push(OleItem::from_xml(reader, &e, false)?);
39572 #[cfg(feature = "extra-children")]
39573 {
39574 child_idx += 1;
39575 }
39576 }
39577 #[cfg(feature = "extra-children")]
39578 _ => {
39579 let elem = RawXmlElement::from_reader(reader, &e)?;
39581 extra_children.push(PositionedNode::new(
39582 child_idx,
39583 RawXmlNode::Element(elem),
39584 ));
39585 child_idx += 1;
39586 }
39587 #[cfg(not(feature = "extra-children"))]
39588 _ => {
39589 skip_element(reader)?;
39591 }
39592 }
39593 }
39594 Event::Empty(e) => {
39595 match e.local_name().as_ref() {
39596 b"oleItem" => {
39597 f_ole_item.push(OleItem::from_xml(reader, &e, true)?);
39598 #[cfg(feature = "extra-children")]
39599 {
39600 child_idx += 1;
39601 }
39602 }
39603 #[cfg(feature = "extra-children")]
39604 _ => {
39605 let elem = RawXmlElement::from_empty(&e);
39607 extra_children.push(PositionedNode::new(
39608 child_idx,
39609 RawXmlNode::Element(elem),
39610 ));
39611 child_idx += 1;
39612 }
39613 #[cfg(not(feature = "extra-children"))]
39614 _ => {}
39615 }
39616 }
39617 Event::End(_) => break,
39618 Event::Eof => break,
39619 _ => {}
39620 }
39621 buf.clear();
39622 }
39623 }
39624
39625 Ok(Self {
39626 ole_item: f_ole_item,
39627 #[cfg(feature = "extra-children")]
39628 extra_children,
39629 })
39630 }
39631}
39632
39633impl FromXml for OleItem {
39634 fn from_xml<R: BufRead>(
39635 reader: &mut Reader<R>,
39636 start_tag: &BytesStart,
39637 is_empty: bool,
39638 ) -> Result<Self, ParseError> {
39639 let mut f_name: Option<XmlString> = None;
39640 let mut f_icon = None;
39641 let mut f_advise = None;
39642 let mut f_prefer_pic = None;
39643 #[cfg(feature = "extra-attrs")]
39644 let mut extra_attrs = std::collections::HashMap::new();
39645
39646 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
39648 let val = String::from_utf8_lossy(&attr.value);
39649 match attr.key.local_name().as_ref() {
39650 b"name" => {
39651 f_name = Some(val.into_owned());
39652 }
39653 b"icon" => {
39654 f_icon = Some(val == "true" || val == "1");
39655 }
39656 b"advise" => {
39657 f_advise = Some(val == "true" || val == "1");
39658 }
39659 b"preferPic" => {
39660 f_prefer_pic = Some(val == "true" || val == "1");
39661 }
39662 #[cfg(feature = "extra-attrs")]
39663 unknown => {
39664 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
39665 extra_attrs.insert(key, val.into_owned());
39666 }
39667 #[cfg(not(feature = "extra-attrs"))]
39668 _ => {}
39669 }
39670 }
39671
39672 if !is_empty {
39673 let mut buf = Vec::new();
39674 loop {
39675 match reader.read_event_into(&mut buf)? {
39676 Event::End(_) => break,
39677 Event::Eof => break,
39678 _ => {}
39679 }
39680 buf.clear();
39681 }
39682 }
39683
39684 Ok(Self {
39685 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
39686 icon: f_icon,
39687 advise: f_advise,
39688 prefer_pic: f_prefer_pic,
39689 #[cfg(feature = "extra-attrs")]
39690 extra_attrs,
39691 })
39692 }
39693}
39694
39695impl FromXml for Table {
39696 fn from_xml<R: BufRead>(
39697 reader: &mut Reader<R>,
39698 start_tag: &BytesStart,
39699 is_empty: bool,
39700 ) -> Result<Self, ParseError> {
39701 #[cfg(feature = "sml-tables")]
39702 let mut f_id: Option<u32> = None;
39703 #[cfg(feature = "sml-tables")]
39704 let mut f_name = None;
39705 #[cfg(feature = "sml-tables")]
39706 let mut f_display_name: Option<XmlString> = None;
39707 #[cfg(feature = "sml-tables")]
39708 let mut f_comment = None;
39709 #[cfg(feature = "sml-tables")]
39710 let mut f_reference: Option<Reference> = None;
39711 #[cfg(feature = "sml-tables")]
39712 let mut f_table_type = None;
39713 #[cfg(feature = "sml-tables")]
39714 let mut f_header_row_count = None;
39715 #[cfg(feature = "sml-tables")]
39716 let mut f_insert_row = None;
39717 #[cfg(feature = "sml-tables")]
39718 let mut f_insert_row_shift = None;
39719 #[cfg(feature = "sml-tables")]
39720 let mut f_totals_row_count = None;
39721 #[cfg(feature = "sml-tables")]
39722 let mut f_totals_row_shown = None;
39723 #[cfg(feature = "sml-tables")]
39724 let mut f_published = None;
39725 #[cfg(feature = "sml-tables")]
39726 let mut f_header_row_dxf_id = None;
39727 #[cfg(feature = "sml-tables")]
39728 let mut f_data_dxf_id = None;
39729 #[cfg(feature = "sml-tables")]
39730 let mut f_totals_row_dxf_id = None;
39731 #[cfg(feature = "sml-tables")]
39732 let mut f_header_row_border_dxf_id = None;
39733 #[cfg(feature = "sml-tables")]
39734 let mut f_table_border_dxf_id = None;
39735 #[cfg(feature = "sml-tables")]
39736 let mut f_totals_row_border_dxf_id = None;
39737 #[cfg(feature = "sml-tables")]
39738 let mut f_header_row_cell_style = None;
39739 #[cfg(feature = "sml-tables")]
39740 let mut f_data_cell_style = None;
39741 #[cfg(feature = "sml-tables")]
39742 let mut f_totals_row_cell_style = None;
39743 #[cfg(feature = "sml-tables")]
39744 let mut f_connection_id = None;
39745 #[cfg(feature = "sml-tables")]
39746 let mut f_auto_filter = None;
39747 #[cfg(feature = "sml-tables")]
39748 let mut f_sort_state = None;
39749 #[cfg(feature = "sml-tables")]
39750 let mut f_table_columns: Option<Box<TableColumns>> = None;
39751 #[cfg(feature = "sml-tables")]
39752 let mut f_table_style_info = None;
39753 #[cfg(feature = "sml-extensions")]
39754 let mut f_extension_list = None;
39755 #[cfg(feature = "extra-attrs")]
39756 let mut extra_attrs = std::collections::HashMap::new();
39757 #[cfg(feature = "extra-children")]
39758 let mut extra_children = Vec::new();
39759 #[cfg(feature = "extra-children")]
39760 let mut child_idx: usize = 0;
39761
39762 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
39764 let val = String::from_utf8_lossy(&attr.value);
39765 match attr.key.local_name().as_ref() {
39766 #[cfg(feature = "sml-tables")]
39767 b"id" => {
39768 f_id = val.parse().ok();
39769 }
39770 #[cfg(feature = "sml-tables")]
39771 b"name" => {
39772 f_name = Some(val.into_owned());
39773 }
39774 #[cfg(feature = "sml-tables")]
39775 b"displayName" => {
39776 f_display_name = Some(val.into_owned());
39777 }
39778 #[cfg(feature = "sml-tables")]
39779 b"comment" => {
39780 f_comment = Some(val.into_owned());
39781 }
39782 #[cfg(feature = "sml-tables")]
39783 b"ref" => {
39784 f_reference = Some(val.into_owned());
39785 }
39786 #[cfg(feature = "sml-tables")]
39787 b"tableType" => {
39788 f_table_type = val.parse().ok();
39789 }
39790 #[cfg(feature = "sml-tables")]
39791 b"headerRowCount" => {
39792 f_header_row_count = val.parse().ok();
39793 }
39794 #[cfg(feature = "sml-tables")]
39795 b"insertRow" => {
39796 f_insert_row = Some(val == "true" || val == "1");
39797 }
39798 #[cfg(feature = "sml-tables")]
39799 b"insertRowShift" => {
39800 f_insert_row_shift = Some(val == "true" || val == "1");
39801 }
39802 #[cfg(feature = "sml-tables")]
39803 b"totalsRowCount" => {
39804 f_totals_row_count = val.parse().ok();
39805 }
39806 #[cfg(feature = "sml-tables")]
39807 b"totalsRowShown" => {
39808 f_totals_row_shown = Some(val == "true" || val == "1");
39809 }
39810 #[cfg(feature = "sml-tables")]
39811 b"published" => {
39812 f_published = Some(val == "true" || val == "1");
39813 }
39814 #[cfg(feature = "sml-tables")]
39815 b"headerRowDxfId" => {
39816 f_header_row_dxf_id = val.parse().ok();
39817 }
39818 #[cfg(feature = "sml-tables")]
39819 b"dataDxfId" => {
39820 f_data_dxf_id = val.parse().ok();
39821 }
39822 #[cfg(feature = "sml-tables")]
39823 b"totalsRowDxfId" => {
39824 f_totals_row_dxf_id = val.parse().ok();
39825 }
39826 #[cfg(feature = "sml-tables")]
39827 b"headerRowBorderDxfId" => {
39828 f_header_row_border_dxf_id = val.parse().ok();
39829 }
39830 #[cfg(feature = "sml-tables")]
39831 b"tableBorderDxfId" => {
39832 f_table_border_dxf_id = val.parse().ok();
39833 }
39834 #[cfg(feature = "sml-tables")]
39835 b"totalsRowBorderDxfId" => {
39836 f_totals_row_border_dxf_id = val.parse().ok();
39837 }
39838 #[cfg(feature = "sml-tables")]
39839 b"headerRowCellStyle" => {
39840 f_header_row_cell_style = Some(val.into_owned());
39841 }
39842 #[cfg(feature = "sml-tables")]
39843 b"dataCellStyle" => {
39844 f_data_cell_style = Some(val.into_owned());
39845 }
39846 #[cfg(feature = "sml-tables")]
39847 b"totalsRowCellStyle" => {
39848 f_totals_row_cell_style = Some(val.into_owned());
39849 }
39850 #[cfg(feature = "sml-tables")]
39851 b"connectionId" => {
39852 f_connection_id = val.parse().ok();
39853 }
39854 #[cfg(feature = "extra-attrs")]
39855 unknown => {
39856 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
39857 extra_attrs.insert(key, val.into_owned());
39858 }
39859 #[cfg(not(feature = "extra-attrs"))]
39860 _ => {}
39861 }
39862 }
39863
39864 if !is_empty {
39866 let mut buf = Vec::new();
39867 loop {
39868 match reader.read_event_into(&mut buf)? {
39869 Event::Start(e) => {
39870 match e.local_name().as_ref() {
39871 #[cfg(feature = "sml-tables")]
39872 b"autoFilter" => {
39873 f_auto_filter =
39874 Some(Box::new(AutoFilter::from_xml(reader, &e, false)?));
39875 #[cfg(feature = "extra-children")]
39876 {
39877 child_idx += 1;
39878 }
39879 }
39880 #[cfg(feature = "sml-tables")]
39881 b"sortState" => {
39882 f_sort_state =
39883 Some(Box::new(SortState::from_xml(reader, &e, false)?));
39884 #[cfg(feature = "extra-children")]
39885 {
39886 child_idx += 1;
39887 }
39888 }
39889 #[cfg(feature = "sml-tables")]
39890 b"tableColumns" => {
39891 f_table_columns =
39892 Some(Box::new(TableColumns::from_xml(reader, &e, false)?));
39893 #[cfg(feature = "extra-children")]
39894 {
39895 child_idx += 1;
39896 }
39897 }
39898 #[cfg(feature = "sml-tables")]
39899 b"tableStyleInfo" => {
39900 f_table_style_info =
39901 Some(Box::new(TableStyleInfo::from_xml(reader, &e, false)?));
39902 #[cfg(feature = "extra-children")]
39903 {
39904 child_idx += 1;
39905 }
39906 }
39907 #[cfg(feature = "sml-extensions")]
39908 b"extLst" => {
39909 f_extension_list =
39910 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
39911 #[cfg(feature = "extra-children")]
39912 {
39913 child_idx += 1;
39914 }
39915 }
39916 #[cfg(feature = "extra-children")]
39917 _ => {
39918 let elem = RawXmlElement::from_reader(reader, &e)?;
39920 extra_children.push(PositionedNode::new(
39921 child_idx,
39922 RawXmlNode::Element(elem),
39923 ));
39924 child_idx += 1;
39925 }
39926 #[cfg(not(feature = "extra-children"))]
39927 _ => {
39928 skip_element(reader)?;
39930 }
39931 }
39932 }
39933 Event::Empty(e) => {
39934 match e.local_name().as_ref() {
39935 #[cfg(feature = "sml-tables")]
39936 b"autoFilter" => {
39937 f_auto_filter =
39938 Some(Box::new(AutoFilter::from_xml(reader, &e, true)?));
39939 #[cfg(feature = "extra-children")]
39940 {
39941 child_idx += 1;
39942 }
39943 }
39944 #[cfg(feature = "sml-tables")]
39945 b"sortState" => {
39946 f_sort_state =
39947 Some(Box::new(SortState::from_xml(reader, &e, true)?));
39948 #[cfg(feature = "extra-children")]
39949 {
39950 child_idx += 1;
39951 }
39952 }
39953 #[cfg(feature = "sml-tables")]
39954 b"tableColumns" => {
39955 f_table_columns =
39956 Some(Box::new(TableColumns::from_xml(reader, &e, true)?));
39957 #[cfg(feature = "extra-children")]
39958 {
39959 child_idx += 1;
39960 }
39961 }
39962 #[cfg(feature = "sml-tables")]
39963 b"tableStyleInfo" => {
39964 f_table_style_info =
39965 Some(Box::new(TableStyleInfo::from_xml(reader, &e, true)?));
39966 #[cfg(feature = "extra-children")]
39967 {
39968 child_idx += 1;
39969 }
39970 }
39971 #[cfg(feature = "sml-extensions")]
39972 b"extLst" => {
39973 f_extension_list =
39974 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
39975 #[cfg(feature = "extra-children")]
39976 {
39977 child_idx += 1;
39978 }
39979 }
39980 #[cfg(feature = "extra-children")]
39981 _ => {
39982 let elem = RawXmlElement::from_empty(&e);
39984 extra_children.push(PositionedNode::new(
39985 child_idx,
39986 RawXmlNode::Element(elem),
39987 ));
39988 child_idx += 1;
39989 }
39990 #[cfg(not(feature = "extra-children"))]
39991 _ => {}
39992 }
39993 }
39994 Event::End(_) => break,
39995 Event::Eof => break,
39996 _ => {}
39997 }
39998 buf.clear();
39999 }
40000 }
40001
40002 Ok(Self {
40003 #[cfg(feature = "sml-tables")]
40004 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
40005 #[cfg(feature = "sml-tables")]
40006 name: f_name,
40007 #[cfg(feature = "sml-tables")]
40008 display_name: f_display_name
40009 .ok_or_else(|| ParseError::MissingAttribute("displayName".to_string()))?,
40010 #[cfg(feature = "sml-tables")]
40011 comment: f_comment,
40012 #[cfg(feature = "sml-tables")]
40013 reference: f_reference
40014 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
40015 #[cfg(feature = "sml-tables")]
40016 table_type: f_table_type,
40017 #[cfg(feature = "sml-tables")]
40018 header_row_count: f_header_row_count,
40019 #[cfg(feature = "sml-tables")]
40020 insert_row: f_insert_row,
40021 #[cfg(feature = "sml-tables")]
40022 insert_row_shift: f_insert_row_shift,
40023 #[cfg(feature = "sml-tables")]
40024 totals_row_count: f_totals_row_count,
40025 #[cfg(feature = "sml-tables")]
40026 totals_row_shown: f_totals_row_shown,
40027 #[cfg(feature = "sml-tables")]
40028 published: f_published,
40029 #[cfg(feature = "sml-tables")]
40030 header_row_dxf_id: f_header_row_dxf_id,
40031 #[cfg(feature = "sml-tables")]
40032 data_dxf_id: f_data_dxf_id,
40033 #[cfg(feature = "sml-tables")]
40034 totals_row_dxf_id: f_totals_row_dxf_id,
40035 #[cfg(feature = "sml-tables")]
40036 header_row_border_dxf_id: f_header_row_border_dxf_id,
40037 #[cfg(feature = "sml-tables")]
40038 table_border_dxf_id: f_table_border_dxf_id,
40039 #[cfg(feature = "sml-tables")]
40040 totals_row_border_dxf_id: f_totals_row_border_dxf_id,
40041 #[cfg(feature = "sml-tables")]
40042 header_row_cell_style: f_header_row_cell_style,
40043 #[cfg(feature = "sml-tables")]
40044 data_cell_style: f_data_cell_style,
40045 #[cfg(feature = "sml-tables")]
40046 totals_row_cell_style: f_totals_row_cell_style,
40047 #[cfg(feature = "sml-tables")]
40048 connection_id: f_connection_id,
40049 #[cfg(feature = "sml-tables")]
40050 auto_filter: f_auto_filter,
40051 #[cfg(feature = "sml-tables")]
40052 sort_state: f_sort_state,
40053 #[cfg(feature = "sml-tables")]
40054 table_columns: f_table_columns
40055 .ok_or_else(|| ParseError::MissingAttribute("tableColumns".to_string()))?,
40056 #[cfg(feature = "sml-tables")]
40057 table_style_info: f_table_style_info,
40058 #[cfg(feature = "sml-extensions")]
40059 extension_list: f_extension_list,
40060 #[cfg(feature = "extra-attrs")]
40061 extra_attrs,
40062 #[cfg(feature = "extra-children")]
40063 extra_children,
40064 })
40065 }
40066}
40067
40068impl FromXml for TableStyleInfo {
40069 fn from_xml<R: BufRead>(
40070 reader: &mut Reader<R>,
40071 start_tag: &BytesStart,
40072 is_empty: bool,
40073 ) -> Result<Self, ParseError> {
40074 let mut f_name = None;
40075 let mut f_show_first_column = None;
40076 let mut f_show_last_column = None;
40077 let mut f_show_row_stripes = None;
40078 let mut f_show_column_stripes = None;
40079 #[cfg(feature = "extra-attrs")]
40080 let mut extra_attrs = std::collections::HashMap::new();
40081
40082 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
40084 let val = String::from_utf8_lossy(&attr.value);
40085 match attr.key.local_name().as_ref() {
40086 b"name" => {
40087 f_name = Some(val.into_owned());
40088 }
40089 b"showFirstColumn" => {
40090 f_show_first_column = Some(val == "true" || val == "1");
40091 }
40092 b"showLastColumn" => {
40093 f_show_last_column = Some(val == "true" || val == "1");
40094 }
40095 b"showRowStripes" => {
40096 f_show_row_stripes = Some(val == "true" || val == "1");
40097 }
40098 b"showColumnStripes" => {
40099 f_show_column_stripes = Some(val == "true" || val == "1");
40100 }
40101 #[cfg(feature = "extra-attrs")]
40102 unknown => {
40103 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
40104 extra_attrs.insert(key, val.into_owned());
40105 }
40106 #[cfg(not(feature = "extra-attrs"))]
40107 _ => {}
40108 }
40109 }
40110
40111 if !is_empty {
40112 let mut buf = Vec::new();
40113 loop {
40114 match reader.read_event_into(&mut buf)? {
40115 Event::End(_) => break,
40116 Event::Eof => break,
40117 _ => {}
40118 }
40119 buf.clear();
40120 }
40121 }
40122
40123 Ok(Self {
40124 name: f_name,
40125 show_first_column: f_show_first_column,
40126 show_last_column: f_show_last_column,
40127 show_row_stripes: f_show_row_stripes,
40128 show_column_stripes: f_show_column_stripes,
40129 #[cfg(feature = "extra-attrs")]
40130 extra_attrs,
40131 })
40132 }
40133}
40134
40135impl FromXml for TableColumns {
40136 fn from_xml<R: BufRead>(
40137 reader: &mut Reader<R>,
40138 start_tag: &BytesStart,
40139 is_empty: bool,
40140 ) -> Result<Self, ParseError> {
40141 let mut f_count = None;
40142 let mut f_table_column = Vec::new();
40143 #[cfg(feature = "extra-attrs")]
40144 let mut extra_attrs = std::collections::HashMap::new();
40145 #[cfg(feature = "extra-children")]
40146 let mut extra_children = Vec::new();
40147 #[cfg(feature = "extra-children")]
40148 let mut child_idx: usize = 0;
40149
40150 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
40152 let val = String::from_utf8_lossy(&attr.value);
40153 match attr.key.local_name().as_ref() {
40154 b"count" => {
40155 f_count = val.parse().ok();
40156 }
40157 #[cfg(feature = "extra-attrs")]
40158 unknown => {
40159 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
40160 extra_attrs.insert(key, val.into_owned());
40161 }
40162 #[cfg(not(feature = "extra-attrs"))]
40163 _ => {}
40164 }
40165 }
40166
40167 if !is_empty {
40169 let mut buf = Vec::new();
40170 loop {
40171 match reader.read_event_into(&mut buf)? {
40172 Event::Start(e) => {
40173 match e.local_name().as_ref() {
40174 b"tableColumn" => {
40175 f_table_column.push(TableColumn::from_xml(reader, &e, false)?);
40176 #[cfg(feature = "extra-children")]
40177 {
40178 child_idx += 1;
40179 }
40180 }
40181 #[cfg(feature = "extra-children")]
40182 _ => {
40183 let elem = RawXmlElement::from_reader(reader, &e)?;
40185 extra_children.push(PositionedNode::new(
40186 child_idx,
40187 RawXmlNode::Element(elem),
40188 ));
40189 child_idx += 1;
40190 }
40191 #[cfg(not(feature = "extra-children"))]
40192 _ => {
40193 skip_element(reader)?;
40195 }
40196 }
40197 }
40198 Event::Empty(e) => {
40199 match e.local_name().as_ref() {
40200 b"tableColumn" => {
40201 f_table_column.push(TableColumn::from_xml(reader, &e, true)?);
40202 #[cfg(feature = "extra-children")]
40203 {
40204 child_idx += 1;
40205 }
40206 }
40207 #[cfg(feature = "extra-children")]
40208 _ => {
40209 let elem = RawXmlElement::from_empty(&e);
40211 extra_children.push(PositionedNode::new(
40212 child_idx,
40213 RawXmlNode::Element(elem),
40214 ));
40215 child_idx += 1;
40216 }
40217 #[cfg(not(feature = "extra-children"))]
40218 _ => {}
40219 }
40220 }
40221 Event::End(_) => break,
40222 Event::Eof => break,
40223 _ => {}
40224 }
40225 buf.clear();
40226 }
40227 }
40228
40229 Ok(Self {
40230 count: f_count,
40231 table_column: f_table_column,
40232 #[cfg(feature = "extra-attrs")]
40233 extra_attrs,
40234 #[cfg(feature = "extra-children")]
40235 extra_children,
40236 })
40237 }
40238}
40239
40240impl FromXml for TableColumn {
40241 fn from_xml<R: BufRead>(
40242 reader: &mut Reader<R>,
40243 start_tag: &BytesStart,
40244 is_empty: bool,
40245 ) -> Result<Self, ParseError> {
40246 let mut f_id: Option<u32> = None;
40247 let mut f_unique_name = None;
40248 let mut f_name: Option<XmlString> = None;
40249 let mut f_totals_row_function = None;
40250 let mut f_totals_row_label = None;
40251 let mut f_query_table_field_id = None;
40252 let mut f_header_row_dxf_id = None;
40253 let mut f_data_dxf_id = None;
40254 let mut f_totals_row_dxf_id = None;
40255 let mut f_header_row_cell_style = None;
40256 let mut f_data_cell_style = None;
40257 let mut f_totals_row_cell_style = None;
40258 let mut f_calculated_column_formula = None;
40259 let mut f_totals_row_formula = None;
40260 let mut f_xml_column_pr = None;
40261 let mut f_extension_list = None;
40262 #[cfg(feature = "extra-attrs")]
40263 let mut extra_attrs = std::collections::HashMap::new();
40264 #[cfg(feature = "extra-children")]
40265 let mut extra_children = Vec::new();
40266 #[cfg(feature = "extra-children")]
40267 let mut child_idx: usize = 0;
40268
40269 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
40271 let val = String::from_utf8_lossy(&attr.value);
40272 match attr.key.local_name().as_ref() {
40273 b"id" => {
40274 f_id = val.parse().ok();
40275 }
40276 b"uniqueName" => {
40277 f_unique_name = Some(val.into_owned());
40278 }
40279 b"name" => {
40280 f_name = Some(val.into_owned());
40281 }
40282 b"totalsRowFunction" => {
40283 f_totals_row_function = val.parse().ok();
40284 }
40285 b"totalsRowLabel" => {
40286 f_totals_row_label = Some(val.into_owned());
40287 }
40288 b"queryTableFieldId" => {
40289 f_query_table_field_id = val.parse().ok();
40290 }
40291 b"headerRowDxfId" => {
40292 f_header_row_dxf_id = val.parse().ok();
40293 }
40294 b"dataDxfId" => {
40295 f_data_dxf_id = val.parse().ok();
40296 }
40297 b"totalsRowDxfId" => {
40298 f_totals_row_dxf_id = val.parse().ok();
40299 }
40300 b"headerRowCellStyle" => {
40301 f_header_row_cell_style = Some(val.into_owned());
40302 }
40303 b"dataCellStyle" => {
40304 f_data_cell_style = Some(val.into_owned());
40305 }
40306 b"totalsRowCellStyle" => {
40307 f_totals_row_cell_style = Some(val.into_owned());
40308 }
40309 #[cfg(feature = "extra-attrs")]
40310 unknown => {
40311 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
40312 extra_attrs.insert(key, val.into_owned());
40313 }
40314 #[cfg(not(feature = "extra-attrs"))]
40315 _ => {}
40316 }
40317 }
40318
40319 if !is_empty {
40321 let mut buf = Vec::new();
40322 loop {
40323 match reader.read_event_into(&mut buf)? {
40324 Event::Start(e) => {
40325 match e.local_name().as_ref() {
40326 b"calculatedColumnFormula" => {
40327 f_calculated_column_formula =
40328 Some(Box::new(TableFormula::from_xml(reader, &e, false)?));
40329 #[cfg(feature = "extra-children")]
40330 {
40331 child_idx += 1;
40332 }
40333 }
40334 b"totalsRowFormula" => {
40335 f_totals_row_formula =
40336 Some(Box::new(TableFormula::from_xml(reader, &e, false)?));
40337 #[cfg(feature = "extra-children")]
40338 {
40339 child_idx += 1;
40340 }
40341 }
40342 b"xmlColumnPr" => {
40343 f_xml_column_pr = Some(Box::new(XmlColumnProperties::from_xml(
40344 reader, &e, false,
40345 )?));
40346 #[cfg(feature = "extra-children")]
40347 {
40348 child_idx += 1;
40349 }
40350 }
40351 b"extLst" => {
40352 f_extension_list =
40353 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
40354 #[cfg(feature = "extra-children")]
40355 {
40356 child_idx += 1;
40357 }
40358 }
40359 #[cfg(feature = "extra-children")]
40360 _ => {
40361 let elem = RawXmlElement::from_reader(reader, &e)?;
40363 extra_children.push(PositionedNode::new(
40364 child_idx,
40365 RawXmlNode::Element(elem),
40366 ));
40367 child_idx += 1;
40368 }
40369 #[cfg(not(feature = "extra-children"))]
40370 _ => {
40371 skip_element(reader)?;
40373 }
40374 }
40375 }
40376 Event::Empty(e) => {
40377 match e.local_name().as_ref() {
40378 b"calculatedColumnFormula" => {
40379 f_calculated_column_formula =
40380 Some(Box::new(TableFormula::from_xml(reader, &e, true)?));
40381 #[cfg(feature = "extra-children")]
40382 {
40383 child_idx += 1;
40384 }
40385 }
40386 b"totalsRowFormula" => {
40387 f_totals_row_formula =
40388 Some(Box::new(TableFormula::from_xml(reader, &e, true)?));
40389 #[cfg(feature = "extra-children")]
40390 {
40391 child_idx += 1;
40392 }
40393 }
40394 b"xmlColumnPr" => {
40395 f_xml_column_pr = Some(Box::new(XmlColumnProperties::from_xml(
40396 reader, &e, true,
40397 )?));
40398 #[cfg(feature = "extra-children")]
40399 {
40400 child_idx += 1;
40401 }
40402 }
40403 b"extLst" => {
40404 f_extension_list =
40405 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
40406 #[cfg(feature = "extra-children")]
40407 {
40408 child_idx += 1;
40409 }
40410 }
40411 #[cfg(feature = "extra-children")]
40412 _ => {
40413 let elem = RawXmlElement::from_empty(&e);
40415 extra_children.push(PositionedNode::new(
40416 child_idx,
40417 RawXmlNode::Element(elem),
40418 ));
40419 child_idx += 1;
40420 }
40421 #[cfg(not(feature = "extra-children"))]
40422 _ => {}
40423 }
40424 }
40425 Event::End(_) => break,
40426 Event::Eof => break,
40427 _ => {}
40428 }
40429 buf.clear();
40430 }
40431 }
40432
40433 Ok(Self {
40434 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
40435 unique_name: f_unique_name,
40436 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
40437 totals_row_function: f_totals_row_function,
40438 totals_row_label: f_totals_row_label,
40439 query_table_field_id: f_query_table_field_id,
40440 header_row_dxf_id: f_header_row_dxf_id,
40441 data_dxf_id: f_data_dxf_id,
40442 totals_row_dxf_id: f_totals_row_dxf_id,
40443 header_row_cell_style: f_header_row_cell_style,
40444 data_cell_style: f_data_cell_style,
40445 totals_row_cell_style: f_totals_row_cell_style,
40446 calculated_column_formula: f_calculated_column_formula,
40447 totals_row_formula: f_totals_row_formula,
40448 xml_column_pr: f_xml_column_pr,
40449 extension_list: f_extension_list,
40450 #[cfg(feature = "extra-attrs")]
40451 extra_attrs,
40452 #[cfg(feature = "extra-children")]
40453 extra_children,
40454 })
40455 }
40456}
40457
40458impl FromXml for TableFormula {
40459 fn from_xml<R: BufRead>(
40460 reader: &mut Reader<R>,
40461 start_tag: &BytesStart,
40462 is_empty: bool,
40463 ) -> Result<Self, ParseError> {
40464 let mut f_text = None;
40465 let mut f_array = None;
40466 #[cfg(feature = "extra-attrs")]
40467 let mut extra_attrs = std::collections::HashMap::new();
40468 #[cfg(feature = "extra-children")]
40469 let mut extra_children = Vec::new();
40470 #[cfg(feature = "extra-children")]
40471 let mut child_idx: usize = 0;
40472
40473 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
40475 let val = String::from_utf8_lossy(&attr.value);
40476 match attr.key.local_name().as_ref() {
40477 b"array" => {
40478 f_array = Some(val == "true" || val == "1");
40479 }
40480 #[cfg(feature = "extra-attrs")]
40481 unknown => {
40482 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
40483 extra_attrs.insert(key, val.into_owned());
40484 }
40485 #[cfg(not(feature = "extra-attrs"))]
40486 _ => {}
40487 }
40488 }
40489
40490 if !is_empty {
40492 let mut buf = Vec::new();
40493 loop {
40494 match reader.read_event_into(&mut buf)? {
40495 Event::Start(e) => {
40496 match e.local_name().as_ref() {
40497 #[cfg(feature = "extra-children")]
40498 _ => {
40499 let elem = RawXmlElement::from_reader(reader, &e)?;
40501 extra_children.push(PositionedNode::new(
40502 child_idx,
40503 RawXmlNode::Element(elem),
40504 ));
40505 child_idx += 1;
40506 }
40507 #[cfg(not(feature = "extra-children"))]
40508 _ => {
40509 skip_element(reader)?;
40511 }
40512 }
40513 }
40514 Event::Empty(e) => {
40515 match e.local_name().as_ref() {
40516 #[cfg(feature = "extra-children")]
40517 _ => {
40518 let elem = RawXmlElement::from_empty(&e);
40520 extra_children.push(PositionedNode::new(
40521 child_idx,
40522 RawXmlNode::Element(elem),
40523 ));
40524 child_idx += 1;
40525 }
40526 #[cfg(not(feature = "extra-children"))]
40527 _ => {}
40528 }
40529 }
40530 Event::Text(e) => {
40531 let s = e.decode().unwrap_or_default();
40532 f_text.get_or_insert_with(String::new).push_str(&s);
40533 }
40534 Event::GeneralRef(e) => {
40535 let name = e.decode().unwrap_or_default();
40536 if let Some(s) = quick_xml::escape::resolve_xml_entity(&name) {
40537 f_text.get_or_insert_with(String::new).push_str(s);
40538 }
40539 }
40540 Event::End(_) => break,
40541 Event::Eof => break,
40542 _ => {}
40543 }
40544 buf.clear();
40545 }
40546 }
40547
40548 Ok(Self {
40549 text: f_text,
40550 array: f_array,
40551 #[cfg(feature = "extra-attrs")]
40552 extra_attrs,
40553 #[cfg(feature = "extra-children")]
40554 extra_children,
40555 })
40556 }
40557}
40558
40559impl FromXml for XmlColumnProperties {
40560 fn from_xml<R: BufRead>(
40561 reader: &mut Reader<R>,
40562 start_tag: &BytesStart,
40563 is_empty: bool,
40564 ) -> Result<Self, ParseError> {
40565 let mut f_map_id: Option<u32> = None;
40566 let mut f_xpath: Option<XmlString> = None;
40567 let mut f_denormalized = None;
40568 let mut f_xml_data_type: Option<STXmlDataType> = None;
40569 let mut f_extension_list = None;
40570 #[cfg(feature = "extra-attrs")]
40571 let mut extra_attrs = std::collections::HashMap::new();
40572 #[cfg(feature = "extra-children")]
40573 let mut extra_children = Vec::new();
40574 #[cfg(feature = "extra-children")]
40575 let mut child_idx: usize = 0;
40576
40577 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
40579 let val = String::from_utf8_lossy(&attr.value);
40580 match attr.key.local_name().as_ref() {
40581 b"mapId" => {
40582 f_map_id = val.parse().ok();
40583 }
40584 b"xpath" => {
40585 f_xpath = Some(val.into_owned());
40586 }
40587 b"denormalized" => {
40588 f_denormalized = Some(val == "true" || val == "1");
40589 }
40590 b"xmlDataType" => {
40591 f_xml_data_type = Some(val.into_owned());
40592 }
40593 #[cfg(feature = "extra-attrs")]
40594 unknown => {
40595 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
40596 extra_attrs.insert(key, val.into_owned());
40597 }
40598 #[cfg(not(feature = "extra-attrs"))]
40599 _ => {}
40600 }
40601 }
40602
40603 if !is_empty {
40605 let mut buf = Vec::new();
40606 loop {
40607 match reader.read_event_into(&mut buf)? {
40608 Event::Start(e) => {
40609 match e.local_name().as_ref() {
40610 b"extLst" => {
40611 f_extension_list =
40612 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
40613 #[cfg(feature = "extra-children")]
40614 {
40615 child_idx += 1;
40616 }
40617 }
40618 #[cfg(feature = "extra-children")]
40619 _ => {
40620 let elem = RawXmlElement::from_reader(reader, &e)?;
40622 extra_children.push(PositionedNode::new(
40623 child_idx,
40624 RawXmlNode::Element(elem),
40625 ));
40626 child_idx += 1;
40627 }
40628 #[cfg(not(feature = "extra-children"))]
40629 _ => {
40630 skip_element(reader)?;
40632 }
40633 }
40634 }
40635 Event::Empty(e) => {
40636 match e.local_name().as_ref() {
40637 b"extLst" => {
40638 f_extension_list =
40639 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
40640 #[cfg(feature = "extra-children")]
40641 {
40642 child_idx += 1;
40643 }
40644 }
40645 #[cfg(feature = "extra-children")]
40646 _ => {
40647 let elem = RawXmlElement::from_empty(&e);
40649 extra_children.push(PositionedNode::new(
40650 child_idx,
40651 RawXmlNode::Element(elem),
40652 ));
40653 child_idx += 1;
40654 }
40655 #[cfg(not(feature = "extra-children"))]
40656 _ => {}
40657 }
40658 }
40659 Event::End(_) => break,
40660 Event::Eof => break,
40661 _ => {}
40662 }
40663 buf.clear();
40664 }
40665 }
40666
40667 Ok(Self {
40668 map_id: f_map_id.ok_or_else(|| ParseError::MissingAttribute("mapId".to_string()))?,
40669 xpath: f_xpath.ok_or_else(|| ParseError::MissingAttribute("xpath".to_string()))?,
40670 denormalized: f_denormalized,
40671 xml_data_type: f_xml_data_type
40672 .ok_or_else(|| ParseError::MissingAttribute("xmlDataType".to_string()))?,
40673 extension_list: f_extension_list,
40674 #[cfg(feature = "extra-attrs")]
40675 extra_attrs,
40676 #[cfg(feature = "extra-children")]
40677 extra_children,
40678 })
40679 }
40680}
40681
40682impl FromXml for CTVolTypes {
40683 fn from_xml<R: BufRead>(
40684 reader: &mut Reader<R>,
40685 start_tag: &BytesStart,
40686 is_empty: bool,
40687 ) -> Result<Self, ParseError> {
40688 let mut f_vol_type = Vec::new();
40689 let mut f_extension_list = None;
40690 #[cfg(feature = "extra-children")]
40691 let mut extra_children = Vec::new();
40692 #[cfg(feature = "extra-children")]
40693 let mut child_idx: usize = 0;
40694
40695 if !is_empty {
40697 let mut buf = Vec::new();
40698 loop {
40699 match reader.read_event_into(&mut buf)? {
40700 Event::Start(e) => {
40701 match e.local_name().as_ref() {
40702 b"volType" => {
40703 f_vol_type.push(CTVolType::from_xml(reader, &e, false)?);
40704 #[cfg(feature = "extra-children")]
40705 {
40706 child_idx += 1;
40707 }
40708 }
40709 b"extLst" => {
40710 f_extension_list =
40711 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
40712 #[cfg(feature = "extra-children")]
40713 {
40714 child_idx += 1;
40715 }
40716 }
40717 #[cfg(feature = "extra-children")]
40718 _ => {
40719 let elem = RawXmlElement::from_reader(reader, &e)?;
40721 extra_children.push(PositionedNode::new(
40722 child_idx,
40723 RawXmlNode::Element(elem),
40724 ));
40725 child_idx += 1;
40726 }
40727 #[cfg(not(feature = "extra-children"))]
40728 _ => {
40729 skip_element(reader)?;
40731 }
40732 }
40733 }
40734 Event::Empty(e) => {
40735 match e.local_name().as_ref() {
40736 b"volType" => {
40737 f_vol_type.push(CTVolType::from_xml(reader, &e, true)?);
40738 #[cfg(feature = "extra-children")]
40739 {
40740 child_idx += 1;
40741 }
40742 }
40743 b"extLst" => {
40744 f_extension_list =
40745 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
40746 #[cfg(feature = "extra-children")]
40747 {
40748 child_idx += 1;
40749 }
40750 }
40751 #[cfg(feature = "extra-children")]
40752 _ => {
40753 let elem = RawXmlElement::from_empty(&e);
40755 extra_children.push(PositionedNode::new(
40756 child_idx,
40757 RawXmlNode::Element(elem),
40758 ));
40759 child_idx += 1;
40760 }
40761 #[cfg(not(feature = "extra-children"))]
40762 _ => {}
40763 }
40764 }
40765 Event::End(_) => break,
40766 Event::Eof => break,
40767 _ => {}
40768 }
40769 buf.clear();
40770 }
40771 }
40772
40773 Ok(Self {
40774 vol_type: f_vol_type,
40775 extension_list: f_extension_list,
40776 #[cfg(feature = "extra-children")]
40777 extra_children,
40778 })
40779 }
40780}
40781
40782impl FromXml for CTVolType {
40783 fn from_xml<R: BufRead>(
40784 reader: &mut Reader<R>,
40785 start_tag: &BytesStart,
40786 is_empty: bool,
40787 ) -> Result<Self, ParseError> {
40788 let mut f_type: Option<STVolDepType> = None;
40789 let mut f_main = Vec::new();
40790 #[cfg(feature = "extra-attrs")]
40791 let mut extra_attrs = std::collections::HashMap::new();
40792 #[cfg(feature = "extra-children")]
40793 let mut extra_children = Vec::new();
40794 #[cfg(feature = "extra-children")]
40795 let mut child_idx: usize = 0;
40796
40797 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
40799 let val = String::from_utf8_lossy(&attr.value);
40800 match attr.key.local_name().as_ref() {
40801 b"type" => {
40802 f_type = val.parse().ok();
40803 }
40804 #[cfg(feature = "extra-attrs")]
40805 unknown => {
40806 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
40807 extra_attrs.insert(key, val.into_owned());
40808 }
40809 #[cfg(not(feature = "extra-attrs"))]
40810 _ => {}
40811 }
40812 }
40813
40814 if !is_empty {
40816 let mut buf = Vec::new();
40817 loop {
40818 match reader.read_event_into(&mut buf)? {
40819 Event::Start(e) => {
40820 match e.local_name().as_ref() {
40821 b"main" => {
40822 f_main.push(CTVolMain::from_xml(reader, &e, false)?);
40823 #[cfg(feature = "extra-children")]
40824 {
40825 child_idx += 1;
40826 }
40827 }
40828 #[cfg(feature = "extra-children")]
40829 _ => {
40830 let elem = RawXmlElement::from_reader(reader, &e)?;
40832 extra_children.push(PositionedNode::new(
40833 child_idx,
40834 RawXmlNode::Element(elem),
40835 ));
40836 child_idx += 1;
40837 }
40838 #[cfg(not(feature = "extra-children"))]
40839 _ => {
40840 skip_element(reader)?;
40842 }
40843 }
40844 }
40845 Event::Empty(e) => {
40846 match e.local_name().as_ref() {
40847 b"main" => {
40848 f_main.push(CTVolMain::from_xml(reader, &e, true)?);
40849 #[cfg(feature = "extra-children")]
40850 {
40851 child_idx += 1;
40852 }
40853 }
40854 #[cfg(feature = "extra-children")]
40855 _ => {
40856 let elem = RawXmlElement::from_empty(&e);
40858 extra_children.push(PositionedNode::new(
40859 child_idx,
40860 RawXmlNode::Element(elem),
40861 ));
40862 child_idx += 1;
40863 }
40864 #[cfg(not(feature = "extra-children"))]
40865 _ => {}
40866 }
40867 }
40868 Event::End(_) => break,
40869 Event::Eof => break,
40870 _ => {}
40871 }
40872 buf.clear();
40873 }
40874 }
40875
40876 Ok(Self {
40877 r#type: f_type.ok_or_else(|| ParseError::MissingAttribute("type".to_string()))?,
40878 main: f_main,
40879 #[cfg(feature = "extra-attrs")]
40880 extra_attrs,
40881 #[cfg(feature = "extra-children")]
40882 extra_children,
40883 })
40884 }
40885}
40886
40887impl FromXml for CTVolMain {
40888 fn from_xml<R: BufRead>(
40889 reader: &mut Reader<R>,
40890 start_tag: &BytesStart,
40891 is_empty: bool,
40892 ) -> Result<Self, ParseError> {
40893 let mut f_first: Option<XmlString> = None;
40894 let mut f_tp = Vec::new();
40895 #[cfg(feature = "extra-attrs")]
40896 let mut extra_attrs = std::collections::HashMap::new();
40897 #[cfg(feature = "extra-children")]
40898 let mut extra_children = Vec::new();
40899 #[cfg(feature = "extra-children")]
40900 let mut child_idx: usize = 0;
40901
40902 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
40904 let val = String::from_utf8_lossy(&attr.value);
40905 match attr.key.local_name().as_ref() {
40906 b"first" => {
40907 f_first = Some(val.into_owned());
40908 }
40909 #[cfg(feature = "extra-attrs")]
40910 unknown => {
40911 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
40912 extra_attrs.insert(key, val.into_owned());
40913 }
40914 #[cfg(not(feature = "extra-attrs"))]
40915 _ => {}
40916 }
40917 }
40918
40919 if !is_empty {
40921 let mut buf = Vec::new();
40922 loop {
40923 match reader.read_event_into(&mut buf)? {
40924 Event::Start(e) => {
40925 match e.local_name().as_ref() {
40926 b"tp" => {
40927 f_tp.push(CTVolTopic::from_xml(reader, &e, false)?);
40928 #[cfg(feature = "extra-children")]
40929 {
40930 child_idx += 1;
40931 }
40932 }
40933 #[cfg(feature = "extra-children")]
40934 _ => {
40935 let elem = RawXmlElement::from_reader(reader, &e)?;
40937 extra_children.push(PositionedNode::new(
40938 child_idx,
40939 RawXmlNode::Element(elem),
40940 ));
40941 child_idx += 1;
40942 }
40943 #[cfg(not(feature = "extra-children"))]
40944 _ => {
40945 skip_element(reader)?;
40947 }
40948 }
40949 }
40950 Event::Empty(e) => {
40951 match e.local_name().as_ref() {
40952 b"tp" => {
40953 f_tp.push(CTVolTopic::from_xml(reader, &e, true)?);
40954 #[cfg(feature = "extra-children")]
40955 {
40956 child_idx += 1;
40957 }
40958 }
40959 #[cfg(feature = "extra-children")]
40960 _ => {
40961 let elem = RawXmlElement::from_empty(&e);
40963 extra_children.push(PositionedNode::new(
40964 child_idx,
40965 RawXmlNode::Element(elem),
40966 ));
40967 child_idx += 1;
40968 }
40969 #[cfg(not(feature = "extra-children"))]
40970 _ => {}
40971 }
40972 }
40973 Event::End(_) => break,
40974 Event::Eof => break,
40975 _ => {}
40976 }
40977 buf.clear();
40978 }
40979 }
40980
40981 Ok(Self {
40982 first: f_first.ok_or_else(|| ParseError::MissingAttribute("first".to_string()))?,
40983 tp: f_tp,
40984 #[cfg(feature = "extra-attrs")]
40985 extra_attrs,
40986 #[cfg(feature = "extra-children")]
40987 extra_children,
40988 })
40989 }
40990}
40991
40992impl FromXml for CTVolTopic {
40993 fn from_xml<R: BufRead>(
40994 reader: &mut Reader<R>,
40995 start_tag: &BytesStart,
40996 is_empty: bool,
40997 ) -> Result<Self, ParseError> {
40998 let mut f_cell_type = None;
40999 let mut f_value: Option<XmlString> = None;
41000 let mut f_stp = Vec::new();
41001 let mut f_tr = Vec::new();
41002 #[cfg(feature = "extra-attrs")]
41003 let mut extra_attrs = std::collections::HashMap::new();
41004 #[cfg(feature = "extra-children")]
41005 let mut extra_children = Vec::new();
41006 #[cfg(feature = "extra-children")]
41007 let mut child_idx: usize = 0;
41008
41009 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
41011 let val = String::from_utf8_lossy(&attr.value);
41012 match attr.key.local_name().as_ref() {
41013 b"t" => {
41014 f_cell_type = val.parse().ok();
41015 }
41016 #[cfg(feature = "extra-attrs")]
41017 unknown => {
41018 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
41019 extra_attrs.insert(key, val.into_owned());
41020 }
41021 #[cfg(not(feature = "extra-attrs"))]
41022 _ => {}
41023 }
41024 }
41025
41026 if !is_empty {
41028 let mut buf = Vec::new();
41029 loop {
41030 match reader.read_event_into(&mut buf)? {
41031 Event::Start(e) => {
41032 match e.local_name().as_ref() {
41033 b"v" => {
41034 f_value = Some(read_text_content(reader)?);
41035 #[cfg(feature = "extra-children")]
41036 {
41037 child_idx += 1;
41038 }
41039 }
41040 b"stp" => {
41041 f_stp.push(read_text_content(reader)?);
41042 #[cfg(feature = "extra-children")]
41043 {
41044 child_idx += 1;
41045 }
41046 }
41047 b"tr" => {
41048 f_tr.push(CTVolTopicRef::from_xml(reader, &e, false)?);
41049 #[cfg(feature = "extra-children")]
41050 {
41051 child_idx += 1;
41052 }
41053 }
41054 #[cfg(feature = "extra-children")]
41055 _ => {
41056 let elem = RawXmlElement::from_reader(reader, &e)?;
41058 extra_children.push(PositionedNode::new(
41059 child_idx,
41060 RawXmlNode::Element(elem),
41061 ));
41062 child_idx += 1;
41063 }
41064 #[cfg(not(feature = "extra-children"))]
41065 _ => {
41066 skip_element(reader)?;
41068 }
41069 }
41070 }
41071 Event::Empty(e) => {
41072 match e.local_name().as_ref() {
41073 b"v" => {
41074 f_value = Some(String::new());
41075 #[cfg(feature = "extra-children")]
41076 {
41077 child_idx += 1;
41078 }
41079 }
41080 b"stp" => {
41081 f_stp.push(String::new());
41082 #[cfg(feature = "extra-children")]
41083 {
41084 child_idx += 1;
41085 }
41086 }
41087 b"tr" => {
41088 f_tr.push(CTVolTopicRef::from_xml(reader, &e, true)?);
41089 #[cfg(feature = "extra-children")]
41090 {
41091 child_idx += 1;
41092 }
41093 }
41094 #[cfg(feature = "extra-children")]
41095 _ => {
41096 let elem = RawXmlElement::from_empty(&e);
41098 extra_children.push(PositionedNode::new(
41099 child_idx,
41100 RawXmlNode::Element(elem),
41101 ));
41102 child_idx += 1;
41103 }
41104 #[cfg(not(feature = "extra-children"))]
41105 _ => {}
41106 }
41107 }
41108 Event::End(_) => break,
41109 Event::Eof => break,
41110 _ => {}
41111 }
41112 buf.clear();
41113 }
41114 }
41115
41116 Ok(Self {
41117 cell_type: f_cell_type,
41118 value: f_value.ok_or_else(|| ParseError::MissingAttribute("v".to_string()))?,
41119 stp: f_stp,
41120 tr: f_tr,
41121 #[cfg(feature = "extra-attrs")]
41122 extra_attrs,
41123 #[cfg(feature = "extra-children")]
41124 extra_children,
41125 })
41126 }
41127}
41128
41129impl FromXml for CTVolTopicRef {
41130 fn from_xml<R: BufRead>(
41131 reader: &mut Reader<R>,
41132 start_tag: &BytesStart,
41133 is_empty: bool,
41134 ) -> Result<Self, ParseError> {
41135 let mut f_reference: Option<CellRef> = None;
41136 let mut f_style_index: Option<u32> = None;
41137 #[cfg(feature = "extra-attrs")]
41138 let mut extra_attrs = std::collections::HashMap::new();
41139
41140 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
41142 let val = String::from_utf8_lossy(&attr.value);
41143 match attr.key.local_name().as_ref() {
41144 b"r" => {
41145 f_reference = Some(val.into_owned());
41146 }
41147 b"s" => {
41148 f_style_index = val.parse().ok();
41149 }
41150 #[cfg(feature = "extra-attrs")]
41151 unknown => {
41152 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
41153 extra_attrs.insert(key, val.into_owned());
41154 }
41155 #[cfg(not(feature = "extra-attrs"))]
41156 _ => {}
41157 }
41158 }
41159
41160 if !is_empty {
41161 let mut buf = Vec::new();
41162 loop {
41163 match reader.read_event_into(&mut buf)? {
41164 Event::End(_) => break,
41165 Event::Eof => break,
41166 _ => {}
41167 }
41168 buf.clear();
41169 }
41170 }
41171
41172 Ok(Self {
41173 reference: f_reference.ok_or_else(|| ParseError::MissingAttribute("r".to_string()))?,
41174 style_index: f_style_index
41175 .ok_or_else(|| ParseError::MissingAttribute("s".to_string()))?,
41176 #[cfg(feature = "extra-attrs")]
41177 extra_attrs,
41178 })
41179 }
41180}
41181
41182impl FromXml for Workbook {
41183 fn from_xml<R: BufRead>(
41184 reader: &mut Reader<R>,
41185 start_tag: &BytesStart,
41186 is_empty: bool,
41187 ) -> Result<Self, ParseError> {
41188 let mut f_conformance = None;
41189 let mut f_file_version = None;
41190 #[cfg(feature = "sml-protection")]
41191 let mut f_file_sharing = None;
41192 let mut f_workbook_pr = None;
41193 #[cfg(feature = "sml-protection")]
41194 let mut f_workbook_protection = None;
41195 let mut f_book_views = None;
41196 let mut f_sheets: Option<Box<Sheets>> = None;
41197 #[cfg(feature = "sml-formulas-advanced")]
41198 let mut f_function_groups = None;
41199 #[cfg(feature = "sml-external")]
41200 let mut f_external_references = None;
41201 let mut f_defined_names = None;
41202 #[cfg(feature = "sml-formulas")]
41203 let mut f_calc_pr = None;
41204 #[cfg(feature = "sml-external")]
41205 let mut f_ole_size = None;
41206 #[cfg(feature = "sml-structure")]
41207 let mut f_custom_workbook_views = None;
41208 #[cfg(feature = "sml-pivot")]
41209 let mut f_pivot_caches = None;
41210 #[cfg(feature = "sml-metadata")]
41211 let mut f_smart_tag_pr = None;
41212 #[cfg(feature = "sml-metadata")]
41213 let mut f_smart_tag_types = None;
41214 #[cfg(feature = "sml-external")]
41215 let mut f_web_publishing = None;
41216 let mut f_file_recovery_pr = Vec::new();
41217 #[cfg(feature = "sml-external")]
41218 let mut f_web_publish_objects = None;
41219 #[cfg(feature = "sml-extensions")]
41220 let mut f_extension_list = None;
41221 #[cfg(feature = "extra-attrs")]
41222 let mut extra_attrs = std::collections::HashMap::new();
41223 #[cfg(feature = "extra-children")]
41224 let mut extra_children = Vec::new();
41225 #[cfg(feature = "extra-children")]
41226 let mut child_idx: usize = 0;
41227
41228 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
41230 let val = String::from_utf8_lossy(&attr.value);
41231 match attr.key.local_name().as_ref() {
41232 b"conformance" => {
41233 f_conformance = val.parse().ok();
41234 }
41235 #[cfg(feature = "extra-attrs")]
41236 unknown => {
41237 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
41238 extra_attrs.insert(key, val.into_owned());
41239 }
41240 #[cfg(not(feature = "extra-attrs"))]
41241 _ => {}
41242 }
41243 }
41244
41245 if !is_empty {
41247 let mut buf = Vec::new();
41248 loop {
41249 match reader.read_event_into(&mut buf)? {
41250 Event::Start(e) => {
41251 match e.local_name().as_ref() {
41252 b"fileVersion" => {
41253 f_file_version =
41254 Some(Box::new(FileVersion::from_xml(reader, &e, false)?));
41255 #[cfg(feature = "extra-children")]
41256 {
41257 child_idx += 1;
41258 }
41259 }
41260 #[cfg(feature = "sml-protection")]
41261 b"fileSharing" => {
41262 f_file_sharing =
41263 Some(Box::new(FileSharing::from_xml(reader, &e, false)?));
41264 #[cfg(feature = "extra-children")]
41265 {
41266 child_idx += 1;
41267 }
41268 }
41269 b"workbookPr" => {
41270 f_workbook_pr = Some(Box::new(WorkbookProperties::from_xml(
41271 reader, &e, false,
41272 )?));
41273 #[cfg(feature = "extra-children")]
41274 {
41275 child_idx += 1;
41276 }
41277 }
41278 #[cfg(feature = "sml-protection")]
41279 b"workbookProtection" => {
41280 f_workbook_protection = Some(Box::new(
41281 WorkbookProtection::from_xml(reader, &e, false)?,
41282 ));
41283 #[cfg(feature = "extra-children")]
41284 {
41285 child_idx += 1;
41286 }
41287 }
41288 b"bookViews" => {
41289 f_book_views =
41290 Some(Box::new(BookViews::from_xml(reader, &e, false)?));
41291 #[cfg(feature = "extra-children")]
41292 {
41293 child_idx += 1;
41294 }
41295 }
41296 b"sheets" => {
41297 f_sheets = Some(Box::new(Sheets::from_xml(reader, &e, false)?));
41298 #[cfg(feature = "extra-children")]
41299 {
41300 child_idx += 1;
41301 }
41302 }
41303 #[cfg(feature = "sml-formulas-advanced")]
41304 b"functionGroups" => {
41305 f_function_groups =
41306 Some(Box::new(CTFunctionGroups::from_xml(reader, &e, false)?));
41307 #[cfg(feature = "extra-children")]
41308 {
41309 child_idx += 1;
41310 }
41311 }
41312 #[cfg(feature = "sml-external")]
41313 b"externalReferences" => {
41314 f_external_references = Some(Box::new(
41315 ExternalReferences::from_xml(reader, &e, false)?,
41316 ));
41317 #[cfg(feature = "extra-children")]
41318 {
41319 child_idx += 1;
41320 }
41321 }
41322 b"definedNames" => {
41323 f_defined_names =
41324 Some(Box::new(DefinedNames::from_xml(reader, &e, false)?));
41325 #[cfg(feature = "extra-children")]
41326 {
41327 child_idx += 1;
41328 }
41329 }
41330 #[cfg(feature = "sml-formulas")]
41331 b"calcPr" => {
41332 f_calc_pr = Some(Box::new(CalculationProperties::from_xml(
41333 reader, &e, false,
41334 )?));
41335 #[cfg(feature = "extra-children")]
41336 {
41337 child_idx += 1;
41338 }
41339 }
41340 #[cfg(feature = "sml-external")]
41341 b"oleSize" => {
41342 f_ole_size =
41343 Some(Box::new(CTOleSize::from_xml(reader, &e, false)?));
41344 #[cfg(feature = "extra-children")]
41345 {
41346 child_idx += 1;
41347 }
41348 }
41349 #[cfg(feature = "sml-structure")]
41350 b"customWorkbookViews" => {
41351 f_custom_workbook_views = Some(Box::new(
41352 CustomWorkbookViews::from_xml(reader, &e, false)?,
41353 ));
41354 #[cfg(feature = "extra-children")]
41355 {
41356 child_idx += 1;
41357 }
41358 }
41359 #[cfg(feature = "sml-pivot")]
41360 b"pivotCaches" => {
41361 f_pivot_caches =
41362 Some(Box::new(PivotCaches::from_xml(reader, &e, false)?));
41363 #[cfg(feature = "extra-children")]
41364 {
41365 child_idx += 1;
41366 }
41367 }
41368 #[cfg(feature = "sml-metadata")]
41369 b"smartTagPr" => {
41370 f_smart_tag_pr =
41371 Some(Box::new(CTSmartTagPr::from_xml(reader, &e, false)?));
41372 #[cfg(feature = "extra-children")]
41373 {
41374 child_idx += 1;
41375 }
41376 }
41377 #[cfg(feature = "sml-metadata")]
41378 b"smartTagTypes" => {
41379 f_smart_tag_types =
41380 Some(Box::new(CTSmartTagTypes::from_xml(reader, &e, false)?));
41381 #[cfg(feature = "extra-children")]
41382 {
41383 child_idx += 1;
41384 }
41385 }
41386 #[cfg(feature = "sml-external")]
41387 b"webPublishing" => {
41388 f_web_publishing =
41389 Some(Box::new(WebPublishing::from_xml(reader, &e, false)?));
41390 #[cfg(feature = "extra-children")]
41391 {
41392 child_idx += 1;
41393 }
41394 }
41395 b"fileRecoveryPr" => {
41396 f_file_recovery_pr
41397 .push(FileRecoveryProperties::from_xml(reader, &e, false)?);
41398 #[cfg(feature = "extra-children")]
41399 {
41400 child_idx += 1;
41401 }
41402 }
41403 #[cfg(feature = "sml-external")]
41404 b"webPublishObjects" => {
41405 f_web_publish_objects = Some(Box::new(
41406 CTWebPublishObjects::from_xml(reader, &e, false)?,
41407 ));
41408 #[cfg(feature = "extra-children")]
41409 {
41410 child_idx += 1;
41411 }
41412 }
41413 #[cfg(feature = "sml-extensions")]
41414 b"extLst" => {
41415 f_extension_list =
41416 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
41417 #[cfg(feature = "extra-children")]
41418 {
41419 child_idx += 1;
41420 }
41421 }
41422 #[cfg(feature = "extra-children")]
41423 _ => {
41424 let elem = RawXmlElement::from_reader(reader, &e)?;
41426 extra_children.push(PositionedNode::new(
41427 child_idx,
41428 RawXmlNode::Element(elem),
41429 ));
41430 child_idx += 1;
41431 }
41432 #[cfg(not(feature = "extra-children"))]
41433 _ => {
41434 skip_element(reader)?;
41436 }
41437 }
41438 }
41439 Event::Empty(e) => {
41440 match e.local_name().as_ref() {
41441 b"fileVersion" => {
41442 f_file_version =
41443 Some(Box::new(FileVersion::from_xml(reader, &e, true)?));
41444 #[cfg(feature = "extra-children")]
41445 {
41446 child_idx += 1;
41447 }
41448 }
41449 #[cfg(feature = "sml-protection")]
41450 b"fileSharing" => {
41451 f_file_sharing =
41452 Some(Box::new(FileSharing::from_xml(reader, &e, true)?));
41453 #[cfg(feature = "extra-children")]
41454 {
41455 child_idx += 1;
41456 }
41457 }
41458 b"workbookPr" => {
41459 f_workbook_pr =
41460 Some(Box::new(WorkbookProperties::from_xml(reader, &e, true)?));
41461 #[cfg(feature = "extra-children")]
41462 {
41463 child_idx += 1;
41464 }
41465 }
41466 #[cfg(feature = "sml-protection")]
41467 b"workbookProtection" => {
41468 f_workbook_protection =
41469 Some(Box::new(WorkbookProtection::from_xml(reader, &e, true)?));
41470 #[cfg(feature = "extra-children")]
41471 {
41472 child_idx += 1;
41473 }
41474 }
41475 b"bookViews" => {
41476 f_book_views =
41477 Some(Box::new(BookViews::from_xml(reader, &e, true)?));
41478 #[cfg(feature = "extra-children")]
41479 {
41480 child_idx += 1;
41481 }
41482 }
41483 b"sheets" => {
41484 f_sheets = Some(Box::new(Sheets::from_xml(reader, &e, true)?));
41485 #[cfg(feature = "extra-children")]
41486 {
41487 child_idx += 1;
41488 }
41489 }
41490 #[cfg(feature = "sml-formulas-advanced")]
41491 b"functionGroups" => {
41492 f_function_groups =
41493 Some(Box::new(CTFunctionGroups::from_xml(reader, &e, true)?));
41494 #[cfg(feature = "extra-children")]
41495 {
41496 child_idx += 1;
41497 }
41498 }
41499 #[cfg(feature = "sml-external")]
41500 b"externalReferences" => {
41501 f_external_references =
41502 Some(Box::new(ExternalReferences::from_xml(reader, &e, true)?));
41503 #[cfg(feature = "extra-children")]
41504 {
41505 child_idx += 1;
41506 }
41507 }
41508 b"definedNames" => {
41509 f_defined_names =
41510 Some(Box::new(DefinedNames::from_xml(reader, &e, true)?));
41511 #[cfg(feature = "extra-children")]
41512 {
41513 child_idx += 1;
41514 }
41515 }
41516 #[cfg(feature = "sml-formulas")]
41517 b"calcPr" => {
41518 f_calc_pr = Some(Box::new(CalculationProperties::from_xml(
41519 reader, &e, true,
41520 )?));
41521 #[cfg(feature = "extra-children")]
41522 {
41523 child_idx += 1;
41524 }
41525 }
41526 #[cfg(feature = "sml-external")]
41527 b"oleSize" => {
41528 f_ole_size = Some(Box::new(CTOleSize::from_xml(reader, &e, true)?));
41529 #[cfg(feature = "extra-children")]
41530 {
41531 child_idx += 1;
41532 }
41533 }
41534 #[cfg(feature = "sml-structure")]
41535 b"customWorkbookViews" => {
41536 f_custom_workbook_views = Some(Box::new(
41537 CustomWorkbookViews::from_xml(reader, &e, true)?,
41538 ));
41539 #[cfg(feature = "extra-children")]
41540 {
41541 child_idx += 1;
41542 }
41543 }
41544 #[cfg(feature = "sml-pivot")]
41545 b"pivotCaches" => {
41546 f_pivot_caches =
41547 Some(Box::new(PivotCaches::from_xml(reader, &e, true)?));
41548 #[cfg(feature = "extra-children")]
41549 {
41550 child_idx += 1;
41551 }
41552 }
41553 #[cfg(feature = "sml-metadata")]
41554 b"smartTagPr" => {
41555 f_smart_tag_pr =
41556 Some(Box::new(CTSmartTagPr::from_xml(reader, &e, true)?));
41557 #[cfg(feature = "extra-children")]
41558 {
41559 child_idx += 1;
41560 }
41561 }
41562 #[cfg(feature = "sml-metadata")]
41563 b"smartTagTypes" => {
41564 f_smart_tag_types =
41565 Some(Box::new(CTSmartTagTypes::from_xml(reader, &e, true)?));
41566 #[cfg(feature = "extra-children")]
41567 {
41568 child_idx += 1;
41569 }
41570 }
41571 #[cfg(feature = "sml-external")]
41572 b"webPublishing" => {
41573 f_web_publishing =
41574 Some(Box::new(WebPublishing::from_xml(reader, &e, true)?));
41575 #[cfg(feature = "extra-children")]
41576 {
41577 child_idx += 1;
41578 }
41579 }
41580 b"fileRecoveryPr" => {
41581 f_file_recovery_pr
41582 .push(FileRecoveryProperties::from_xml(reader, &e, true)?);
41583 #[cfg(feature = "extra-children")]
41584 {
41585 child_idx += 1;
41586 }
41587 }
41588 #[cfg(feature = "sml-external")]
41589 b"webPublishObjects" => {
41590 f_web_publish_objects = Some(Box::new(
41591 CTWebPublishObjects::from_xml(reader, &e, true)?,
41592 ));
41593 #[cfg(feature = "extra-children")]
41594 {
41595 child_idx += 1;
41596 }
41597 }
41598 #[cfg(feature = "sml-extensions")]
41599 b"extLst" => {
41600 f_extension_list =
41601 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
41602 #[cfg(feature = "extra-children")]
41603 {
41604 child_idx += 1;
41605 }
41606 }
41607 #[cfg(feature = "extra-children")]
41608 _ => {
41609 let elem = RawXmlElement::from_empty(&e);
41611 extra_children.push(PositionedNode::new(
41612 child_idx,
41613 RawXmlNode::Element(elem),
41614 ));
41615 child_idx += 1;
41616 }
41617 #[cfg(not(feature = "extra-children"))]
41618 _ => {}
41619 }
41620 }
41621 Event::End(_) => break,
41622 Event::Eof => break,
41623 _ => {}
41624 }
41625 buf.clear();
41626 }
41627 }
41628
41629 Ok(Self {
41630 conformance: f_conformance,
41631 file_version: f_file_version,
41632 #[cfg(feature = "sml-protection")]
41633 file_sharing: f_file_sharing,
41634 workbook_pr: f_workbook_pr,
41635 #[cfg(feature = "sml-protection")]
41636 workbook_protection: f_workbook_protection,
41637 book_views: f_book_views,
41638 sheets: f_sheets.ok_or_else(|| ParseError::MissingAttribute("sheets".to_string()))?,
41639 #[cfg(feature = "sml-formulas-advanced")]
41640 function_groups: f_function_groups,
41641 #[cfg(feature = "sml-external")]
41642 external_references: f_external_references,
41643 defined_names: f_defined_names,
41644 #[cfg(feature = "sml-formulas")]
41645 calc_pr: f_calc_pr,
41646 #[cfg(feature = "sml-external")]
41647 ole_size: f_ole_size,
41648 #[cfg(feature = "sml-structure")]
41649 custom_workbook_views: f_custom_workbook_views,
41650 #[cfg(feature = "sml-pivot")]
41651 pivot_caches: f_pivot_caches,
41652 #[cfg(feature = "sml-metadata")]
41653 smart_tag_pr: f_smart_tag_pr,
41654 #[cfg(feature = "sml-metadata")]
41655 smart_tag_types: f_smart_tag_types,
41656 #[cfg(feature = "sml-external")]
41657 web_publishing: f_web_publishing,
41658 file_recovery_pr: f_file_recovery_pr,
41659 #[cfg(feature = "sml-external")]
41660 web_publish_objects: f_web_publish_objects,
41661 #[cfg(feature = "sml-extensions")]
41662 extension_list: f_extension_list,
41663 #[cfg(feature = "extra-attrs")]
41664 extra_attrs,
41665 #[cfg(feature = "extra-children")]
41666 extra_children,
41667 })
41668 }
41669}
41670
41671impl FromXml for FileVersion {
41672 fn from_xml<R: BufRead>(
41673 reader: &mut Reader<R>,
41674 start_tag: &BytesStart,
41675 is_empty: bool,
41676 ) -> Result<Self, ParseError> {
41677 let mut f_app_name = None;
41678 let mut f_last_edited = None;
41679 let mut f_lowest_edited = None;
41680 let mut f_rup_build = None;
41681 let mut f_code_name = None;
41682 #[cfg(feature = "extra-attrs")]
41683 let mut extra_attrs = std::collections::HashMap::new();
41684
41685 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
41687 let val = String::from_utf8_lossy(&attr.value);
41688 match attr.key.local_name().as_ref() {
41689 b"appName" => {
41690 f_app_name = Some(val.into_owned());
41691 }
41692 b"lastEdited" => {
41693 f_last_edited = Some(val.into_owned());
41694 }
41695 b"lowestEdited" => {
41696 f_lowest_edited = Some(val.into_owned());
41697 }
41698 b"rupBuild" => {
41699 f_rup_build = Some(val.into_owned());
41700 }
41701 b"codeName" => {
41702 f_code_name = Some(val.into_owned());
41703 }
41704 #[cfg(feature = "extra-attrs")]
41705 unknown => {
41706 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
41707 extra_attrs.insert(key, val.into_owned());
41708 }
41709 #[cfg(not(feature = "extra-attrs"))]
41710 _ => {}
41711 }
41712 }
41713
41714 if !is_empty {
41715 let mut buf = Vec::new();
41716 loop {
41717 match reader.read_event_into(&mut buf)? {
41718 Event::End(_) => break,
41719 Event::Eof => break,
41720 _ => {}
41721 }
41722 buf.clear();
41723 }
41724 }
41725
41726 Ok(Self {
41727 app_name: f_app_name,
41728 last_edited: f_last_edited,
41729 lowest_edited: f_lowest_edited,
41730 rup_build: f_rup_build,
41731 code_name: f_code_name,
41732 #[cfg(feature = "extra-attrs")]
41733 extra_attrs,
41734 })
41735 }
41736}
41737
41738impl FromXml for BookViews {
41739 fn from_xml<R: BufRead>(
41740 reader: &mut Reader<R>,
41741 start_tag: &BytesStart,
41742 is_empty: bool,
41743 ) -> Result<Self, ParseError> {
41744 let mut f_workbook_view = Vec::new();
41745 #[cfg(feature = "extra-children")]
41746 let mut extra_children = Vec::new();
41747 #[cfg(feature = "extra-children")]
41748 let mut child_idx: usize = 0;
41749
41750 if !is_empty {
41752 let mut buf = Vec::new();
41753 loop {
41754 match reader.read_event_into(&mut buf)? {
41755 Event::Start(e) => {
41756 match e.local_name().as_ref() {
41757 b"workbookView" => {
41758 f_workbook_view.push(BookView::from_xml(reader, &e, false)?);
41759 #[cfg(feature = "extra-children")]
41760 {
41761 child_idx += 1;
41762 }
41763 }
41764 #[cfg(feature = "extra-children")]
41765 _ => {
41766 let elem = RawXmlElement::from_reader(reader, &e)?;
41768 extra_children.push(PositionedNode::new(
41769 child_idx,
41770 RawXmlNode::Element(elem),
41771 ));
41772 child_idx += 1;
41773 }
41774 #[cfg(not(feature = "extra-children"))]
41775 _ => {
41776 skip_element(reader)?;
41778 }
41779 }
41780 }
41781 Event::Empty(e) => {
41782 match e.local_name().as_ref() {
41783 b"workbookView" => {
41784 f_workbook_view.push(BookView::from_xml(reader, &e, true)?);
41785 #[cfg(feature = "extra-children")]
41786 {
41787 child_idx += 1;
41788 }
41789 }
41790 #[cfg(feature = "extra-children")]
41791 _ => {
41792 let elem = RawXmlElement::from_empty(&e);
41794 extra_children.push(PositionedNode::new(
41795 child_idx,
41796 RawXmlNode::Element(elem),
41797 ));
41798 child_idx += 1;
41799 }
41800 #[cfg(not(feature = "extra-children"))]
41801 _ => {}
41802 }
41803 }
41804 Event::End(_) => break,
41805 Event::Eof => break,
41806 _ => {}
41807 }
41808 buf.clear();
41809 }
41810 }
41811
41812 Ok(Self {
41813 workbook_view: f_workbook_view,
41814 #[cfg(feature = "extra-children")]
41815 extra_children,
41816 })
41817 }
41818}
41819
41820impl FromXml for BookView {
41821 fn from_xml<R: BufRead>(
41822 reader: &mut Reader<R>,
41823 start_tag: &BytesStart,
41824 is_empty: bool,
41825 ) -> Result<Self, ParseError> {
41826 #[cfg(feature = "sml-structure")]
41827 let mut f_visibility = None;
41828 #[cfg(feature = "sml-structure")]
41829 let mut f_minimized = None;
41830 #[cfg(feature = "sml-structure")]
41831 let mut f_show_horizontal_scroll = None;
41832 #[cfg(feature = "sml-structure")]
41833 let mut f_show_vertical_scroll = None;
41834 #[cfg(feature = "sml-structure")]
41835 let mut f_show_sheet_tabs = None;
41836 #[cfg(feature = "sml-structure")]
41837 let mut f_x_window = None;
41838 #[cfg(feature = "sml-structure")]
41839 let mut f_y_window = None;
41840 #[cfg(feature = "sml-structure")]
41841 let mut f_window_width = None;
41842 #[cfg(feature = "sml-structure")]
41843 let mut f_window_height = None;
41844 #[cfg(feature = "sml-structure")]
41845 let mut f_tab_ratio = None;
41846 #[cfg(feature = "sml-structure")]
41847 let mut f_first_sheet = None;
41848 let mut f_active_tab = None;
41849 #[cfg(feature = "sml-filtering")]
41850 let mut f_auto_filter_date_grouping = None;
41851 #[cfg(feature = "sml-extensions")]
41852 let mut f_extension_list = None;
41853 #[cfg(feature = "extra-attrs")]
41854 let mut extra_attrs = std::collections::HashMap::new();
41855 #[cfg(feature = "extra-children")]
41856 let mut extra_children = Vec::new();
41857 #[cfg(feature = "extra-children")]
41858 let mut child_idx: usize = 0;
41859
41860 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
41862 let val = String::from_utf8_lossy(&attr.value);
41863 match attr.key.local_name().as_ref() {
41864 #[cfg(feature = "sml-structure")]
41865 b"visibility" => {
41866 f_visibility = val.parse().ok();
41867 }
41868 #[cfg(feature = "sml-structure")]
41869 b"minimized" => {
41870 f_minimized = Some(val == "true" || val == "1");
41871 }
41872 #[cfg(feature = "sml-structure")]
41873 b"showHorizontalScroll" => {
41874 f_show_horizontal_scroll = Some(val == "true" || val == "1");
41875 }
41876 #[cfg(feature = "sml-structure")]
41877 b"showVerticalScroll" => {
41878 f_show_vertical_scroll = Some(val == "true" || val == "1");
41879 }
41880 #[cfg(feature = "sml-structure")]
41881 b"showSheetTabs" => {
41882 f_show_sheet_tabs = Some(val == "true" || val == "1");
41883 }
41884 #[cfg(feature = "sml-structure")]
41885 b"xWindow" => {
41886 f_x_window = val.parse().ok();
41887 }
41888 #[cfg(feature = "sml-structure")]
41889 b"yWindow" => {
41890 f_y_window = val.parse().ok();
41891 }
41892 #[cfg(feature = "sml-structure")]
41893 b"windowWidth" => {
41894 f_window_width = val.parse().ok();
41895 }
41896 #[cfg(feature = "sml-structure")]
41897 b"windowHeight" => {
41898 f_window_height = val.parse().ok();
41899 }
41900 #[cfg(feature = "sml-structure")]
41901 b"tabRatio" => {
41902 f_tab_ratio = val.parse().ok();
41903 }
41904 #[cfg(feature = "sml-structure")]
41905 b"firstSheet" => {
41906 f_first_sheet = val.parse().ok();
41907 }
41908 b"activeTab" => {
41909 f_active_tab = val.parse().ok();
41910 }
41911 #[cfg(feature = "sml-filtering")]
41912 b"autoFilterDateGrouping" => {
41913 f_auto_filter_date_grouping = Some(val == "true" || val == "1");
41914 }
41915 #[cfg(feature = "extra-attrs")]
41916 unknown => {
41917 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
41918 extra_attrs.insert(key, val.into_owned());
41919 }
41920 #[cfg(not(feature = "extra-attrs"))]
41921 _ => {}
41922 }
41923 }
41924
41925 if !is_empty {
41927 let mut buf = Vec::new();
41928 loop {
41929 match reader.read_event_into(&mut buf)? {
41930 Event::Start(e) => {
41931 match e.local_name().as_ref() {
41932 #[cfg(feature = "sml-extensions")]
41933 b"extLst" => {
41934 f_extension_list =
41935 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
41936 #[cfg(feature = "extra-children")]
41937 {
41938 child_idx += 1;
41939 }
41940 }
41941 #[cfg(feature = "extra-children")]
41942 _ => {
41943 let elem = RawXmlElement::from_reader(reader, &e)?;
41945 extra_children.push(PositionedNode::new(
41946 child_idx,
41947 RawXmlNode::Element(elem),
41948 ));
41949 child_idx += 1;
41950 }
41951 #[cfg(not(feature = "extra-children"))]
41952 _ => {
41953 skip_element(reader)?;
41955 }
41956 }
41957 }
41958 Event::Empty(e) => {
41959 match e.local_name().as_ref() {
41960 #[cfg(feature = "sml-extensions")]
41961 b"extLst" => {
41962 f_extension_list =
41963 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
41964 #[cfg(feature = "extra-children")]
41965 {
41966 child_idx += 1;
41967 }
41968 }
41969 #[cfg(feature = "extra-children")]
41970 _ => {
41971 let elem = RawXmlElement::from_empty(&e);
41973 extra_children.push(PositionedNode::new(
41974 child_idx,
41975 RawXmlNode::Element(elem),
41976 ));
41977 child_idx += 1;
41978 }
41979 #[cfg(not(feature = "extra-children"))]
41980 _ => {}
41981 }
41982 }
41983 Event::End(_) => break,
41984 Event::Eof => break,
41985 _ => {}
41986 }
41987 buf.clear();
41988 }
41989 }
41990
41991 Ok(Self {
41992 #[cfg(feature = "sml-structure")]
41993 visibility: f_visibility,
41994 #[cfg(feature = "sml-structure")]
41995 minimized: f_minimized,
41996 #[cfg(feature = "sml-structure")]
41997 show_horizontal_scroll: f_show_horizontal_scroll,
41998 #[cfg(feature = "sml-structure")]
41999 show_vertical_scroll: f_show_vertical_scroll,
42000 #[cfg(feature = "sml-structure")]
42001 show_sheet_tabs: f_show_sheet_tabs,
42002 #[cfg(feature = "sml-structure")]
42003 x_window: f_x_window,
42004 #[cfg(feature = "sml-structure")]
42005 y_window: f_y_window,
42006 #[cfg(feature = "sml-structure")]
42007 window_width: f_window_width,
42008 #[cfg(feature = "sml-structure")]
42009 window_height: f_window_height,
42010 #[cfg(feature = "sml-structure")]
42011 tab_ratio: f_tab_ratio,
42012 #[cfg(feature = "sml-structure")]
42013 first_sheet: f_first_sheet,
42014 active_tab: f_active_tab,
42015 #[cfg(feature = "sml-filtering")]
42016 auto_filter_date_grouping: f_auto_filter_date_grouping,
42017 #[cfg(feature = "sml-extensions")]
42018 extension_list: f_extension_list,
42019 #[cfg(feature = "extra-attrs")]
42020 extra_attrs,
42021 #[cfg(feature = "extra-children")]
42022 extra_children,
42023 })
42024 }
42025}
42026
42027impl FromXml for CustomWorkbookViews {
42028 fn from_xml<R: BufRead>(
42029 reader: &mut Reader<R>,
42030 start_tag: &BytesStart,
42031 is_empty: bool,
42032 ) -> Result<Self, ParseError> {
42033 let mut f_custom_workbook_view = Vec::new();
42034 #[cfg(feature = "extra-children")]
42035 let mut extra_children = Vec::new();
42036 #[cfg(feature = "extra-children")]
42037 let mut child_idx: usize = 0;
42038
42039 if !is_empty {
42041 let mut buf = Vec::new();
42042 loop {
42043 match reader.read_event_into(&mut buf)? {
42044 Event::Start(e) => {
42045 match e.local_name().as_ref() {
42046 b"customWorkbookView" => {
42047 f_custom_workbook_view
42048 .push(CustomWorkbookView::from_xml(reader, &e, false)?);
42049 #[cfg(feature = "extra-children")]
42050 {
42051 child_idx += 1;
42052 }
42053 }
42054 #[cfg(feature = "extra-children")]
42055 _ => {
42056 let elem = RawXmlElement::from_reader(reader, &e)?;
42058 extra_children.push(PositionedNode::new(
42059 child_idx,
42060 RawXmlNode::Element(elem),
42061 ));
42062 child_idx += 1;
42063 }
42064 #[cfg(not(feature = "extra-children"))]
42065 _ => {
42066 skip_element(reader)?;
42068 }
42069 }
42070 }
42071 Event::Empty(e) => {
42072 match e.local_name().as_ref() {
42073 b"customWorkbookView" => {
42074 f_custom_workbook_view
42075 .push(CustomWorkbookView::from_xml(reader, &e, true)?);
42076 #[cfg(feature = "extra-children")]
42077 {
42078 child_idx += 1;
42079 }
42080 }
42081 #[cfg(feature = "extra-children")]
42082 _ => {
42083 let elem = RawXmlElement::from_empty(&e);
42085 extra_children.push(PositionedNode::new(
42086 child_idx,
42087 RawXmlNode::Element(elem),
42088 ));
42089 child_idx += 1;
42090 }
42091 #[cfg(not(feature = "extra-children"))]
42092 _ => {}
42093 }
42094 }
42095 Event::End(_) => break,
42096 Event::Eof => break,
42097 _ => {}
42098 }
42099 buf.clear();
42100 }
42101 }
42102
42103 Ok(Self {
42104 custom_workbook_view: f_custom_workbook_view,
42105 #[cfg(feature = "extra-children")]
42106 extra_children,
42107 })
42108 }
42109}
42110
42111impl FromXml for CustomWorkbookView {
42112 fn from_xml<R: BufRead>(
42113 reader: &mut Reader<R>,
42114 start_tag: &BytesStart,
42115 is_empty: bool,
42116 ) -> Result<Self, ParseError> {
42117 let mut f_name: Option<XmlString> = None;
42118 let mut f_guid: Option<Guid> = None;
42119 let mut f_auto_update = None;
42120 let mut f_merge_interval = None;
42121 let mut f_changes_saved_win = None;
42122 let mut f_only_sync = None;
42123 let mut f_personal_view = None;
42124 let mut f_include_print_settings = None;
42125 let mut f_include_hidden_row_col = None;
42126 let mut f_maximized = None;
42127 let mut f_minimized = None;
42128 let mut f_show_horizontal_scroll = None;
42129 let mut f_show_vertical_scroll = None;
42130 let mut f_show_sheet_tabs = None;
42131 let mut f_x_window = None;
42132 let mut f_y_window = None;
42133 let mut f_window_width: Option<u32> = None;
42134 let mut f_window_height: Option<u32> = None;
42135 let mut f_tab_ratio = None;
42136 let mut f_active_sheet_id: Option<u32> = None;
42137 let mut f_show_formula_bar = None;
42138 let mut f_show_statusbar = None;
42139 let mut f_show_comments = None;
42140 let mut f_show_objects = None;
42141 let mut f_extension_list = None;
42142 #[cfg(feature = "extra-attrs")]
42143 let mut extra_attrs = std::collections::HashMap::new();
42144 #[cfg(feature = "extra-children")]
42145 let mut extra_children = Vec::new();
42146 #[cfg(feature = "extra-children")]
42147 let mut child_idx: usize = 0;
42148
42149 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
42151 let val = String::from_utf8_lossy(&attr.value);
42152 match attr.key.local_name().as_ref() {
42153 b"name" => {
42154 f_name = Some(val.into_owned());
42155 }
42156 b"guid" => {
42157 f_guid = Some(val.into_owned());
42158 }
42159 b"autoUpdate" => {
42160 f_auto_update = Some(val == "true" || val == "1");
42161 }
42162 b"mergeInterval" => {
42163 f_merge_interval = val.parse().ok();
42164 }
42165 b"changesSavedWin" => {
42166 f_changes_saved_win = Some(val == "true" || val == "1");
42167 }
42168 b"onlySync" => {
42169 f_only_sync = Some(val == "true" || val == "1");
42170 }
42171 b"personalView" => {
42172 f_personal_view = Some(val == "true" || val == "1");
42173 }
42174 b"includePrintSettings" => {
42175 f_include_print_settings = Some(val == "true" || val == "1");
42176 }
42177 b"includeHiddenRowCol" => {
42178 f_include_hidden_row_col = Some(val == "true" || val == "1");
42179 }
42180 b"maximized" => {
42181 f_maximized = Some(val == "true" || val == "1");
42182 }
42183 b"minimized" => {
42184 f_minimized = Some(val == "true" || val == "1");
42185 }
42186 b"showHorizontalScroll" => {
42187 f_show_horizontal_scroll = Some(val == "true" || val == "1");
42188 }
42189 b"showVerticalScroll" => {
42190 f_show_vertical_scroll = Some(val == "true" || val == "1");
42191 }
42192 b"showSheetTabs" => {
42193 f_show_sheet_tabs = Some(val == "true" || val == "1");
42194 }
42195 b"xWindow" => {
42196 f_x_window = val.parse().ok();
42197 }
42198 b"yWindow" => {
42199 f_y_window = val.parse().ok();
42200 }
42201 b"windowWidth" => {
42202 f_window_width = val.parse().ok();
42203 }
42204 b"windowHeight" => {
42205 f_window_height = val.parse().ok();
42206 }
42207 b"tabRatio" => {
42208 f_tab_ratio = val.parse().ok();
42209 }
42210 b"activeSheetId" => {
42211 f_active_sheet_id = val.parse().ok();
42212 }
42213 b"showFormulaBar" => {
42214 f_show_formula_bar = Some(val == "true" || val == "1");
42215 }
42216 b"showStatusbar" => {
42217 f_show_statusbar = Some(val == "true" || val == "1");
42218 }
42219 b"showComments" => {
42220 f_show_comments = val.parse().ok();
42221 }
42222 b"showObjects" => {
42223 f_show_objects = val.parse().ok();
42224 }
42225 #[cfg(feature = "extra-attrs")]
42226 unknown => {
42227 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
42228 extra_attrs.insert(key, val.into_owned());
42229 }
42230 #[cfg(not(feature = "extra-attrs"))]
42231 _ => {}
42232 }
42233 }
42234
42235 if !is_empty {
42237 let mut buf = Vec::new();
42238 loop {
42239 match reader.read_event_into(&mut buf)? {
42240 Event::Start(e) => {
42241 match e.local_name().as_ref() {
42242 b"extLst" => {
42243 f_extension_list =
42244 Some(Box::new(ExtensionList::from_xml(reader, &e, false)?));
42245 #[cfg(feature = "extra-children")]
42246 {
42247 child_idx += 1;
42248 }
42249 }
42250 #[cfg(feature = "extra-children")]
42251 _ => {
42252 let elem = RawXmlElement::from_reader(reader, &e)?;
42254 extra_children.push(PositionedNode::new(
42255 child_idx,
42256 RawXmlNode::Element(elem),
42257 ));
42258 child_idx += 1;
42259 }
42260 #[cfg(not(feature = "extra-children"))]
42261 _ => {
42262 skip_element(reader)?;
42264 }
42265 }
42266 }
42267 Event::Empty(e) => {
42268 match e.local_name().as_ref() {
42269 b"extLst" => {
42270 f_extension_list =
42271 Some(Box::new(ExtensionList::from_xml(reader, &e, true)?));
42272 #[cfg(feature = "extra-children")]
42273 {
42274 child_idx += 1;
42275 }
42276 }
42277 #[cfg(feature = "extra-children")]
42278 _ => {
42279 let elem = RawXmlElement::from_empty(&e);
42281 extra_children.push(PositionedNode::new(
42282 child_idx,
42283 RawXmlNode::Element(elem),
42284 ));
42285 child_idx += 1;
42286 }
42287 #[cfg(not(feature = "extra-children"))]
42288 _ => {}
42289 }
42290 }
42291 Event::End(_) => break,
42292 Event::Eof => break,
42293 _ => {}
42294 }
42295 buf.clear();
42296 }
42297 }
42298
42299 Ok(Self {
42300 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
42301 guid: f_guid.ok_or_else(|| ParseError::MissingAttribute("guid".to_string()))?,
42302 auto_update: f_auto_update,
42303 merge_interval: f_merge_interval,
42304 changes_saved_win: f_changes_saved_win,
42305 only_sync: f_only_sync,
42306 personal_view: f_personal_view,
42307 include_print_settings: f_include_print_settings,
42308 include_hidden_row_col: f_include_hidden_row_col,
42309 maximized: f_maximized,
42310 minimized: f_minimized,
42311 show_horizontal_scroll: f_show_horizontal_scroll,
42312 show_vertical_scroll: f_show_vertical_scroll,
42313 show_sheet_tabs: f_show_sheet_tabs,
42314 x_window: f_x_window,
42315 y_window: f_y_window,
42316 window_width: f_window_width
42317 .ok_or_else(|| ParseError::MissingAttribute("windowWidth".to_string()))?,
42318 window_height: f_window_height
42319 .ok_or_else(|| ParseError::MissingAttribute("windowHeight".to_string()))?,
42320 tab_ratio: f_tab_ratio,
42321 active_sheet_id: f_active_sheet_id
42322 .ok_or_else(|| ParseError::MissingAttribute("activeSheetId".to_string()))?,
42323 show_formula_bar: f_show_formula_bar,
42324 show_statusbar: f_show_statusbar,
42325 show_comments: f_show_comments,
42326 show_objects: f_show_objects,
42327 extension_list: f_extension_list,
42328 #[cfg(feature = "extra-attrs")]
42329 extra_attrs,
42330 #[cfg(feature = "extra-children")]
42331 extra_children,
42332 })
42333 }
42334}
42335
42336impl FromXml for Sheets {
42337 fn from_xml<R: BufRead>(
42338 reader: &mut Reader<R>,
42339 start_tag: &BytesStart,
42340 is_empty: bool,
42341 ) -> Result<Self, ParseError> {
42342 let mut f_sheet = Vec::new();
42343 #[cfg(feature = "extra-children")]
42344 let mut extra_children = Vec::new();
42345 #[cfg(feature = "extra-children")]
42346 let mut child_idx: usize = 0;
42347
42348 if !is_empty {
42350 let mut buf = Vec::new();
42351 loop {
42352 match reader.read_event_into(&mut buf)? {
42353 Event::Start(e) => {
42354 match e.local_name().as_ref() {
42355 b"sheet" => {
42356 f_sheet.push(Sheet::from_xml(reader, &e, false)?);
42357 #[cfg(feature = "extra-children")]
42358 {
42359 child_idx += 1;
42360 }
42361 }
42362 #[cfg(feature = "extra-children")]
42363 _ => {
42364 let elem = RawXmlElement::from_reader(reader, &e)?;
42366 extra_children.push(PositionedNode::new(
42367 child_idx,
42368 RawXmlNode::Element(elem),
42369 ));
42370 child_idx += 1;
42371 }
42372 #[cfg(not(feature = "extra-children"))]
42373 _ => {
42374 skip_element(reader)?;
42376 }
42377 }
42378 }
42379 Event::Empty(e) => {
42380 match e.local_name().as_ref() {
42381 b"sheet" => {
42382 f_sheet.push(Sheet::from_xml(reader, &e, true)?);
42383 #[cfg(feature = "extra-children")]
42384 {
42385 child_idx += 1;
42386 }
42387 }
42388 #[cfg(feature = "extra-children")]
42389 _ => {
42390 let elem = RawXmlElement::from_empty(&e);
42392 extra_children.push(PositionedNode::new(
42393 child_idx,
42394 RawXmlNode::Element(elem),
42395 ));
42396 child_idx += 1;
42397 }
42398 #[cfg(not(feature = "extra-children"))]
42399 _ => {}
42400 }
42401 }
42402 Event::End(_) => break,
42403 Event::Eof => break,
42404 _ => {}
42405 }
42406 buf.clear();
42407 }
42408 }
42409
42410 Ok(Self {
42411 sheet: f_sheet,
42412 #[cfg(feature = "extra-children")]
42413 extra_children,
42414 })
42415 }
42416}
42417
42418impl FromXml for Sheet {
42419 fn from_xml<R: BufRead>(
42420 reader: &mut Reader<R>,
42421 start_tag: &BytesStart,
42422 is_empty: bool,
42423 ) -> Result<Self, ParseError> {
42424 let mut f_name: Option<XmlString> = None;
42425 let mut f_sheet_id: Option<u32> = None;
42426 #[cfg(feature = "sml-structure")]
42427 let mut f_state = None;
42428 let mut f_id: Option<STRelationshipId> = None;
42429 #[cfg(feature = "extra-attrs")]
42430 let mut extra_attrs = std::collections::HashMap::new();
42431
42432 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
42434 let val = String::from_utf8_lossy(&attr.value);
42435 match attr.key.local_name().as_ref() {
42436 b"name" => {
42437 f_name = Some(val.into_owned());
42438 }
42439 b"sheetId" => {
42440 f_sheet_id = val.parse().ok();
42441 }
42442 #[cfg(feature = "sml-structure")]
42443 b"state" => {
42444 f_state = val.parse().ok();
42445 }
42446 b"id" => {
42447 f_id = Some(val.into_owned());
42448 }
42449 #[cfg(feature = "extra-attrs")]
42450 unknown => {
42451 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
42452 extra_attrs.insert(key, val.into_owned());
42453 }
42454 #[cfg(not(feature = "extra-attrs"))]
42455 _ => {}
42456 }
42457 }
42458
42459 if !is_empty {
42460 let mut buf = Vec::new();
42461 loop {
42462 match reader.read_event_into(&mut buf)? {
42463 Event::End(_) => break,
42464 Event::Eof => break,
42465 _ => {}
42466 }
42467 buf.clear();
42468 }
42469 }
42470
42471 Ok(Self {
42472 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
42473 sheet_id: f_sheet_id
42474 .ok_or_else(|| ParseError::MissingAttribute("sheetId".to_string()))?,
42475 #[cfg(feature = "sml-structure")]
42476 state: f_state,
42477 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
42478 #[cfg(feature = "extra-attrs")]
42479 extra_attrs,
42480 })
42481 }
42482}
42483
42484impl FromXml for WorkbookProperties {
42485 fn from_xml<R: BufRead>(
42486 reader: &mut Reader<R>,
42487 start_tag: &BytesStart,
42488 is_empty: bool,
42489 ) -> Result<Self, ParseError> {
42490 let mut f_date1904 = None;
42491 let mut f_show_objects = None;
42492 let mut f_show_border_unselected_tables = None;
42493 let mut f_filter_privacy = None;
42494 let mut f_prompted_solutions = None;
42495 let mut f_show_ink_annotation = None;
42496 let mut f_backup_file = None;
42497 let mut f_save_external_link_values = None;
42498 let mut f_update_links = None;
42499 let mut f_code_name = None;
42500 let mut f_hide_pivot_field_list = None;
42501 let mut f_show_pivot_chart_filter = None;
42502 let mut f_allow_refresh_query = None;
42503 let mut f_publish_items = None;
42504 let mut f_check_compatibility = None;
42505 let mut f_auto_compress_pictures = None;
42506 let mut f_refresh_all_connections = None;
42507 let mut f_default_theme_version = None;
42508 #[cfg(feature = "extra-attrs")]
42509 let mut extra_attrs = std::collections::HashMap::new();
42510
42511 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
42513 let val = String::from_utf8_lossy(&attr.value);
42514 match attr.key.local_name().as_ref() {
42515 b"date1904" => {
42516 f_date1904 = Some(val == "true" || val == "1");
42517 }
42518 b"showObjects" => {
42519 f_show_objects = val.parse().ok();
42520 }
42521 b"showBorderUnselectedTables" => {
42522 f_show_border_unselected_tables = Some(val == "true" || val == "1");
42523 }
42524 b"filterPrivacy" => {
42525 f_filter_privacy = Some(val == "true" || val == "1");
42526 }
42527 b"promptedSolutions" => {
42528 f_prompted_solutions = Some(val == "true" || val == "1");
42529 }
42530 b"showInkAnnotation" => {
42531 f_show_ink_annotation = Some(val == "true" || val == "1");
42532 }
42533 b"backupFile" => {
42534 f_backup_file = Some(val == "true" || val == "1");
42535 }
42536 b"saveExternalLinkValues" => {
42537 f_save_external_link_values = Some(val == "true" || val == "1");
42538 }
42539 b"updateLinks" => {
42540 f_update_links = val.parse().ok();
42541 }
42542 b"codeName" => {
42543 f_code_name = Some(val.into_owned());
42544 }
42545 b"hidePivotFieldList" => {
42546 f_hide_pivot_field_list = Some(val == "true" || val == "1");
42547 }
42548 b"showPivotChartFilter" => {
42549 f_show_pivot_chart_filter = Some(val == "true" || val == "1");
42550 }
42551 b"allowRefreshQuery" => {
42552 f_allow_refresh_query = Some(val == "true" || val == "1");
42553 }
42554 b"publishItems" => {
42555 f_publish_items = Some(val == "true" || val == "1");
42556 }
42557 b"checkCompatibility" => {
42558 f_check_compatibility = Some(val == "true" || val == "1");
42559 }
42560 b"autoCompressPictures" => {
42561 f_auto_compress_pictures = Some(val == "true" || val == "1");
42562 }
42563 b"refreshAllConnections" => {
42564 f_refresh_all_connections = Some(val == "true" || val == "1");
42565 }
42566 b"defaultThemeVersion" => {
42567 f_default_theme_version = val.parse().ok();
42568 }
42569 #[cfg(feature = "extra-attrs")]
42570 unknown => {
42571 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
42572 extra_attrs.insert(key, val.into_owned());
42573 }
42574 #[cfg(not(feature = "extra-attrs"))]
42575 _ => {}
42576 }
42577 }
42578
42579 if !is_empty {
42580 let mut buf = Vec::new();
42581 loop {
42582 match reader.read_event_into(&mut buf)? {
42583 Event::End(_) => break,
42584 Event::Eof => break,
42585 _ => {}
42586 }
42587 buf.clear();
42588 }
42589 }
42590
42591 Ok(Self {
42592 date1904: f_date1904,
42593 show_objects: f_show_objects,
42594 show_border_unselected_tables: f_show_border_unselected_tables,
42595 filter_privacy: f_filter_privacy,
42596 prompted_solutions: f_prompted_solutions,
42597 show_ink_annotation: f_show_ink_annotation,
42598 backup_file: f_backup_file,
42599 save_external_link_values: f_save_external_link_values,
42600 update_links: f_update_links,
42601 code_name: f_code_name,
42602 hide_pivot_field_list: f_hide_pivot_field_list,
42603 show_pivot_chart_filter: f_show_pivot_chart_filter,
42604 allow_refresh_query: f_allow_refresh_query,
42605 publish_items: f_publish_items,
42606 check_compatibility: f_check_compatibility,
42607 auto_compress_pictures: f_auto_compress_pictures,
42608 refresh_all_connections: f_refresh_all_connections,
42609 default_theme_version: f_default_theme_version,
42610 #[cfg(feature = "extra-attrs")]
42611 extra_attrs,
42612 })
42613 }
42614}
42615
42616impl FromXml for CTSmartTagPr {
42617 fn from_xml<R: BufRead>(
42618 reader: &mut Reader<R>,
42619 start_tag: &BytesStart,
42620 is_empty: bool,
42621 ) -> Result<Self, ParseError> {
42622 let mut f_embed = None;
42623 let mut f_show = None;
42624 #[cfg(feature = "extra-attrs")]
42625 let mut extra_attrs = std::collections::HashMap::new();
42626
42627 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
42629 let val = String::from_utf8_lossy(&attr.value);
42630 match attr.key.local_name().as_ref() {
42631 b"embed" => {
42632 f_embed = Some(val == "true" || val == "1");
42633 }
42634 b"show" => {
42635 f_show = val.parse().ok();
42636 }
42637 #[cfg(feature = "extra-attrs")]
42638 unknown => {
42639 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
42640 extra_attrs.insert(key, val.into_owned());
42641 }
42642 #[cfg(not(feature = "extra-attrs"))]
42643 _ => {}
42644 }
42645 }
42646
42647 if !is_empty {
42648 let mut buf = Vec::new();
42649 loop {
42650 match reader.read_event_into(&mut buf)? {
42651 Event::End(_) => break,
42652 Event::Eof => break,
42653 _ => {}
42654 }
42655 buf.clear();
42656 }
42657 }
42658
42659 Ok(Self {
42660 embed: f_embed,
42661 show: f_show,
42662 #[cfg(feature = "extra-attrs")]
42663 extra_attrs,
42664 })
42665 }
42666}
42667
42668impl FromXml for CTSmartTagTypes {
42669 fn from_xml<R: BufRead>(
42670 reader: &mut Reader<R>,
42671 start_tag: &BytesStart,
42672 is_empty: bool,
42673 ) -> Result<Self, ParseError> {
42674 let mut f_smart_tag_type = Vec::new();
42675 #[cfg(feature = "extra-children")]
42676 let mut extra_children = Vec::new();
42677 #[cfg(feature = "extra-children")]
42678 let mut child_idx: usize = 0;
42679
42680 if !is_empty {
42682 let mut buf = Vec::new();
42683 loop {
42684 match reader.read_event_into(&mut buf)? {
42685 Event::Start(e) => {
42686 match e.local_name().as_ref() {
42687 b"smartTagType" => {
42688 f_smart_tag_type.push(CTSmartTagType::from_xml(reader, &e, false)?);
42689 #[cfg(feature = "extra-children")]
42690 {
42691 child_idx += 1;
42692 }
42693 }
42694 #[cfg(feature = "extra-children")]
42695 _ => {
42696 let elem = RawXmlElement::from_reader(reader, &e)?;
42698 extra_children.push(PositionedNode::new(
42699 child_idx,
42700 RawXmlNode::Element(elem),
42701 ));
42702 child_idx += 1;
42703 }
42704 #[cfg(not(feature = "extra-children"))]
42705 _ => {
42706 skip_element(reader)?;
42708 }
42709 }
42710 }
42711 Event::Empty(e) => {
42712 match e.local_name().as_ref() {
42713 b"smartTagType" => {
42714 f_smart_tag_type.push(CTSmartTagType::from_xml(reader, &e, true)?);
42715 #[cfg(feature = "extra-children")]
42716 {
42717 child_idx += 1;
42718 }
42719 }
42720 #[cfg(feature = "extra-children")]
42721 _ => {
42722 let elem = RawXmlElement::from_empty(&e);
42724 extra_children.push(PositionedNode::new(
42725 child_idx,
42726 RawXmlNode::Element(elem),
42727 ));
42728 child_idx += 1;
42729 }
42730 #[cfg(not(feature = "extra-children"))]
42731 _ => {}
42732 }
42733 }
42734 Event::End(_) => break,
42735 Event::Eof => break,
42736 _ => {}
42737 }
42738 buf.clear();
42739 }
42740 }
42741
42742 Ok(Self {
42743 smart_tag_type: f_smart_tag_type,
42744 #[cfg(feature = "extra-children")]
42745 extra_children,
42746 })
42747 }
42748}
42749
42750impl FromXml for CTSmartTagType {
42751 fn from_xml<R: BufRead>(
42752 reader: &mut Reader<R>,
42753 start_tag: &BytesStart,
42754 is_empty: bool,
42755 ) -> Result<Self, ParseError> {
42756 let mut f_namespace_uri = None;
42757 let mut f_name = None;
42758 let mut f_url = None;
42759 #[cfg(feature = "extra-attrs")]
42760 let mut extra_attrs = std::collections::HashMap::new();
42761
42762 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
42764 let val = String::from_utf8_lossy(&attr.value);
42765 match attr.key.local_name().as_ref() {
42766 b"namespaceUri" => {
42767 f_namespace_uri = Some(val.into_owned());
42768 }
42769 b"name" => {
42770 f_name = Some(val.into_owned());
42771 }
42772 b"url" => {
42773 f_url = Some(val.into_owned());
42774 }
42775 #[cfg(feature = "extra-attrs")]
42776 unknown => {
42777 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
42778 extra_attrs.insert(key, val.into_owned());
42779 }
42780 #[cfg(not(feature = "extra-attrs"))]
42781 _ => {}
42782 }
42783 }
42784
42785 if !is_empty {
42786 let mut buf = Vec::new();
42787 loop {
42788 match reader.read_event_into(&mut buf)? {
42789 Event::End(_) => break,
42790 Event::Eof => break,
42791 _ => {}
42792 }
42793 buf.clear();
42794 }
42795 }
42796
42797 Ok(Self {
42798 namespace_uri: f_namespace_uri,
42799 name: f_name,
42800 url: f_url,
42801 #[cfg(feature = "extra-attrs")]
42802 extra_attrs,
42803 })
42804 }
42805}
42806
42807impl FromXml for FileRecoveryProperties {
42808 fn from_xml<R: BufRead>(
42809 reader: &mut Reader<R>,
42810 start_tag: &BytesStart,
42811 is_empty: bool,
42812 ) -> Result<Self, ParseError> {
42813 let mut f_auto_recover = None;
42814 let mut f_crash_save = None;
42815 let mut f_data_extract_load = None;
42816 let mut f_repair_load = None;
42817 #[cfg(feature = "extra-attrs")]
42818 let mut extra_attrs = std::collections::HashMap::new();
42819
42820 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
42822 let val = String::from_utf8_lossy(&attr.value);
42823 match attr.key.local_name().as_ref() {
42824 b"autoRecover" => {
42825 f_auto_recover = Some(val == "true" || val == "1");
42826 }
42827 b"crashSave" => {
42828 f_crash_save = Some(val == "true" || val == "1");
42829 }
42830 b"dataExtractLoad" => {
42831 f_data_extract_load = Some(val == "true" || val == "1");
42832 }
42833 b"repairLoad" => {
42834 f_repair_load = Some(val == "true" || val == "1");
42835 }
42836 #[cfg(feature = "extra-attrs")]
42837 unknown => {
42838 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
42839 extra_attrs.insert(key, val.into_owned());
42840 }
42841 #[cfg(not(feature = "extra-attrs"))]
42842 _ => {}
42843 }
42844 }
42845
42846 if !is_empty {
42847 let mut buf = Vec::new();
42848 loop {
42849 match reader.read_event_into(&mut buf)? {
42850 Event::End(_) => break,
42851 Event::Eof => break,
42852 _ => {}
42853 }
42854 buf.clear();
42855 }
42856 }
42857
42858 Ok(Self {
42859 auto_recover: f_auto_recover,
42860 crash_save: f_crash_save,
42861 data_extract_load: f_data_extract_load,
42862 repair_load: f_repair_load,
42863 #[cfg(feature = "extra-attrs")]
42864 extra_attrs,
42865 })
42866 }
42867}
42868
42869impl FromXml for CalculationProperties {
42870 fn from_xml<R: BufRead>(
42871 reader: &mut Reader<R>,
42872 start_tag: &BytesStart,
42873 is_empty: bool,
42874 ) -> Result<Self, ParseError> {
42875 #[cfg(feature = "sml-formulas")]
42876 let mut f_calc_id = None;
42877 #[cfg(feature = "sml-formulas")]
42878 let mut f_calc_mode = None;
42879 #[cfg(feature = "sml-formulas")]
42880 let mut f_full_calc_on_load = None;
42881 #[cfg(feature = "sml-formulas")]
42882 let mut f_ref_mode = None;
42883 #[cfg(feature = "sml-formulas-advanced")]
42884 let mut f_iterate = None;
42885 #[cfg(feature = "sml-formulas-advanced")]
42886 let mut f_iterate_count = None;
42887 #[cfg(feature = "sml-formulas-advanced")]
42888 let mut f_iterate_delta = None;
42889 #[cfg(feature = "sml-formulas")]
42890 let mut f_full_precision = None;
42891 #[cfg(feature = "sml-formulas")]
42892 let mut f_calc_completed = None;
42893 #[cfg(feature = "sml-formulas")]
42894 let mut f_calc_on_save = None;
42895 #[cfg(feature = "sml-formulas-advanced")]
42896 let mut f_concurrent_calc = None;
42897 #[cfg(feature = "sml-formulas-advanced")]
42898 let mut f_concurrent_manual_count = None;
42899 #[cfg(feature = "sml-formulas")]
42900 let mut f_force_full_calc = None;
42901 #[cfg(feature = "extra-attrs")]
42902 let mut extra_attrs = std::collections::HashMap::new();
42903
42904 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
42906 let val = String::from_utf8_lossy(&attr.value);
42907 match attr.key.local_name().as_ref() {
42908 #[cfg(feature = "sml-formulas")]
42909 b"calcId" => {
42910 f_calc_id = val.parse().ok();
42911 }
42912 #[cfg(feature = "sml-formulas")]
42913 b"calcMode" => {
42914 f_calc_mode = val.parse().ok();
42915 }
42916 #[cfg(feature = "sml-formulas")]
42917 b"fullCalcOnLoad" => {
42918 f_full_calc_on_load = Some(val == "true" || val == "1");
42919 }
42920 #[cfg(feature = "sml-formulas")]
42921 b"refMode" => {
42922 f_ref_mode = val.parse().ok();
42923 }
42924 #[cfg(feature = "sml-formulas-advanced")]
42925 b"iterate" => {
42926 f_iterate = Some(val == "true" || val == "1");
42927 }
42928 #[cfg(feature = "sml-formulas-advanced")]
42929 b"iterateCount" => {
42930 f_iterate_count = val.parse().ok();
42931 }
42932 #[cfg(feature = "sml-formulas-advanced")]
42933 b"iterateDelta" => {
42934 f_iterate_delta = val.parse().ok();
42935 }
42936 #[cfg(feature = "sml-formulas")]
42937 b"fullPrecision" => {
42938 f_full_precision = Some(val == "true" || val == "1");
42939 }
42940 #[cfg(feature = "sml-formulas")]
42941 b"calcCompleted" => {
42942 f_calc_completed = Some(val == "true" || val == "1");
42943 }
42944 #[cfg(feature = "sml-formulas")]
42945 b"calcOnSave" => {
42946 f_calc_on_save = Some(val == "true" || val == "1");
42947 }
42948 #[cfg(feature = "sml-formulas-advanced")]
42949 b"concurrentCalc" => {
42950 f_concurrent_calc = Some(val == "true" || val == "1");
42951 }
42952 #[cfg(feature = "sml-formulas-advanced")]
42953 b"concurrentManualCount" => {
42954 f_concurrent_manual_count = val.parse().ok();
42955 }
42956 #[cfg(feature = "sml-formulas")]
42957 b"forceFullCalc" => {
42958 f_force_full_calc = Some(val == "true" || val == "1");
42959 }
42960 #[cfg(feature = "extra-attrs")]
42961 unknown => {
42962 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
42963 extra_attrs.insert(key, val.into_owned());
42964 }
42965 #[cfg(not(feature = "extra-attrs"))]
42966 _ => {}
42967 }
42968 }
42969
42970 if !is_empty {
42971 let mut buf = Vec::new();
42972 loop {
42973 match reader.read_event_into(&mut buf)? {
42974 Event::End(_) => break,
42975 Event::Eof => break,
42976 _ => {}
42977 }
42978 buf.clear();
42979 }
42980 }
42981
42982 Ok(Self {
42983 #[cfg(feature = "sml-formulas")]
42984 calc_id: f_calc_id,
42985 #[cfg(feature = "sml-formulas")]
42986 calc_mode: f_calc_mode,
42987 #[cfg(feature = "sml-formulas")]
42988 full_calc_on_load: f_full_calc_on_load,
42989 #[cfg(feature = "sml-formulas")]
42990 ref_mode: f_ref_mode,
42991 #[cfg(feature = "sml-formulas-advanced")]
42992 iterate: f_iterate,
42993 #[cfg(feature = "sml-formulas-advanced")]
42994 iterate_count: f_iterate_count,
42995 #[cfg(feature = "sml-formulas-advanced")]
42996 iterate_delta: f_iterate_delta,
42997 #[cfg(feature = "sml-formulas")]
42998 full_precision: f_full_precision,
42999 #[cfg(feature = "sml-formulas")]
43000 calc_completed: f_calc_completed,
43001 #[cfg(feature = "sml-formulas")]
43002 calc_on_save: f_calc_on_save,
43003 #[cfg(feature = "sml-formulas-advanced")]
43004 concurrent_calc: f_concurrent_calc,
43005 #[cfg(feature = "sml-formulas-advanced")]
43006 concurrent_manual_count: f_concurrent_manual_count,
43007 #[cfg(feature = "sml-formulas")]
43008 force_full_calc: f_force_full_calc,
43009 #[cfg(feature = "extra-attrs")]
43010 extra_attrs,
43011 })
43012 }
43013}
43014
43015impl FromXml for DefinedNames {
43016 fn from_xml<R: BufRead>(
43017 reader: &mut Reader<R>,
43018 start_tag: &BytesStart,
43019 is_empty: bool,
43020 ) -> Result<Self, ParseError> {
43021 let mut f_defined_name = Vec::new();
43022 #[cfg(feature = "extra-children")]
43023 let mut extra_children = Vec::new();
43024 #[cfg(feature = "extra-children")]
43025 let mut child_idx: usize = 0;
43026
43027 if !is_empty {
43029 let mut buf = Vec::new();
43030 loop {
43031 match reader.read_event_into(&mut buf)? {
43032 Event::Start(e) => {
43033 match e.local_name().as_ref() {
43034 b"definedName" => {
43035 f_defined_name.push(DefinedName::from_xml(reader, &e, false)?);
43036 #[cfg(feature = "extra-children")]
43037 {
43038 child_idx += 1;
43039 }
43040 }
43041 #[cfg(feature = "extra-children")]
43042 _ => {
43043 let elem = RawXmlElement::from_reader(reader, &e)?;
43045 extra_children.push(PositionedNode::new(
43046 child_idx,
43047 RawXmlNode::Element(elem),
43048 ));
43049 child_idx += 1;
43050 }
43051 #[cfg(not(feature = "extra-children"))]
43052 _ => {
43053 skip_element(reader)?;
43055 }
43056 }
43057 }
43058 Event::Empty(e) => {
43059 match e.local_name().as_ref() {
43060 b"definedName" => {
43061 f_defined_name.push(DefinedName::from_xml(reader, &e, true)?);
43062 #[cfg(feature = "extra-children")]
43063 {
43064 child_idx += 1;
43065 }
43066 }
43067 #[cfg(feature = "extra-children")]
43068 _ => {
43069 let elem = RawXmlElement::from_empty(&e);
43071 extra_children.push(PositionedNode::new(
43072 child_idx,
43073 RawXmlNode::Element(elem),
43074 ));
43075 child_idx += 1;
43076 }
43077 #[cfg(not(feature = "extra-children"))]
43078 _ => {}
43079 }
43080 }
43081 Event::End(_) => break,
43082 Event::Eof => break,
43083 _ => {}
43084 }
43085 buf.clear();
43086 }
43087 }
43088
43089 Ok(Self {
43090 defined_name: f_defined_name,
43091 #[cfg(feature = "extra-children")]
43092 extra_children,
43093 })
43094 }
43095}
43096
43097impl FromXml for DefinedName {
43098 fn from_xml<R: BufRead>(
43099 reader: &mut Reader<R>,
43100 start_tag: &BytesStart,
43101 is_empty: bool,
43102 ) -> Result<Self, ParseError> {
43103 let mut f_text = None;
43104 let mut f_name: Option<XmlString> = None;
43105 let mut f_comment = None;
43106 #[cfg(feature = "sml-formulas-advanced")]
43107 let mut f_custom_menu = None;
43108 let mut f_description = None;
43109 #[cfg(feature = "sml-formulas-advanced")]
43110 let mut f_help = None;
43111 #[cfg(feature = "sml-formulas-advanced")]
43112 let mut f_status_bar = None;
43113 let mut f_local_sheet_id = None;
43114 #[cfg(feature = "sml-structure")]
43115 let mut f_hidden = None;
43116 #[cfg(feature = "sml-formulas-advanced")]
43117 let mut f_function = None;
43118 #[cfg(feature = "sml-formulas-advanced")]
43119 let mut f_vb_procedure = None;
43120 #[cfg(feature = "sml-formulas-advanced")]
43121 let mut f_xlm = None;
43122 #[cfg(feature = "sml-formulas-advanced")]
43123 let mut f_function_group_id = None;
43124 #[cfg(feature = "sml-formulas-advanced")]
43125 let mut f_shortcut_key = None;
43126 #[cfg(feature = "sml-external")]
43127 let mut f_publish_to_server = None;
43128 #[cfg(feature = "sml-formulas-advanced")]
43129 let mut f_workbook_parameter = None;
43130 #[cfg(feature = "extra-attrs")]
43131 let mut extra_attrs = std::collections::HashMap::new();
43132 #[cfg(feature = "extra-children")]
43133 let mut extra_children = Vec::new();
43134 #[cfg(feature = "extra-children")]
43135 let mut child_idx: usize = 0;
43136
43137 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
43139 let val = String::from_utf8_lossy(&attr.value);
43140 match attr.key.local_name().as_ref() {
43141 b"name" => {
43142 f_name = Some(val.into_owned());
43143 }
43144 b"comment" => {
43145 f_comment = Some(val.into_owned());
43146 }
43147 #[cfg(feature = "sml-formulas-advanced")]
43148 b"customMenu" => {
43149 f_custom_menu = Some(val.into_owned());
43150 }
43151 b"description" => {
43152 f_description = Some(val.into_owned());
43153 }
43154 #[cfg(feature = "sml-formulas-advanced")]
43155 b"help" => {
43156 f_help = Some(val.into_owned());
43157 }
43158 #[cfg(feature = "sml-formulas-advanced")]
43159 b"statusBar" => {
43160 f_status_bar = Some(val.into_owned());
43161 }
43162 b"localSheetId" => {
43163 f_local_sheet_id = val.parse().ok();
43164 }
43165 #[cfg(feature = "sml-structure")]
43166 b"hidden" => {
43167 f_hidden = Some(val == "true" || val == "1");
43168 }
43169 #[cfg(feature = "sml-formulas-advanced")]
43170 b"function" => {
43171 f_function = Some(val == "true" || val == "1");
43172 }
43173 #[cfg(feature = "sml-formulas-advanced")]
43174 b"vbProcedure" => {
43175 f_vb_procedure = Some(val == "true" || val == "1");
43176 }
43177 #[cfg(feature = "sml-formulas-advanced")]
43178 b"xlm" => {
43179 f_xlm = Some(val == "true" || val == "1");
43180 }
43181 #[cfg(feature = "sml-formulas-advanced")]
43182 b"functionGroupId" => {
43183 f_function_group_id = val.parse().ok();
43184 }
43185 #[cfg(feature = "sml-formulas-advanced")]
43186 b"shortcutKey" => {
43187 f_shortcut_key = Some(val.into_owned());
43188 }
43189 #[cfg(feature = "sml-external")]
43190 b"publishToServer" => {
43191 f_publish_to_server = Some(val == "true" || val == "1");
43192 }
43193 #[cfg(feature = "sml-formulas-advanced")]
43194 b"workbookParameter" => {
43195 f_workbook_parameter = Some(val == "true" || val == "1");
43196 }
43197 #[cfg(feature = "extra-attrs")]
43198 unknown => {
43199 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
43200 extra_attrs.insert(key, val.into_owned());
43201 }
43202 #[cfg(not(feature = "extra-attrs"))]
43203 _ => {}
43204 }
43205 }
43206
43207 if !is_empty {
43209 let mut buf = Vec::new();
43210 loop {
43211 match reader.read_event_into(&mut buf)? {
43212 Event::Start(e) => {
43213 match e.local_name().as_ref() {
43214 #[cfg(feature = "extra-children")]
43215 _ => {
43216 let elem = RawXmlElement::from_reader(reader, &e)?;
43218 extra_children.push(PositionedNode::new(
43219 child_idx,
43220 RawXmlNode::Element(elem),
43221 ));
43222 child_idx += 1;
43223 }
43224 #[cfg(not(feature = "extra-children"))]
43225 _ => {
43226 skip_element(reader)?;
43228 }
43229 }
43230 }
43231 Event::Empty(e) => {
43232 match e.local_name().as_ref() {
43233 #[cfg(feature = "extra-children")]
43234 _ => {
43235 let elem = RawXmlElement::from_empty(&e);
43237 extra_children.push(PositionedNode::new(
43238 child_idx,
43239 RawXmlNode::Element(elem),
43240 ));
43241 child_idx += 1;
43242 }
43243 #[cfg(not(feature = "extra-children"))]
43244 _ => {}
43245 }
43246 }
43247 Event::Text(e) => {
43248 let s = e.decode().unwrap_or_default();
43249 f_text.get_or_insert_with(String::new).push_str(&s);
43250 }
43251 Event::GeneralRef(e) => {
43252 let name = e.decode().unwrap_or_default();
43253 if let Some(s) = quick_xml::escape::resolve_xml_entity(&name) {
43254 f_text.get_or_insert_with(String::new).push_str(s);
43255 }
43256 }
43257 Event::End(_) => break,
43258 Event::Eof => break,
43259 _ => {}
43260 }
43261 buf.clear();
43262 }
43263 }
43264
43265 Ok(Self {
43266 text: f_text,
43267 name: f_name.ok_or_else(|| ParseError::MissingAttribute("name".to_string()))?,
43268 comment: f_comment,
43269 #[cfg(feature = "sml-formulas-advanced")]
43270 custom_menu: f_custom_menu,
43271 description: f_description,
43272 #[cfg(feature = "sml-formulas-advanced")]
43273 help: f_help,
43274 #[cfg(feature = "sml-formulas-advanced")]
43275 status_bar: f_status_bar,
43276 local_sheet_id: f_local_sheet_id,
43277 #[cfg(feature = "sml-structure")]
43278 hidden: f_hidden,
43279 #[cfg(feature = "sml-formulas-advanced")]
43280 function: f_function,
43281 #[cfg(feature = "sml-formulas-advanced")]
43282 vb_procedure: f_vb_procedure,
43283 #[cfg(feature = "sml-formulas-advanced")]
43284 xlm: f_xlm,
43285 #[cfg(feature = "sml-formulas-advanced")]
43286 function_group_id: f_function_group_id,
43287 #[cfg(feature = "sml-formulas-advanced")]
43288 shortcut_key: f_shortcut_key,
43289 #[cfg(feature = "sml-external")]
43290 publish_to_server: f_publish_to_server,
43291 #[cfg(feature = "sml-formulas-advanced")]
43292 workbook_parameter: f_workbook_parameter,
43293 #[cfg(feature = "extra-attrs")]
43294 extra_attrs,
43295 #[cfg(feature = "extra-children")]
43296 extra_children,
43297 })
43298 }
43299}
43300
43301impl FromXml for ExternalReferences {
43302 fn from_xml<R: BufRead>(
43303 reader: &mut Reader<R>,
43304 start_tag: &BytesStart,
43305 is_empty: bool,
43306 ) -> Result<Self, ParseError> {
43307 let mut f_external_reference = Vec::new();
43308 #[cfg(feature = "extra-children")]
43309 let mut extra_children = Vec::new();
43310 #[cfg(feature = "extra-children")]
43311 let mut child_idx: usize = 0;
43312
43313 if !is_empty {
43315 let mut buf = Vec::new();
43316 loop {
43317 match reader.read_event_into(&mut buf)? {
43318 Event::Start(e) => {
43319 match e.local_name().as_ref() {
43320 b"externalReference" => {
43321 f_external_reference
43322 .push(ExternalReference::from_xml(reader, &e, false)?);
43323 #[cfg(feature = "extra-children")]
43324 {
43325 child_idx += 1;
43326 }
43327 }
43328 #[cfg(feature = "extra-children")]
43329 _ => {
43330 let elem = RawXmlElement::from_reader(reader, &e)?;
43332 extra_children.push(PositionedNode::new(
43333 child_idx,
43334 RawXmlNode::Element(elem),
43335 ));
43336 child_idx += 1;
43337 }
43338 #[cfg(not(feature = "extra-children"))]
43339 _ => {
43340 skip_element(reader)?;
43342 }
43343 }
43344 }
43345 Event::Empty(e) => {
43346 match e.local_name().as_ref() {
43347 b"externalReference" => {
43348 f_external_reference
43349 .push(ExternalReference::from_xml(reader, &e, true)?);
43350 #[cfg(feature = "extra-children")]
43351 {
43352 child_idx += 1;
43353 }
43354 }
43355 #[cfg(feature = "extra-children")]
43356 _ => {
43357 let elem = RawXmlElement::from_empty(&e);
43359 extra_children.push(PositionedNode::new(
43360 child_idx,
43361 RawXmlNode::Element(elem),
43362 ));
43363 child_idx += 1;
43364 }
43365 #[cfg(not(feature = "extra-children"))]
43366 _ => {}
43367 }
43368 }
43369 Event::End(_) => break,
43370 Event::Eof => break,
43371 _ => {}
43372 }
43373 buf.clear();
43374 }
43375 }
43376
43377 Ok(Self {
43378 external_reference: f_external_reference,
43379 #[cfg(feature = "extra-children")]
43380 extra_children,
43381 })
43382 }
43383}
43384
43385impl FromXml for ExternalReference {
43386 fn from_xml<R: BufRead>(
43387 reader: &mut Reader<R>,
43388 start_tag: &BytesStart,
43389 is_empty: bool,
43390 ) -> Result<Self, ParseError> {
43391 let mut f_id: Option<STRelationshipId> = None;
43392 #[cfg(feature = "extra-attrs")]
43393 let mut extra_attrs = std::collections::HashMap::new();
43394
43395 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
43397 let val = String::from_utf8_lossy(&attr.value);
43398 match attr.key.local_name().as_ref() {
43399 b"id" => {
43400 f_id = Some(val.into_owned());
43401 }
43402 #[cfg(feature = "extra-attrs")]
43403 unknown => {
43404 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
43405 extra_attrs.insert(key, val.into_owned());
43406 }
43407 #[cfg(not(feature = "extra-attrs"))]
43408 _ => {}
43409 }
43410 }
43411
43412 if !is_empty {
43413 let mut buf = Vec::new();
43414 loop {
43415 match reader.read_event_into(&mut buf)? {
43416 Event::End(_) => break,
43417 Event::Eof => break,
43418 _ => {}
43419 }
43420 buf.clear();
43421 }
43422 }
43423
43424 Ok(Self {
43425 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
43426 #[cfg(feature = "extra-attrs")]
43427 extra_attrs,
43428 })
43429 }
43430}
43431
43432impl FromXml for SheetBackgroundPicture {
43433 fn from_xml<R: BufRead>(
43434 reader: &mut Reader<R>,
43435 start_tag: &BytesStart,
43436 is_empty: bool,
43437 ) -> Result<Self, ParseError> {
43438 let mut f_id: Option<STRelationshipId> = None;
43439 #[cfg(feature = "extra-attrs")]
43440 let mut extra_attrs = std::collections::HashMap::new();
43441
43442 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
43444 let val = String::from_utf8_lossy(&attr.value);
43445 match attr.key.local_name().as_ref() {
43446 b"id" => {
43447 f_id = Some(val.into_owned());
43448 }
43449 #[cfg(feature = "extra-attrs")]
43450 unknown => {
43451 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
43452 extra_attrs.insert(key, val.into_owned());
43453 }
43454 #[cfg(not(feature = "extra-attrs"))]
43455 _ => {}
43456 }
43457 }
43458
43459 if !is_empty {
43460 let mut buf = Vec::new();
43461 loop {
43462 match reader.read_event_into(&mut buf)? {
43463 Event::End(_) => break,
43464 Event::Eof => break,
43465 _ => {}
43466 }
43467 buf.clear();
43468 }
43469 }
43470
43471 Ok(Self {
43472 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
43473 #[cfg(feature = "extra-attrs")]
43474 extra_attrs,
43475 })
43476 }
43477}
43478
43479impl FromXml for PivotCaches {
43480 fn from_xml<R: BufRead>(
43481 reader: &mut Reader<R>,
43482 start_tag: &BytesStart,
43483 is_empty: bool,
43484 ) -> Result<Self, ParseError> {
43485 let mut f_pivot_cache = Vec::new();
43486 #[cfg(feature = "extra-children")]
43487 let mut extra_children = Vec::new();
43488 #[cfg(feature = "extra-children")]
43489 let mut child_idx: usize = 0;
43490
43491 if !is_empty {
43493 let mut buf = Vec::new();
43494 loop {
43495 match reader.read_event_into(&mut buf)? {
43496 Event::Start(e) => {
43497 match e.local_name().as_ref() {
43498 b"pivotCache" => {
43499 f_pivot_cache.push(CTPivotCache::from_xml(reader, &e, false)?);
43500 #[cfg(feature = "extra-children")]
43501 {
43502 child_idx += 1;
43503 }
43504 }
43505 #[cfg(feature = "extra-children")]
43506 _ => {
43507 let elem = RawXmlElement::from_reader(reader, &e)?;
43509 extra_children.push(PositionedNode::new(
43510 child_idx,
43511 RawXmlNode::Element(elem),
43512 ));
43513 child_idx += 1;
43514 }
43515 #[cfg(not(feature = "extra-children"))]
43516 _ => {
43517 skip_element(reader)?;
43519 }
43520 }
43521 }
43522 Event::Empty(e) => {
43523 match e.local_name().as_ref() {
43524 b"pivotCache" => {
43525 f_pivot_cache.push(CTPivotCache::from_xml(reader, &e, true)?);
43526 #[cfg(feature = "extra-children")]
43527 {
43528 child_idx += 1;
43529 }
43530 }
43531 #[cfg(feature = "extra-children")]
43532 _ => {
43533 let elem = RawXmlElement::from_empty(&e);
43535 extra_children.push(PositionedNode::new(
43536 child_idx,
43537 RawXmlNode::Element(elem),
43538 ));
43539 child_idx += 1;
43540 }
43541 #[cfg(not(feature = "extra-children"))]
43542 _ => {}
43543 }
43544 }
43545 Event::End(_) => break,
43546 Event::Eof => break,
43547 _ => {}
43548 }
43549 buf.clear();
43550 }
43551 }
43552
43553 Ok(Self {
43554 pivot_cache: f_pivot_cache,
43555 #[cfg(feature = "extra-children")]
43556 extra_children,
43557 })
43558 }
43559}
43560
43561impl FromXml for CTPivotCache {
43562 fn from_xml<R: BufRead>(
43563 reader: &mut Reader<R>,
43564 start_tag: &BytesStart,
43565 is_empty: bool,
43566 ) -> Result<Self, ParseError> {
43567 let mut f_cache_id: Option<u32> = None;
43568 let mut f_id: Option<STRelationshipId> = None;
43569 #[cfg(feature = "extra-attrs")]
43570 let mut extra_attrs = std::collections::HashMap::new();
43571
43572 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
43574 let val = String::from_utf8_lossy(&attr.value);
43575 match attr.key.local_name().as_ref() {
43576 b"cacheId" => {
43577 f_cache_id = val.parse().ok();
43578 }
43579 b"id" => {
43580 f_id = Some(val.into_owned());
43581 }
43582 #[cfg(feature = "extra-attrs")]
43583 unknown => {
43584 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
43585 extra_attrs.insert(key, val.into_owned());
43586 }
43587 #[cfg(not(feature = "extra-attrs"))]
43588 _ => {}
43589 }
43590 }
43591
43592 if !is_empty {
43593 let mut buf = Vec::new();
43594 loop {
43595 match reader.read_event_into(&mut buf)? {
43596 Event::End(_) => break,
43597 Event::Eof => break,
43598 _ => {}
43599 }
43600 buf.clear();
43601 }
43602 }
43603
43604 Ok(Self {
43605 cache_id: f_cache_id
43606 .ok_or_else(|| ParseError::MissingAttribute("cacheId".to_string()))?,
43607 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
43608 #[cfg(feature = "extra-attrs")]
43609 extra_attrs,
43610 })
43611 }
43612}
43613
43614impl FromXml for FileSharing {
43615 fn from_xml<R: BufRead>(
43616 reader: &mut Reader<R>,
43617 start_tag: &BytesStart,
43618 is_empty: bool,
43619 ) -> Result<Self, ParseError> {
43620 let mut f_read_only_recommended = None;
43621 let mut f_user_name = None;
43622 let mut f_reservation_password = None;
43623 let mut f_algorithm_name = None;
43624 let mut f_hash_value = None;
43625 let mut f_salt_value = None;
43626 let mut f_spin_count = None;
43627 #[cfg(feature = "extra-attrs")]
43628 let mut extra_attrs = std::collections::HashMap::new();
43629
43630 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
43632 let val = String::from_utf8_lossy(&attr.value);
43633 match attr.key.local_name().as_ref() {
43634 b"readOnlyRecommended" => {
43635 f_read_only_recommended = Some(val == "true" || val == "1");
43636 }
43637 b"userName" => {
43638 f_user_name = Some(val.into_owned());
43639 }
43640 b"reservationPassword" => {
43641 f_reservation_password = decode_hex(&val);
43642 }
43643 b"algorithmName" => {
43644 f_algorithm_name = Some(val.into_owned());
43645 }
43646 b"hashValue" => {
43647 f_hash_value = decode_base64(&val);
43648 }
43649 b"saltValue" => {
43650 f_salt_value = decode_base64(&val);
43651 }
43652 b"spinCount" => {
43653 f_spin_count = val.parse().ok();
43654 }
43655 #[cfg(feature = "extra-attrs")]
43656 unknown => {
43657 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
43658 extra_attrs.insert(key, val.into_owned());
43659 }
43660 #[cfg(not(feature = "extra-attrs"))]
43661 _ => {}
43662 }
43663 }
43664
43665 if !is_empty {
43666 let mut buf = Vec::new();
43667 loop {
43668 match reader.read_event_into(&mut buf)? {
43669 Event::End(_) => break,
43670 Event::Eof => break,
43671 _ => {}
43672 }
43673 buf.clear();
43674 }
43675 }
43676
43677 Ok(Self {
43678 read_only_recommended: f_read_only_recommended,
43679 user_name: f_user_name,
43680 reservation_password: f_reservation_password,
43681 algorithm_name: f_algorithm_name,
43682 hash_value: f_hash_value,
43683 salt_value: f_salt_value,
43684 spin_count: f_spin_count,
43685 #[cfg(feature = "extra-attrs")]
43686 extra_attrs,
43687 })
43688 }
43689}
43690
43691impl FromXml for CTOleSize {
43692 fn from_xml<R: BufRead>(
43693 reader: &mut Reader<R>,
43694 start_tag: &BytesStart,
43695 is_empty: bool,
43696 ) -> Result<Self, ParseError> {
43697 let mut f_reference: Option<Reference> = None;
43698 #[cfg(feature = "extra-attrs")]
43699 let mut extra_attrs = std::collections::HashMap::new();
43700
43701 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
43703 let val = String::from_utf8_lossy(&attr.value);
43704 match attr.key.local_name().as_ref() {
43705 b"ref" => {
43706 f_reference = Some(val.into_owned());
43707 }
43708 #[cfg(feature = "extra-attrs")]
43709 unknown => {
43710 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
43711 extra_attrs.insert(key, val.into_owned());
43712 }
43713 #[cfg(not(feature = "extra-attrs"))]
43714 _ => {}
43715 }
43716 }
43717
43718 if !is_empty {
43719 let mut buf = Vec::new();
43720 loop {
43721 match reader.read_event_into(&mut buf)? {
43722 Event::End(_) => break,
43723 Event::Eof => break,
43724 _ => {}
43725 }
43726 buf.clear();
43727 }
43728 }
43729
43730 Ok(Self {
43731 reference: f_reference
43732 .ok_or_else(|| ParseError::MissingAttribute("ref".to_string()))?,
43733 #[cfg(feature = "extra-attrs")]
43734 extra_attrs,
43735 })
43736 }
43737}
43738
43739impl FromXml for WorkbookProtection {
43740 fn from_xml<R: BufRead>(
43741 reader: &mut Reader<R>,
43742 start_tag: &BytesStart,
43743 is_empty: bool,
43744 ) -> Result<Self, ParseError> {
43745 let mut f_workbook_password = None;
43746 let mut f_workbook_password_character_set = None;
43747 let mut f_revisions_password = None;
43748 let mut f_revisions_password_character_set = None;
43749 let mut f_lock_structure = None;
43750 let mut f_lock_windows = None;
43751 let mut f_lock_revision = None;
43752 let mut f_revisions_algorithm_name = None;
43753 let mut f_revisions_hash_value = None;
43754 let mut f_revisions_salt_value = None;
43755 let mut f_revisions_spin_count = None;
43756 let mut f_workbook_algorithm_name = None;
43757 let mut f_workbook_hash_value = None;
43758 let mut f_workbook_salt_value = None;
43759 let mut f_workbook_spin_count = None;
43760 #[cfg(feature = "extra-attrs")]
43761 let mut extra_attrs = std::collections::HashMap::new();
43762
43763 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
43765 let val = String::from_utf8_lossy(&attr.value);
43766 match attr.key.local_name().as_ref() {
43767 b"workbookPassword" => {
43768 f_workbook_password = decode_hex(&val);
43769 }
43770 b"workbookPasswordCharacterSet" => {
43771 f_workbook_password_character_set = Some(val.into_owned());
43772 }
43773 b"revisionsPassword" => {
43774 f_revisions_password = decode_hex(&val);
43775 }
43776 b"revisionsPasswordCharacterSet" => {
43777 f_revisions_password_character_set = Some(val.into_owned());
43778 }
43779 b"lockStructure" => {
43780 f_lock_structure = Some(val == "true" || val == "1");
43781 }
43782 b"lockWindows" => {
43783 f_lock_windows = Some(val == "true" || val == "1");
43784 }
43785 b"lockRevision" => {
43786 f_lock_revision = Some(val == "true" || val == "1");
43787 }
43788 b"revisionsAlgorithmName" => {
43789 f_revisions_algorithm_name = Some(val.into_owned());
43790 }
43791 b"revisionsHashValue" => {
43792 f_revisions_hash_value = decode_base64(&val);
43793 }
43794 b"revisionsSaltValue" => {
43795 f_revisions_salt_value = decode_base64(&val);
43796 }
43797 b"revisionsSpinCount" => {
43798 f_revisions_spin_count = val.parse().ok();
43799 }
43800 b"workbookAlgorithmName" => {
43801 f_workbook_algorithm_name = Some(val.into_owned());
43802 }
43803 b"workbookHashValue" => {
43804 f_workbook_hash_value = decode_base64(&val);
43805 }
43806 b"workbookSaltValue" => {
43807 f_workbook_salt_value = decode_base64(&val);
43808 }
43809 b"workbookSpinCount" => {
43810 f_workbook_spin_count = val.parse().ok();
43811 }
43812 #[cfg(feature = "extra-attrs")]
43813 unknown => {
43814 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
43815 extra_attrs.insert(key, val.into_owned());
43816 }
43817 #[cfg(not(feature = "extra-attrs"))]
43818 _ => {}
43819 }
43820 }
43821
43822 if !is_empty {
43823 let mut buf = Vec::new();
43824 loop {
43825 match reader.read_event_into(&mut buf)? {
43826 Event::End(_) => break,
43827 Event::Eof => break,
43828 _ => {}
43829 }
43830 buf.clear();
43831 }
43832 }
43833
43834 Ok(Self {
43835 workbook_password: f_workbook_password,
43836 workbook_password_character_set: f_workbook_password_character_set,
43837 revisions_password: f_revisions_password,
43838 revisions_password_character_set: f_revisions_password_character_set,
43839 lock_structure: f_lock_structure,
43840 lock_windows: f_lock_windows,
43841 lock_revision: f_lock_revision,
43842 revisions_algorithm_name: f_revisions_algorithm_name,
43843 revisions_hash_value: f_revisions_hash_value,
43844 revisions_salt_value: f_revisions_salt_value,
43845 revisions_spin_count: f_revisions_spin_count,
43846 workbook_algorithm_name: f_workbook_algorithm_name,
43847 workbook_hash_value: f_workbook_hash_value,
43848 workbook_salt_value: f_workbook_salt_value,
43849 workbook_spin_count: f_workbook_spin_count,
43850 #[cfg(feature = "extra-attrs")]
43851 extra_attrs,
43852 })
43853 }
43854}
43855
43856impl FromXml for WebPublishing {
43857 fn from_xml<R: BufRead>(
43858 reader: &mut Reader<R>,
43859 start_tag: &BytesStart,
43860 is_empty: bool,
43861 ) -> Result<Self, ParseError> {
43862 let mut f_css = None;
43863 let mut f_thicket = None;
43864 let mut f_long_file_names = None;
43865 let mut f_vml = None;
43866 let mut f_allow_png = None;
43867 let mut f_target_screen_size = None;
43868 let mut f_dpi = None;
43869 let mut f_code_page = None;
43870 let mut f_character_set = None;
43871 #[cfg(feature = "extra-attrs")]
43872 let mut extra_attrs = std::collections::HashMap::new();
43873
43874 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
43876 let val = String::from_utf8_lossy(&attr.value);
43877 match attr.key.local_name().as_ref() {
43878 b"css" => {
43879 f_css = Some(val == "true" || val == "1");
43880 }
43881 b"thicket" => {
43882 f_thicket = Some(val == "true" || val == "1");
43883 }
43884 b"longFileNames" => {
43885 f_long_file_names = Some(val == "true" || val == "1");
43886 }
43887 b"vml" => {
43888 f_vml = Some(val == "true" || val == "1");
43889 }
43890 b"allowPng" => {
43891 f_allow_png = Some(val == "true" || val == "1");
43892 }
43893 b"targetScreenSize" => {
43894 f_target_screen_size = val.parse().ok();
43895 }
43896 b"dpi" => {
43897 f_dpi = val.parse().ok();
43898 }
43899 b"codePage" => {
43900 f_code_page = val.parse().ok();
43901 }
43902 b"characterSet" => {
43903 f_character_set = Some(val.into_owned());
43904 }
43905 #[cfg(feature = "extra-attrs")]
43906 unknown => {
43907 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
43908 extra_attrs.insert(key, val.into_owned());
43909 }
43910 #[cfg(not(feature = "extra-attrs"))]
43911 _ => {}
43912 }
43913 }
43914
43915 if !is_empty {
43916 let mut buf = Vec::new();
43917 loop {
43918 match reader.read_event_into(&mut buf)? {
43919 Event::End(_) => break,
43920 Event::Eof => break,
43921 _ => {}
43922 }
43923 buf.clear();
43924 }
43925 }
43926
43927 Ok(Self {
43928 css: f_css,
43929 thicket: f_thicket,
43930 long_file_names: f_long_file_names,
43931 vml: f_vml,
43932 allow_png: f_allow_png,
43933 target_screen_size: f_target_screen_size,
43934 dpi: f_dpi,
43935 code_page: f_code_page,
43936 character_set: f_character_set,
43937 #[cfg(feature = "extra-attrs")]
43938 extra_attrs,
43939 })
43940 }
43941}
43942
43943impl FromXml for CTFunctionGroups {
43944 fn from_xml<R: BufRead>(
43945 reader: &mut Reader<R>,
43946 start_tag: &BytesStart,
43947 is_empty: bool,
43948 ) -> Result<Self, ParseError> {
43949 let mut f_built_in_group_count = None;
43950 let mut f_function_group = Vec::new();
43951 #[cfg(feature = "extra-attrs")]
43952 let mut extra_attrs = std::collections::HashMap::new();
43953 #[cfg(feature = "extra-children")]
43954 let mut extra_children = Vec::new();
43955 #[cfg(feature = "extra-children")]
43956 let mut child_idx: usize = 0;
43957
43958 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
43960 let val = String::from_utf8_lossy(&attr.value);
43961 match attr.key.local_name().as_ref() {
43962 b"builtInGroupCount" => {
43963 f_built_in_group_count = val.parse().ok();
43964 }
43965 #[cfg(feature = "extra-attrs")]
43966 unknown => {
43967 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
43968 extra_attrs.insert(key, val.into_owned());
43969 }
43970 #[cfg(not(feature = "extra-attrs"))]
43971 _ => {}
43972 }
43973 }
43974
43975 if !is_empty {
43977 let mut buf = Vec::new();
43978 loop {
43979 match reader.read_event_into(&mut buf)? {
43980 Event::Start(e) => {
43981 match e.local_name().as_ref() {
43982 b"functionGroup" => {
43983 f_function_group
43984 .push(CTFunctionGroup::from_xml(reader, &e, false)?);
43985 #[cfg(feature = "extra-children")]
43986 {
43987 child_idx += 1;
43988 }
43989 }
43990 #[cfg(feature = "extra-children")]
43991 _ => {
43992 let elem = RawXmlElement::from_reader(reader, &e)?;
43994 extra_children.push(PositionedNode::new(
43995 child_idx,
43996 RawXmlNode::Element(elem),
43997 ));
43998 child_idx += 1;
43999 }
44000 #[cfg(not(feature = "extra-children"))]
44001 _ => {
44002 skip_element(reader)?;
44004 }
44005 }
44006 }
44007 Event::Empty(e) => {
44008 match e.local_name().as_ref() {
44009 b"functionGroup" => {
44010 f_function_group.push(CTFunctionGroup::from_xml(reader, &e, true)?);
44011 #[cfg(feature = "extra-children")]
44012 {
44013 child_idx += 1;
44014 }
44015 }
44016 #[cfg(feature = "extra-children")]
44017 _ => {
44018 let elem = RawXmlElement::from_empty(&e);
44020 extra_children.push(PositionedNode::new(
44021 child_idx,
44022 RawXmlNode::Element(elem),
44023 ));
44024 child_idx += 1;
44025 }
44026 #[cfg(not(feature = "extra-children"))]
44027 _ => {}
44028 }
44029 }
44030 Event::End(_) => break,
44031 Event::Eof => break,
44032 _ => {}
44033 }
44034 buf.clear();
44035 }
44036 }
44037
44038 Ok(Self {
44039 built_in_group_count: f_built_in_group_count,
44040 function_group: f_function_group,
44041 #[cfg(feature = "extra-attrs")]
44042 extra_attrs,
44043 #[cfg(feature = "extra-children")]
44044 extra_children,
44045 })
44046 }
44047}
44048
44049impl FromXml for CTFunctionGroup {
44050 fn from_xml<R: BufRead>(
44051 reader: &mut Reader<R>,
44052 start_tag: &BytesStart,
44053 is_empty: bool,
44054 ) -> Result<Self, ParseError> {
44055 let mut f_name = None;
44056 #[cfg(feature = "extra-attrs")]
44057 let mut extra_attrs = std::collections::HashMap::new();
44058
44059 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
44061 let val = String::from_utf8_lossy(&attr.value);
44062 match attr.key.local_name().as_ref() {
44063 b"name" => {
44064 f_name = Some(val.into_owned());
44065 }
44066 #[cfg(feature = "extra-attrs")]
44067 unknown => {
44068 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
44069 extra_attrs.insert(key, val.into_owned());
44070 }
44071 #[cfg(not(feature = "extra-attrs"))]
44072 _ => {}
44073 }
44074 }
44075
44076 if !is_empty {
44077 let mut buf = Vec::new();
44078 loop {
44079 match reader.read_event_into(&mut buf)? {
44080 Event::End(_) => break,
44081 Event::Eof => break,
44082 _ => {}
44083 }
44084 buf.clear();
44085 }
44086 }
44087
44088 Ok(Self {
44089 name: f_name,
44090 #[cfg(feature = "extra-attrs")]
44091 extra_attrs,
44092 })
44093 }
44094}
44095
44096impl FromXml for CTWebPublishObjects {
44097 fn from_xml<R: BufRead>(
44098 reader: &mut Reader<R>,
44099 start_tag: &BytesStart,
44100 is_empty: bool,
44101 ) -> Result<Self, ParseError> {
44102 let mut f_count = None;
44103 let mut f_web_publish_object = Vec::new();
44104 #[cfg(feature = "extra-attrs")]
44105 let mut extra_attrs = std::collections::HashMap::new();
44106 #[cfg(feature = "extra-children")]
44107 let mut extra_children = Vec::new();
44108 #[cfg(feature = "extra-children")]
44109 let mut child_idx: usize = 0;
44110
44111 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
44113 let val = String::from_utf8_lossy(&attr.value);
44114 match attr.key.local_name().as_ref() {
44115 b"count" => {
44116 f_count = val.parse().ok();
44117 }
44118 #[cfg(feature = "extra-attrs")]
44119 unknown => {
44120 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
44121 extra_attrs.insert(key, val.into_owned());
44122 }
44123 #[cfg(not(feature = "extra-attrs"))]
44124 _ => {}
44125 }
44126 }
44127
44128 if !is_empty {
44130 let mut buf = Vec::new();
44131 loop {
44132 match reader.read_event_into(&mut buf)? {
44133 Event::Start(e) => {
44134 match e.local_name().as_ref() {
44135 b"webPublishObject" => {
44136 f_web_publish_object
44137 .push(CTWebPublishObject::from_xml(reader, &e, false)?);
44138 #[cfg(feature = "extra-children")]
44139 {
44140 child_idx += 1;
44141 }
44142 }
44143 #[cfg(feature = "extra-children")]
44144 _ => {
44145 let elem = RawXmlElement::from_reader(reader, &e)?;
44147 extra_children.push(PositionedNode::new(
44148 child_idx,
44149 RawXmlNode::Element(elem),
44150 ));
44151 child_idx += 1;
44152 }
44153 #[cfg(not(feature = "extra-children"))]
44154 _ => {
44155 skip_element(reader)?;
44157 }
44158 }
44159 }
44160 Event::Empty(e) => {
44161 match e.local_name().as_ref() {
44162 b"webPublishObject" => {
44163 f_web_publish_object
44164 .push(CTWebPublishObject::from_xml(reader, &e, true)?);
44165 #[cfg(feature = "extra-children")]
44166 {
44167 child_idx += 1;
44168 }
44169 }
44170 #[cfg(feature = "extra-children")]
44171 _ => {
44172 let elem = RawXmlElement::from_empty(&e);
44174 extra_children.push(PositionedNode::new(
44175 child_idx,
44176 RawXmlNode::Element(elem),
44177 ));
44178 child_idx += 1;
44179 }
44180 #[cfg(not(feature = "extra-children"))]
44181 _ => {}
44182 }
44183 }
44184 Event::End(_) => break,
44185 Event::Eof => break,
44186 _ => {}
44187 }
44188 buf.clear();
44189 }
44190 }
44191
44192 Ok(Self {
44193 count: f_count,
44194 web_publish_object: f_web_publish_object,
44195 #[cfg(feature = "extra-attrs")]
44196 extra_attrs,
44197 #[cfg(feature = "extra-children")]
44198 extra_children,
44199 })
44200 }
44201}
44202
44203impl FromXml for CTWebPublishObject {
44204 fn from_xml<R: BufRead>(
44205 reader: &mut Reader<R>,
44206 start_tag: &BytesStart,
44207 is_empty: bool,
44208 ) -> Result<Self, ParseError> {
44209 let mut f_id: Option<u32> = None;
44210 let mut f_div_id: Option<XmlString> = None;
44211 let mut f_source_object = None;
44212 let mut f_destination_file: Option<XmlString> = None;
44213 let mut f_title = None;
44214 let mut f_auto_republish = None;
44215 #[cfg(feature = "extra-attrs")]
44216 let mut extra_attrs = std::collections::HashMap::new();
44217
44218 for attr in start_tag.attributes().filter_map(|a| a.ok()) {
44220 let val = String::from_utf8_lossy(&attr.value);
44221 match attr.key.local_name().as_ref() {
44222 b"id" => {
44223 f_id = val.parse().ok();
44224 }
44225 b"divId" => {
44226 f_div_id = Some(val.into_owned());
44227 }
44228 b"sourceObject" => {
44229 f_source_object = Some(val.into_owned());
44230 }
44231 b"destinationFile" => {
44232 f_destination_file = Some(val.into_owned());
44233 }
44234 b"title" => {
44235 f_title = Some(val.into_owned());
44236 }
44237 b"autoRepublish" => {
44238 f_auto_republish = Some(val == "true" || val == "1");
44239 }
44240 #[cfg(feature = "extra-attrs")]
44241 unknown => {
44242 let key = String::from_utf8_lossy(attr.key.as_ref()).into_owned();
44243 extra_attrs.insert(key, val.into_owned());
44244 }
44245 #[cfg(not(feature = "extra-attrs"))]
44246 _ => {}
44247 }
44248 }
44249
44250 if !is_empty {
44251 let mut buf = Vec::new();
44252 loop {
44253 match reader.read_event_into(&mut buf)? {
44254 Event::End(_) => break,
44255 Event::Eof => break,
44256 _ => {}
44257 }
44258 buf.clear();
44259 }
44260 }
44261
44262 Ok(Self {
44263 id: f_id.ok_or_else(|| ParseError::MissingAttribute("id".to_string()))?,
44264 div_id: f_div_id.ok_or_else(|| ParseError::MissingAttribute("divId".to_string()))?,
44265 source_object: f_source_object,
44266 destination_file: f_destination_file
44267 .ok_or_else(|| ParseError::MissingAttribute("destinationFile".to_string()))?,
44268 title: f_title,
44269 auto_republish: f_auto_republish,
44270 #[cfg(feature = "extra-attrs")]
44271 extra_attrs,
44272 })
44273 }
44274}