为什么在使用 lxml 写入 XML 文件后,非 ASCII 字符在属性值中进行了转义?



我正在尝试使用 python 和lxml中的etree.xmlfile不断构建一个 xml 文件。

我的输入是一个 XML 文件,其中属性值中有变音符号。我用lxml读了这个,对属性的名称进行了一些更改,然后将其写入一个新文件。

这是我的代码,分解:

with etree.xmlfile(path_to_new_file, encoding="utf8") as xf:                                             
with xf.element("corpus"):                                                                      
for _, element in etree.iterparse(path_to_original_file, tag="comment"):                                               
new_element = transform_element(element)                                                                                                   
xf.write(new_element)
del element
del new_element

在原始文件中,我可能有这样的元素:

<comment title="Kübel">Some text with umlauts like this üä</comment>

但是经过处理,新文件中的相同注释如下所示:

<comment title="K&#xFC;bel">Some text with umlauts like this üä</comment>

你知道是什么原因造成的吗?

不必在 XML 属性值(或元素的文本节点子级(中转义ü

可能库的开发人员过于谨慎并调用了通用转义字符串函数,可能是为了利用其转义<,始终必须转义,以及匹配属性值的分隔引号时必须转义的'"

有关简明扼要地提出的精确转义要求,请参见简化的 XML 转义。

最新更新