如何使用Python LXML为XML根元素添加命名空间前缀?
解决LXML生成带命名空间前缀的XML根元素问题
要让根元素QSPart带上qsp:前缀,核心是让根元素明确归入指定的命名空间,而不只是声明命名空间。你的原代码仅在根元素上声明了命名空间,但根元素本身不属于该命名空间,因此LXML不会为它添加前缀。
修改后的代码
from lxml import etree nsmap = {'qsp': 'urn:qvalent:quicksuper:gateway'} ns_uri = nsmap['qsp'] # 根元素通过etree.QName指定所属命名空间 QSPart = etree.Element(etree.QName(ns_uri, 'QSPart'), nsmap=nsmap) MemberRegistrationRequest = etree.SubElement(QSPart, etree.QName(ns_uri, 'MemberRegistrationRequest')) print(etree.tostring(QSPart, pretty_print=True, encoding=str))
运行结果
<qsp:QSPart xmlns:qsp="urn:qvalent:quicksuper:gateway"> <qsp:MemberRegistrationRequest/> </qsp:QSPart>
关键说明
- 使用
etree.QName(命名空间URI, 元素名)的方式创建元素,能明确将元素归入对应命名空间 - LXML会自动为属于该命名空间的元素匹配你在
nsmap中定义的前缀qsp
内容的提问来源于stack exchange,提问作者insignificant
相关产品推荐
相关产品推荐

