如何使用lxml移除元素文本并将其转为自闭合空标签?
解决XML空元素自闭合标签问题
你当前的代码已经完成了将文本内容转为属性的操作,最终输出<elem value="1"></elem>而非自闭合标签的原因在于XML序列化的配置。
如果使用的是lxml库,只需在输出XML时添加short_empty_elements=True参数即可实现自闭合标签:
from lxml import etree # 假设doc是你的XML文档对象 for elem in doc.xpath("//elem"): elem.attrib["value"] = elem.text elem.text = '' # 生成输出时指定参数 result = etree.tostring(doc, encoding='utf-8', method='xml', short_empty_elements=True) print(result.decode('utf-8'))
如果用的是Python标准库的xml.etree.ElementTree,该库默认不支持输出自闭合标签,建议改用lxml库来实现需求,或者手动对输出文本进行替换(不推荐,容易破坏XML结构)。
内容的提问来源于stack exchange,提问作者Bálint Sass
相关产品推荐
相关产品推荐

