1pub mod error;
2mod processor;
3
4use crate::error::Result;
5use crate::processor::get_event_stream;
6use std::fs::File;
7use std::io::Cursor;
8use std::path::Path;
9use xml::EmitterConfig;
10
11pub fn resolve_xml_includes(file_path: &Path) -> Result<String> {
21 let buffer = Vec::new();
22 let cursor = Cursor::new(buffer);
23
24 let mut writer = EmitterConfig::new()
25 .perform_indent(true)
26 .create_writer(cursor);
27
28 let output = get_event_stream(&File::open(file_path)?, Some(file_path))?;
29
30 for elem in output {
31 if let Some(event) = elem.as_writer_event() {
32 writer.write(event)?;
33 }
34 }
35
36 let resolved_content = String::from_utf8(writer.into_inner().into_inner())?;
37
38 Ok(resolved_content)
39}