如何通过Python ElementTree移除XML声明后自动添加的换行符
解决方案
以下两种都是符合Python开发规范的实现方式,可按需选择:
方案1:直接替换生成后XML的首个换行
ET生成带声明的XML时,只会在XML声明后额外新增1个换行,因此只替换第一个匹配的换行即可,不会影响XML内部的合法换行内容:
updatedxml = ET.tostring(root, encoding="utf8", method="xml").decode().replace('\n', '', 1)
方案2:手动拼接XML声明(更稳妥)
直接关闭ET的自动生成XML声明配置,手动拼接无换行的声明头,从根源避免多余换行产生:
# 生成不带声明的XML内容 raw_xml = ET.tostring(root, encoding="utf8", method="xml", xml_declaration=False).decode() # 手动拼接声明,无多余换行 updatedxml = "<?xml version='1.0' encoding='utf8'?>" + raw_xml
两种方案处理后的updatedxml再通过json.dumps序列化时,就不会出现XML声明后的多余\n转义字符。
内容的提问来源于stack exchange,提问作者hellojoshhhy
相关产品推荐
相关产品推荐

