我在python脚本中具有以下代码行:
dep11 = ET.SubElement(dep1, "POVCode").text = "#declare lg_quality = LDXQual;
#if (lg_quality = 3)
#declare lg_quality = 4;
#end"
我的问题是关于

字符。我想在XML输出中看到此字符实体,但是第一个and和不断替换为&
字符实体,该实体创建了废话字符实体

。
我将文件编码为utf-8
。
import xml.etree.ElementTree as ET
...
with open("LGEO.xml", "wb") as f:
tree.write(f, "utf-8")
我最终得到了:
<POVCode>#declare lg_quality = LDXQual;&#x0A;#if (lg_quality = 3)&#x0A;#declare lg_quality = 4;&#x0A;#end</POVCode>
不确定我在做什么错。
[编辑]
我正在尝试在此处实现@mzjn指出的解决方案。
如何输出XML实体参考
我有六行代码:
dep11 = ET.SubElement(dep1, "POVCode")
dep21 = ET.SubElement(dep2, "POVCode")
dep11.text = "#declare lg_quality = LDXQual;&
#if (lg_quality = 3)&
#declare lg_quality = 4;&
#end"
dep21.text = "#declare lg_studs = LDXStuds;&
"
ET.tostring(dep11).replace('&&', '&')
ET.tostring(dep21).replace('&&', '&')
我没有错误,但是结果与我 write
时没有什么不同。
我再次被卡住。
我最终所做的是使用标准Python write
函数,而不是使用ElementTree自己的write
函数。
text = ET.tostring(root).replace("&&", "&")
with open("LGEO.xml", "wb") as f:
f.write(text.encode("utf-8"))
以上是Python代码的最后一步。我不知道将根对象转换为这样的字符串是否有缺点。它可能较慢,但对我有用。