Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1691418
  • 博文数量: 410
  • 博客积分: 9563
  • 博客等级: 中将
  • 技术积分: 4517
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-03 19:59
个人简介

文章分类

全部博文(410)

文章存档

2017年(6)

2016年(1)

2015年(3)

2014年(4)

2013年(32)

2012年(45)

2011年(179)

2010年(140)

分类: Python/Ruby

2011-01-20 22:40:08

关于minidom美化xml文件格式,参考了limodou的这篇文档,
但是有问题,就是每次都多出很多空行,这篇是详细的问题描述和解决思路
我根据思路解决后的代码
  1. #调用例子   
  2. #保存xml结果到文件
  3. #遍历nodes,删除所有空格元素
  4. domcopy = domcomm.cloneNode(True)
  5. clearspace(domcopy, domcopy.documentElement)
  6. Indent(domcopy, domcopy.documentElement)
  7. f=file(commfilename,'w')
  8. writer=codecs.lookup('utf-8')[3](f)
  9. domcopy.writexml(writer,encoding='utf-8')
  10. writer.close

  11. def clearspace(dom, node):
  12.     '''
  13.     删除xml文件中的所有空行
  14.     '''
  15.     children = node.childNodes[:]
  16.     if children:
  17.         for nd in children:
  18.             if nd.nodeType == 3 and nd.data.isspace():
  19.                 node.removeChild(nd)
  20.             else:
  21.                 clearspace(dom,nd)

  22. def Indent(dom, node, indent = 0):
  23.     #这个是原来limodou提供的缩进函数
  24.     # Copy child list because it will change soon
  25.     children = node.childNodes[:]
  26.     # Main node doesn't need to be indented
  27.     if indent:
  28.         text = dom.createTextNode('\n' + '\t' * indent)
  29.         node.parentNode.insertBefore(text, node)
  30.     if children:
  31.         # Append newline after last child, except for text nodes
  32.         if children[-1].nodeType == node.ELEMENT_NODE:
  33.             text = dom.createTextNode('\n' + '\t

阅读(2444) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~