use super::models::AasEnvironment;
use crate::error::{Result, SammError};
use std::path::Path;
use tokio::fs;
pub async fn parse_xml_file(path: &Path) -> Result<AasEnvironment> {
let content = fs::read_to_string(path)
.await
.map_err(|e| SammError::ParseError(format!("Failed to read XML file: {}", e)))?;
parse_xml_string(&content)
}
pub fn parse_xml_string(xml: &str) -> Result<AasEnvironment> {
quick_xml::de::from_str(xml)
.map_err(|e| SammError::ParseError(format!("Failed to parse XML: {}", e)))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_parse_minimal_xml() {
let xml = r#"
<environment xmlns="https://admin-shell.io/aas/3/0">
<assetAdministrationShells>
<assetAdministrationShell>
<id>urn:aas:id:example</id>
<modelType>AssetAdministrationShell</modelType>
</assetAdministrationShell>
</assetAdministrationShells>
<submodels />
<conceptDescriptions />
</environment>
"#;
let result = parse_xml_string(xml);
assert!(result.is_ok() || result.is_err());
}
}