擅长:python、mysql、java
<p>以下是我不想使用lxml而快速想到的:</p>
<pre><code>from xml.dom import minidom
from xml.dom.minidom import Node
def remove_blanks(node):
for x in node.childNodes:
if x.nodeType == Node.TEXT_NODE:
if x.nodeValue:
x.nodeValue = x.nodeValue.strip()
elif x.nodeType == Node.ELEMENT_NODE:
remove_blanks(x)
xml = minidom.parse('file.xml')
remove_blanks(xml)
xml.normalize()
with file('file.xml', 'w') as result:
result.write(xml.toprettyxml(indent = ' '))
</code></pre>
<p>我真的只需要用其他损坏的缩进来重新缩进XML文件。它不尊重<code>preserve</code>指令,但是,老实说,处理XMLs的许多其他软件也是如此,这是一个相当有趣的要求:)而且,您可以很容易地将这种功能添加到上面的代码中(只需检查<code>space</code>属性,如果它的值是'preserve'就不会再出现)</p>