如何用Python 3 ElementTree创建含多个命名空间的XML文档?
解决ElementTree添加多个命名空间的问题
我懂你这种困惑——ElementTree处理XML命名空间的时候,刚开始确实容易摸不清门道,尤其是要一次性给根元素加多个命名空间声明和schemaLocation属性的时候。其实方法很简单,你只需要多次调用set()方法就行,它支持给元素添加任意数量的属性,包括多个xmlns声明。
给你调整后的完整代码:
import xml.etree.ElementTree as ET # 创建带fu01前缀的根元素 top = ET.Element("fu01:Page") # 添加xmlns:xsi命名空间 top.set("xmlns:xsi", "website1") # 添加xmlns:fu01命名空间(指定前缀对应的URI) top.set("xmlns:fu01", "website2") # 添加xsi:schemaLocation属性 top.set("xsi:schemaLocation", "website3") # 打印输出验证结果 ET.dump(top)
运行这段代码后,你会得到想要的XML结构:
<fu01:Page xmlns:xsi="website1" xmlns:fu01="website2" xsi:schemaLocation="website3" />
这里补充个小细节:如果之后你要给子元素使用fu01这个命名空间,建议提前注册前缀,避免ElementTree自动把前缀替换成ns0这类默认值,注册方法是:
ET.register_namespace('fu01', 'website2')
这样后续生成的XML里,所有使用该命名空间的元素都会保留fu01前缀,不会出现奇怪的自动替换。
内容的提问来源于stack exchange,提问作者Fred_Alb
相关产品推荐
相关产品推荐

