我试图用python不断地建立一个xml-file,并且用 etree.xmlfile
从 lxml
.
我的输入是一个XML文件,其中有umlauts的属性值。我把这个文件用 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übel">Some text with umlauts like this üä</comment>
你知道是什么原因造成的吗? Do you have any idea what might cause this?
ü
在XML属性值中不需要转义(或者在元素的文本节点子节点中)。
可能是库的开发者过于谨慎,调用了一个通用的转义字符串函数,可能是为了利用其转义后的 <
,它总是要被逃掉的,和。'
或 "
当匹配属性值的分隔引号时,必须对其进行转义。
关于精确的转义要求,请参见 简化的XML转义.