如何删除空xml标记中的额外空格

时间:2015-10-24 18:45:38

标签: python xml.etree

我有一个xml文件,我正在寻找特定标记(例如:tag <x>),如果我找到他,我将其值替换/更新为特定文本(例如: test < / em>的)。

Python版本3.5.0。

示例xml文件:

<root>
 <a/>
 <b>0</b>
 <c/>
 <x>some value</x>
</root>

这是我的代码:

from xml.etree import ElementTree as et

datafile = 'input.xml'     # path to the source xml file
datafile_out = 'output.xml'    # path to the updated xml
tree = et.parse(datafile)
tree.find('.//x').text ='TEST'  # find <x> tag and write there value "TEST"
tree.write(datafile_out)    #generating updated xml file

这是我的输出:

<root>
 <a />
 <b>0</b>
 <c />
 <x>TEST</x>
</root>

一切都按预期工作。

但我的问题是空标签中有额外的空间:<a /> 标记名称 “a” “斜杠” 之间,输入xml文件中不存在。

我正在使用包含大量空标记的相当大的xml文件,因此每增加一个空间就会使这些文件更大。

有没有办法阻止 ElementTree.write()添加额外的空间?

注意:我想在Python模块中使用build,而不是安装第三方解决方案。

非常感谢您的建议!

1 个答案:

答案 0 :(得分:2)

您是否尝试过使用正则表达式。

举个例子:

yourXmlAsString.replaceAll(&#34;&gt; \ s *&lt;&#34;,&#34;&gt;&lt;&#34;); 将删除每个XML元素之间的所有空格。