ecitygml-io 0.0.2-alpha.5

IO operations for processing CityGML data.
Documentation
use crate::Error;
use crate::gml::codec::construction::abstract_filling_element::{
    deserialize_abstract_filling_element, serialize_abstract_filling_element,
};
use crate::gml::util::CityGmlElement;
use ecitygml_core::model::construction::{AsAbstractFillingElement, Door};
use egml::io::util::{Formatting, XmlNode, extract_xml_element_spans};

pub fn deserialize_door(xml_document: &[u8]) -> Result<Door, Error> {
    let spans = extract_xml_element_spans(xml_document)?;
    let abstract_filling_element = deserialize_abstract_filling_element(xml_document, &spans)?;
    let door = Door::from_abstract_filling_element(abstract_filling_element);

    Ok(door)
}

pub fn serialize_door(door: &Door, formatting: Formatting) -> Result<XmlNode, Error> {
    let xml_node_parts =
        serialize_abstract_filling_element(door.abstract_filling_element(), formatting)?;

    Ok(XmlNode::new(CityGmlElement::Door.into(), xml_node_parts))
}