You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于eSDScom XSD Schema使用Python创建XML文件的入门示例求助

入门级Python生成合法eSDScom XML示例

1. 核心思路

我们用Python内置的xml.etree.ElementTree库构建XML结构,严格贴合eSDScom XSD的节点定义和命名空间要求,同时添加基础测试数据,最后生成格式化的XML文件。

2. 完整代码示例

import xml.etree.ElementTree as ET
from xml.dom import minidom

def generate_esdscom_xml():
    # 定义eSDScom命名空间
    ns_uri = "http://www.esdscom.org/schema/sdscom"
    # 创建根节点,指定版本属性
    root = ET.Element(f"{{{ns_uri}}}SDSCom", attrib={"version": "1.0"})

    # 添加基础信息模块(必填节点)
    basic_info = ET.SubElement(root, f"{{{ns_uri}}}BasicInformation")
    ET.SubElement(basic_info, f"{{{ns_uri}}}DocumentID").text = "TEST-SDS-0001"
    ET.SubElement(basic_info, f"{{{ns_uri}}}DocumentName").text = "测试化学品安全数据单"
    ET.SubElement(basic_info, f"{{{ns_uri}}}LanguageCode").text = "zh-CN"
    ET.SubElement(basic_info, f"{{{ns_uri}}}CreationDate").text = "2024-05-20"

    # 添加产品信息模块(必填节点)
    product_info = ET.SubElement(root, f"{{{ns_uri}}}ProductInformation")
    product = ET.SubElement(product_info, f"{{{ns_uri}}}Product")
    ET.SubElement(product, f"{{{ns_uri}}}ProductName").text = "工业测试溶剂X"
    ET.SubElement(product, f"{{{ns_uri}}}CASNumber").text = "123-45-6"

    # 美化XML格式,提升可读性
    rough_xml = ET.tostring(root, 'utf-8')
    parsed_xml = minidom.parseString(rough_xml)
    pretty_xml = parsed_xml.toprettyxml(indent="  ", encoding='utf-8')

    # 保存到本地文件
    with open("test_esdscom.xml", "wb") as file:
        file.write(pretty_xml)

if __name__ == "__main__":
    generate_esdscom_xml()
    print("测试用eSDScom XML文件已生成:test_esdscom.xml")

3. 合法性验证(可选进阶)

如果要确保生成的XML完全符合XSD规范,可以使用lxml库做校验:

  1. 先安装依赖:
pip install lxml
  1. 添加校验代码:
from lxml import etree

def validate_esdscom_xml(xml_file_path, xsd_file_path):
    # 加载XSD Schema文件
    xsd_schema = etree.XMLSchema(etree.parse(xsd_file_path))
    # 加载生成的XML文件
    xml_doc = etree.parse(xml_file_path)
    
    if xsd_schema.validate(xml_doc):
        print("XML完全符合eSDScom XSD规范")
    else:
        print("XML不符合规范,错误详情:")
        for error in xsd_schema.error_log:
            print(f"行{error.line}:{error.message}")

# 调用校验(需提前将eSDScom的sdscom.xsd文件下载到本地)
validate_esdscom_xml("test_esdscom.xml", "sdscom.xsd")

关键注意事项

  • 必须严格遵循XSD定义的节点层级和命名空间,代码中使用的命名空间URI是eSDScom官方规定的,不能修改
  • 节点文本要符合XSD的数据类型要求,比如日期必须是YYYY-MM-DD格式,编码要统一用UTF-8
  • 入门阶段可以先只实现XSD中的必填节点,再逐步扩展可选内容

内容的提问来源于stack exchange,提问作者FloHab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:52:21