使用XMLSpy校验xml是否合法
# 背景说明
近期大部分地区都在做或将要做数据迁移,基本所有产品的迁移工具底层都依赖了XSD文件对迁移的结构化数据对应XML文件进行初步校验,但有些XSD的问题提示不太容易理解,正好N年前我做XX数据上报时用过XMLSpy可以直接校验每个xml是否合法,在这里分享给大家。
# 前置条件
- 有问题的xml(必须是具体的xml,如“0206_05532022020607xxxx.xml”)
- 问题xml对应的完整xsd(必须是问题xml对应的xsd,如“0206_刑事xxxx案件_all.xsd”;注意必须是完整的,合并过的xsd,否则可能不能正确解析,如“0206_刑事xxxx案件.xsd”里面引用了好几个其他的xsd,最终经过merge才整合成了“0206_刑事xxxx案件_all.xsd”)
# 使用方法
- 打开问题xml(如“0206_05532022020607xxxx.xml”)
- 修改xml顶部的“xsi:schemaLocation="http://EDI.court.gov.cn/2016 0206_刑事抗诉再审审查案件_all.xsd"” 元素,一个是删除前半段“/2016/data”中的“/data”,另一个是将后半段的xsd改成具体的xsd(一般merge后的末尾会加_all)
- 将修改后的xml和xsd放在同一目录(理论上xml中写xsd的绝对路径也行,但一般放相同目录比较省事儿)
- 打开“XMLSpy.exe”
- 将修改后的xml拖到XMLSpy窗口中(或者用XMLSpy单独打开也行)
- 点击XMLSpy上方“XML”-“验证”按钮(或者打开后默认会有校验,右下角可以点击重新验证)
- 根据XMLSpy定位的问题位置进行问题定位
# 补充说明
- 也可以用XMLSpy直接打开整合后的XSD,并点击顶部“DTD/Schema”-“生成样例XML文件”,生成一份符合XSD规范的XML样例,然后比较问题XML位置的差异