XML 工具

XML 转 XSD从真实样本起草 Schema

添加第二份完整 XML,观察哪些字段变为可选。

XML 转 XSD

XML 样本

XSD 草案

样本只在当前浏览器处理。本地文件不会上传。

推断选项

最多 20 份样本;每份 100 万字符,总计 200 万字符,嵌套深度 100。空样本不参与推断。

结果已过期,暂不能导出。

收到接口 XML 示例却没有 Schema 时,XML 转 XSD 可先帮你梳理实际出现的结构。样本说明“出现过什么”,不能证明业务上只允许这些内容。

从 XML 生成 XSD 时,把不同记录交给同一页合并;工具会编译草案并用每份样本验证。若元素顺序或命名空间无法准确表达,就明确报错。

为什么使用 XML 转 XSD?

从多份样本发现缺失字段

两份同根文档能展示某字段只在其中一份出现。XML 转 XSD 据此为它写入 minOccurs=0,同一父节点下重复的元素则标为 maxOccurs=unbounded;未出现的分支不会被猜出来。

两棵 XML 样本树合并为一棵 Schema 树,缺失的字段标为可选。

同名元素保留各自语境

客户名称与商品名称即便同名,也可能有不同结构。局部元素声明按父路径分别建模;生成后再用全部输入校验,而非只看第一份。

两个不同父节点下的同名子节点分别连向各自的 Schema 声明。

先弄清样本能证明什么

01

添加第二份完整文档

每份样本都必须有一个完整根节点;空编辑器会被忽略。第二份文档可以揭示第一份看不到的缺失子元素或属性。

02

选择值的解释方式

智能模式保守识别布尔值、数字及 ISO 日期。若编号需一律保留文本,改用“字符串”;自动生成等待 400 毫秒,关掉后可用 Ctrl/Cmd+Enter 运行。

03

核对草案的断言

成功只表示 XSD 1.0 草案可编译且当前样本全部通过。正式使用前还要逐项核对 minOccurs、maxOccurs、类型与 xs:sequence 的顺序。

从观察结果到可验证草案

合并多个实例

XML Schema 生成器合并同根样本。某个父节点实例缺少子元素时标记可选;同级重复时放宽最大次数;属性的可选性也只依观察到的缺失判定。

保守推断值类型

XML 模式生成只识别明确的布尔值、整数、小数和 ISO 日期。空值、冲突值及带前导零的代码退回 xs:string,不凭样本编造范围或枚举。

导出前逐份校验

草案以局部声明区分不同父路径的同名元素。浏览器工作线程先编译 XSD 并检查每份 XML,通过后才开放完整结果的复制和下载。

推断边界与输入要求

观察到的必填不等于业务必填
所有样本都带某字段,草案就将它列为必填;只有实际看到缺失才会写 minOccurs=0。真实业务允许省略时,需手动调整。
不猜业务限制
不会推断枚举、正则、范围、唯一键、默认值或跨字段条件。带前导零的标识符保持字符串;相互冲突的格式也会退回 xs:string。
同根与单一命名空间
非空样本的根扩展名必须一致。第二种命名空间、带命名空间的数据属性、混合内容及相互矛盾的兄弟顺序会报错,不会静默丢弃。
仅处理本地 XML 1.0
支持粘贴或读取本地 UTF-8 文件。不解析 DOCTYPE、自定义实体、XML 1.1、远程 URL 或外部 Schema;只输出一份 XSD 1.0 文件。
有限样本不替代独立验证
最多 20 份样本,总计 200 万字符,深度 100。内置校验只覆盖输入样本;对其他 XML 请使用独立的 XSD 校验工具,业务系统是否接受仍需另行确认。

XML 转 XSD 常见问题

怎样从现有 XML 生成 XSD?

粘贴一份完整 XML,或把本地文件读入样本;XML 转 XSD 会给出草案。再加入同根样本,才能观察更多缺失字段与重复结构。

重复的 XML 元素在 XSD 中如何表示?

同一父节点下出现多次的同名子元素会得到 maxOccurs="unbounded"。这只证明样本中出现过重复,并不证明业务上真的没有数量上限。

如何将部分字段设为可选?

加入一份包含其父节点、却省略该字段的样本,草案会标记 minOccurs=0。若没有这样的实例,就在导出后按业务规则手动修改。

自动推断出的数字类型可靠吗?

这只是词法猜测。比如 001 会保留为字符串,但没有前导零的邮编可能被识别为整数;若这些值是标识符,切到“字符串”模式。

生成的 XSD 能直接证明业务规则正确吗?

不能。它会通过当前样本的 XSD 校验,但无法从实例推断枚举、允许范围或尚未出现的分支。用新样本验证,并和业务契约逐条对照。

推断结果有疑问?

现在用 XML 转 XSD 起草结构

用 XML 转 XSD 加入另一份有代表性的报文,检查可选与重复声明,再拿新文档验证草案。