生成XML对应XSD遇报错:‘root’不是架构元素求解决
问题原因与解决方法
错误根源
你误用了xmlschema.XMLSchema()类——这个类的作用是加载并解析已有的XSD schema文件,而非从XML生成XSD。当你传入XML文件时,它会尝试把XML的根节点当作schema的一部分来解析,自然会报错,因为XML的<root>元素不是XSD schema的合法元素。
修正方案
要从XML生成XSD,你需要使用xmlschema.infer_schema()方法,同时注意修复文件路径的转义问题(Python中Windows路径需用原始字符串避免转义错误)。
修正后的代码
import xmlschema # 使用原始字符串定义路径,避免转义字符问题 xml_file = r'C:\Users\phani\Downloads\02_XML_Files\MaintainItem.xml' xsd_file = r'C:\Users\phani\Downloads\02_XML_Files\output.xsd' # 从XML推断生成schema schema = xmlschema.infer_schema(xml_file) # 将生成的schema写入文件 schema.write(xsd_file) print(f"XSD file '{xsd_file}' has been generated.")
额外说明
infer_schema()方法会根据XML的结构、数据类型自动生成对应的XSD规则,支持处理带命名空间的XML。- 如果你的XML包含复杂结构或重复元素,生成的XSD会自动识别并定义相应的约束。
内容的提问来源于stack exchange,提问作者Phani Kumar Akella
相关产品推荐
相关产品推荐

