Key features
-
Model-driven design - Define models with attributes and types
-
Multi-format serialization - XML, JSON, YAML, TOML, Hash
-
XML namespace support - Full W3C namespace implementation
-
Validation - Built-in validation with custom rules
-
Schema generation - Generate XSD, JSON Schema, YAML Schema
-
Polymorphism - Handle multiple types elegantly
-
Collections - Work with groups of models
-
Custom types - Extend with your own value types
Getting started
Choose your path:
- Installation
-
Install Lutaml::Model and configure adapters
- Quick Start
-
Create your first model in 5 minutes
- Tutorials
-
Step-by-step guides for progressive learning
- Guides
-
Task-oriented documentation for specific goals
- Core Topics
-
Complete reference for all features
Quick example
require 'lutaml/model'
class Person < Lutaml::Model::Serializable
attribute :name, :string
attribute :age, :integer
xml do
root "person"
map_element "name", to: :name
map_element "age", to: :age
end
key_value do
map "name", to: :name
map "age", to: :age
end
end
# Serialize
person = Person.new(name: "John", age: 30)
person.to_xml # => <person><name>John</name><age>30</age></person>
person.to_json # => {"name":"John","age":30}
# Deserialize
Person.from_xml(xml_string)
Person.from_json(json_string)Documentation sections
Core Topics
Fundamental concepts, configuration, and essential features.
Tutorials
Progressive, step-by-step learning from basics to advanced topics.
Guides
Task-oriented guides for accomplishing specific goals.
Reference
Technical reference, architecture, and implementation details.