我试图像这样将这个文本值写入XML标记
<Parameter name="name"><![CDATA[xyzvalue]]></Parameter>
无论何时,我将此值设置为该标记的文本。它是这样产生的
^{pr2}$我需要尽量避免代码中出现不可替换的字符
ET.SubElement(parameters, "Parameter", name="id").text = unescape("<![CDATA[xyzvalue]]>")
如何避免它像这样写入xml文件?我需要避免在XML中转义字符。在
这是我的完整代码:
map = ET.Element("Map")
parameters = ET.SubElement(map, "Parameters")
ET.SubElement(parameters, "Parameter", name="bounds").text = "-180,-85.05112877980659,180,85.05112877980659"
ET.SubElement(parameters, "Parameter", name="center").text = "0,0,2"
ET.SubElement(parameters, "Parameter", name="format").text = "png"
ET.SubElement(parameters, "Parameter", name="minzoom").text = "0"
ET.SubElement(parameters, "Parameter", name="maxzoom").text = "22"
ET.SubElement(parameters, "Parameter", name="scale").text = "1"
ET.SubElement(parameters, "Parameter", name="metatile").text = "2"
ET.SubElement(parameters, "Parameter", name="id").text = unescape("<![CDATA[xyzvalue]]>")
ET.SubElement(parameters, "Parameter", name="_updated").text = "1552288036000"
ET.SubElement(parameters, "Parameter", name="name").text = "<![CDATA[xyzvalue]]>"
ET.SubElement(parameters, "Parameter", name="tilejson").text = "<![CDATA[2.0.0]]>"
ET.SubElement(parameters, "Parameter", name="scheme").text = "<![CDATA[xyz]]>"
indent(map)
tree = ET.ElementTree(map)
tree.write("plotfinder_tiles.xml", xml_declaration=True, encoding='utf-8', method="xml")
在某种程度上,这与How to output CDATA using ElementTree不同,我在创建元素时遇到了这个问题,不能在创建xml之后对其进行修饰/删除。在
如果是我,我会用lxml's ^{} class 。在
但是,如果你想坚持使用ElementTree,你可以在转义之前重新定义
ET._escape_cdata
,并确保文本不是以<![CDATA[
开头,也不是以]]>
结尾。在示例。。。在
Python 3。
XML输出(测试.xml;印刷精美,便于阅读)
^{pr2}$更新:Python2.7的函数
相关问题 更多 >
编程相关推荐