Crates.io | xml-schema |
lib.rs | xml-schema |
version | 0.3.0 |
source | src |
created_at | 2020-04-07 09:39:13.509302 |
updated_at | 2023-12-19 21:50:46.058734 |
description | Structure generator from XSD source file |
homepage | https://github.com/media-io/xml-schema |
repository | https://github.com/media-io/xml-schema |
max_upload_size | |
id | 227220 |
size | 4,376 |
Generate rust code (structures and enum) from XSD
This project depends to other required libraries to start with, add them to your Cargo.toml
.
In the entrypoint of your rust project, add these folowing lines:
#[macro_use]
extern crate yaserde_derive;
use std::io::prelude::*;
use xml_schema_derive::XmlSchema;
use yaserde::{YaDeserialize, YaSerialize};
Then implement the XSD using:
#[derive(Debug, XmlSchema)]
#[xml_schema(source = "path_to_schema.xsd", target_prefix = "my_prefix")]
struct MySchema;
Remark: the MySchema
don't need to be public. It serve just as support of information.
source: Source of the XSD - XML Schema. It can be local file (related to the root of the project) or an HTTP resource.
target_prefix: The schema not define any prefix. It the targetNamespace
is declared in the schema, this attribute is required.
store_generated_code: Optional attribute for debug purpose. It store the generated Rust code into the file - the attribute value is the output filename.
log_level: To configure the logger level at the the compile time - usefull if the XSD generate some bugs. Values can be error
, warn
, info
, debug
, trace
.
module_namespace_mapping: map a namespace to a Rust module. It can be present many times to map multiple namespaces to different Rust modules.