Skip to main content

openscenario_rs/parser/
mod.rs

1//! XML parsing and deserialization for OpenSCENARIO documents
2//!
3//! This module provides comprehensive parsing capabilities for OpenSCENARIO XML files,
4//! including scenario definitions, parameter variations, and catalog files.
5//!
6//! # Features
7//!
8//! - **Fast XML parsing** using quick-xml with zero-copy deserialization
9//! - **Type-safe validation** with comprehensive error reporting
10//! - **Choice group handling** for XSD polymorphic elements
11//! - **Catalog file support** for reusable components
12//! - **Parameter and expression** resolution
13//!
14//! # Basic Usage
15//!
16//! ```rust,no_run
17//! use openscenario_rs::parser::xml::{parse_from_file, parse_from_str};
18//! use openscenario_rs::parser::validation::ScenarioValidator;
19//!
20//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
21//! // Parse a scenario file
22//! let scenario = parse_from_file("scenario.xosc")?;
23//!
24//! // Parse from XML string
25//! let xml_content = r#"<?xml version="1.0"?>
26//! <OpenSCENARIO>
27//!   <FileHeader revMajor="1" revMinor="3" date="2024-01-01T00:00:00"
28//!               author="Example" description="Basic scenario"/>
29//!   <!-- scenario content -->
30//! </OpenSCENARIO>"#;
31//! let scenario = parse_from_str(xml_content)?;
32//!
33//! // Validate the parsed scenario
34//! let mut validator = ScenarioValidator::new();
35//! let result = validator.validate_scenario(&scenario);
36//! if result.is_valid() {
37//!     println!("Scenario is valid!");
38//! } else {
39//!     for error in result.errors {
40//!         println!("Error: {}", error.message);
41//!     }
42//! }
43//! # Ok(())
44//! # }
45//! ```
46//!
47//! # Advanced Features
48//!
49//! ## Custom Validation Configuration
50//!
51//! ```rust,no_run
52//! use openscenario_rs::parser::validation::{ScenarioValidator, ValidationConfig};
53//!
54//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
55//! # let scenario = openscenario_rs::parse_from_file("scenario.xosc")?;
56//! let config = ValidationConfig {
57//!     strict_mode: true,
58//!     validate_references: true,
59//!     validate_constraints: true,
60//!     max_errors: 50,
61//!     ..Default::default()
62//! };
63//!
64//! let mut validator = ScenarioValidator::with_config(config);
65//! let result = validator.validate_scenario(&scenario);
66//! # Ok(())
67//! # }
68//! ```
69//!
70//! ## Performance Considerations
71//!
72//! - Parsing is optimized for speed with zero-copy deserialization
73//! - Enable validation caching for repeated validation operations
74
75pub mod choice_groups;
76pub mod validation;
77pub mod xml;