该行为是硬连线的minidom.py(查看 中的writexml()方法class Element)。它不是要改变的,但是对于当前的实现,你可以像这样对它进行猴子补丁:
from xml.dom import minidom
t = minidom.parseString('<a><b></b></a>')
def patcher(method):
def patching(self, *args, **kwargs):
old = self.childNodes
try:
if not self.childNodes:
class Dummy(list):
def __nonzero__(self): # Python2
return True
def __bool__(self): # Python3
return True
old, self.childNodes = self.childNodes, Dummy([])
return method(self, *args, **kwargs)
finally:
self.childNodes = old
return patching
t.firstChild.__class__.writexml = patcher(t.firstChild.__class__.writexml)
print t.toprettyxml()
但我当然不能推荐这样的黑客。