修复子项目提交标识,标记为“dirty”以指示未提交的更改
🚀 一键将XSD转换为多语言代码,智能生成类型安全的数据结构
XSD2Code 是一个功能强大的命令行工具,专门用于将 XML Schema Definition (XSD) 文件转换为多种编程语言的类型定义和数据结构。该工具采用智能解析技术,自动处理复杂的XSD特性,生成可直接使用的、类型安全的代码。
applyWhiteSpaceProcessing
preserve
replace
collapse
length
minLength
maxLength
pattern
fixed
# 克隆仓库 git clone https://github.com/suifei/xsd2code.git cd xsd2code # 构建工具 go build -o xsd2code cmd/main.go # 或使用Makefile make build
# 从GitHub Releases下载最新版本 # https://github.com/suifei/xsd2code/releases/latest # Linux/macOS curl -L https://github.com/suifei/xsd2code/releases/latest/download/xsd2code-linux-amd64 -o xsd2code chmod +x xsd2code # Windows (PowerShell) Invoke-WebRequest -Uri "https://github.com/suifei/xsd2code/releases/latest/download/xsd2code-windows-amd64.exe" -OutFile "xsd2code.exe"
# 如果您有Go环境 go install github.com/suifei/xsd2code@latest
# Go代码生成(默认) ./xsd2code -xsd=schema.xsd # Java代码生成 ./xsd2code -xsd=schema.xsd -lang=java -output=Types.java -package=com.example.models # C#代码生成 ./xsd2code -xsd=schema.xsd -lang=csharp -output=Types.cs -package=Example.Models -json # Python代码生成 ./xsd2code -xsd=schema.xsd -lang=python -output=types.py -package=models # 显示类型映射 ./xsd2code -xsd=schema.xsd -show-mappings # 生成验证代码 ./xsd2code -xsd=schema.xsd -validation -validation-output=validation.go # 生成测试代码 ./xsd2code -xsd=schema.xsd -tests -test-output=tests.go # 生成示例XML ./xsd2code -xsd=schema.xsd -sample
-xsd string
-lang string
-output string
-package string
-json
-comments
-validation
-validation-output string
-tests
-test-output string
-benchmarks
-sample
-show-mappings
-validate string
-debug
-strict
-plc
-help
-version
package models import ( "regexp" "strings" "encoding/xml" "time" ) // ExactLengthCodeType represents a string with pattern validation type ExactLengthCodeType string // Validate validates the ExactLengthCodeType format func (v ExactLengthCodeType) Validate() bool { // Validate against pattern: [A-Z]{5} pattern := regexp.MustCompile(`[A-Z]{5}`) return pattern.MatchString(string(v)) } // CollapsedStringType represents a string with whiteSpace processing type CollapsedStringType string // Validate validates the CollapsedStringType format func (v CollapsedStringType) Validate() bool { strVal := string(v) strVal = applyWhiteSpaceProcessing(strVal, "collapse") length := len(strVal) return length >= 1 && length <= 50 } // applyWhiteSpaceProcessing applies XSD whiteSpace facet processing func applyWhiteSpaceProcessing(value, whiteSpaceAction string) string { switch whiteSpaceAction { case "replace": value = strings.ReplaceAll(value, "\t", " ") value = strings.ReplaceAll(value, "\n", " ") value = strings.ReplaceAll(value, "\r", " ") return value case "collapse": value = strings.ReplaceAll(value, "\t", " ") value = strings.ReplaceAll(value, "\n", " ") value = strings.ReplaceAll(value, "\r", " ") value = regexp.MustCompile(`\s+`).ReplaceAllString(value, " ") value = strings.TrimSpace(value) return value case "preserve": fallthrough default: return value } }
@XmlRootElement public class TestDocument { @XmlElement private ExactLengthCodeType code; @XmlElement private PercentageType percentage; @XmlAttribute private String id; // getters and setters... }
namespace Example.Models { [XmlRoot("TestDocument")] public class TestDocument { [XmlElement("code")] public ExactLengthCodeType Code { get; set; } [XmlElement("percentage")] public PercentageType Percentage { get; set; } [XmlAttribute("id")] public string Id { get; set; } } }
工具会根据生成的代码内容智能检测所需的导入语句:
<xs:length value="5"/>
<xs:minLength value="1"/> <xs:maxLength value="50"/>
<xs:pattern value="[A-Z]{5}"/>
<xs:whiteSpace value="collapse"/>
生成的类型包含内置验证方法:
func (v ExactLengthCodeType) Validate() bool { pattern := regexp.MustCompile(`[A-Z]{5}`) return pattern.MatchString(string(v)) }
自动生成单元测试和基准测试:
./xsd2code -xsd=schema.xsd -tests -benchmarks
工具提供详细的错误信息和调试支持:
# 启用调试模式 ./xsd2code -xsd=schema.xsd -debug # 启用严格模式(严格验证XSD) ./xsd2code -xsd=schema.xsd -strict
欢迎提交Issue和Pull Request来改进这个工具。
# 克隆项目 git clone https://github.com/suifei/xsd2code.git cd xsd2code # 安装依赖 go mod tidy # 运行测试 go test ./... # 构建 make build
MIT License - 详见 LICENSE 文件
详细的文档和教程请访问我们的 GitHub Wiki:
如果您遇到问题或有功能建议,请:
感谢所有为项目做出贡献的开发者!
如果这个项目对您有帮助,请考虑:
⚡ 由 @suifei 开发维护🔥 让XSD转换变得简单高效!
感谢使用 XSD2Code! 🚀
XML Schema Definition (XSD) 解析与处理工具
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
XSD2Code - 通用XSD到多语言代码转换工具 v3.1.3 (增强版)
XSD2Code 是一个功能强大的命令行工具,专门用于将 XML Schema Definition (XSD) 文件转换为多种编程语言的类型定义和数据结构。该工具采用智能解析技术,自动处理复杂的XSD特性,生成可直接使用的、类型安全的代码。
📊 项目状态
🚀 快速特性一览
🎯 核心价值
🎉 最新更新 (v3.1)
✨ 新增功能
applyWhiteSpaceProcessing等辅助函数🔧 技术改进
主要功能
核心特性
🆕 XSD约束支持详情
WhiteSpace 处理
preserve: 保持所有空白字符replace: 替换制表符、换行符为空格collapse: 折叠多个空格为单个空格并去除首尾空格长度约束
length: 精确长度约束minLength/maxLength: 长度范围约束模式匹配
pattern: 正则表达式模式匹配固定值约束
fixed: 固定值约束多语言代码生成
安装
📦 多种安装方式
🚀 从源码构建 (推荐)
📥 直接下载二进制文件
🔧 使用Go Install
📋 系统要求
使用方法
基本命令
命令行参数
-xsd string: XSD文件路径 (必需)-lang string: 目标语言 (go, java, csharp, python) (默认: “go”)-output string: 输出文件路径 (可选)-package string: 包名 (默认: “models”)-json: 生成JSON兼容标签-comments: 包含注释 (默认: true)-validation: 生成验证代码-validation-output string: 验证代码输出路径-tests: 生成测试代码-test-output string: 测试代码输出路径-benchmarks: 生成基准测试-sample: 生成示例XML-show-mappings: 显示类型映射-validate string: 验证XML文件-debug: 启用调试模式-strict: 启用严格模式-plc: 启用PLC类型映射-help: 显示帮助-version: 显示版本生成的代码示例
Go代码示例
Java代码示例
C#代码示例
特性详解
智能导入管理
工具会根据生成的代码内容智能检测所需的导入语句:
XSD约束完整支持
字符串约束
<xs:length value="5"/><xs:minLength value="1"/> <xs:maxLength value="50"/><xs:pattern value="[A-Z]{5}"/><xs:whiteSpace value="collapse"/>数值约束
其他约束
验证代码生成
生成的类型包含内置验证方法:
测试代码生成
自动生成单元测试和基准测试:
支持的XSD特性
错误处理
工具提供详细的错误信息和调试支持:
贡献
欢迎提交Issue和Pull Request来改进这个工具。
开发环境设置
许可证
MIT License - 详见 LICENSE 文件
更新日志
v3.1 (2025-06-02)
v3.0
📈 项目统计
🏆 质量徽章
📊 活跃度
💻 兼容性
🎯 社区
📚 文档和Wiki
详细的文档和教程请访问我们的 GitHub Wiki:
支持和反馈
如果您遇到问题或有功能建议,请:
🤝 贡献者
感谢所有为项目做出贡献的开发者!
💬 社区和联系
⭐ 支持项目
如果这个项目对您有帮助,请考虑:
📊 项目里程碑
⚡ 由 @suifei 开发维护
🔥 让XSD转换变得简单高效!
感谢使用 XSD2Code! 🚀