如何使用xsd-parser-rs解析XSD文件生成Rust结构体
使用xsd-parser-rs将XSD转换为Rust结构体操作步骤
1. 环境准备
确保本地已安装完整Rust工具链,可通过运行rustc --version验证安装状态。
你可以选择两种使用方式:命令行工具直接调用,或作为依赖集成到自己的Rust项目中。
命令行工具安装
运行以下命令全局安装命令行工具:cargo install xsd-parser-rs
项目依赖引入
如果要在代码中自定义解析逻辑,在Cargo.toml中添加依赖:
[dependencies] xsd-parser = "最新版本号" # 可到crates.io查询当前最新的可用版本
2. 导入待处理XSD文件
将你需要解析的XSD文件放到工作目录下,比如命名为input_schema.xsd。如果你的XSD文件有导入其他子XSD文件,需要将所有关联的XSD文件都放在同一个目录下,避免解析时找不到依赖。
3. 执行转换
命令行方式
直接在终端运行以下命令,指定输入文件路径和输出的Rust文件路径即可:xsd-parser generate --input ./input_schema.xsd --output ./src/generated/mod.rs
你可以根据需求添加可选参数:
- 加
--derive-debug:为所有生成的结构体自动派生Debug trait - 加
--derive-serde:为所有生成的结构体自动派生Serialize、Deserialize trait,适配serde序列化场景 - 加
--no-derive-default:关闭默认派生Default trait的行为
代码调用方式
如果你需要在代码中动态生成结构体,可参考以下示例代码:
use std::fs; use xsd_parser::generator::rust::RustGenerator; use xsd_parser::parser::parse_xsd; fn main() -> Result<(), Box<dyn std::error::Error>> { // 读取XSD文件内容 let xsd_content = fs::read_to_string("./input_schema.xsd")?; // 解析XSD结构 let xsd_schema = parse_xsd(&xsd_content)?; // 配置生成规则 let generator = RustGenerator::builder() .derive_debug(true) .derive_serde(true) .build(); // 生成Rust代码 let rust_code = generator.generate(&xsd_schema)?; // 写入输出文件 fs::write("./src/generated/mod.rs", rust_code)?; Ok(()) }
写完后运行cargo run即可执行转换。
4. 使用生成的结构体
在你的项目代码中引入生成的文件即可使用对应的结构体:
mod generated; use generated::*; // 导入所有生成的结构体
内容的提问来源于stack exchange,提问作者wkargul
相关产品推荐
相关产品推荐

