<?xml version="1.0" encoding="utf-8" ?> <coverages> <coverage> <Type>total</Type> <Name>0</Name> <TotalLine>1</TotalLine> <EffectiveLine>2</EffectiveLine> <Covered>3</Covered> <Cover>4</Cover> </coverage> </coverages>
#coding:utf-8 import os import codecs import traceback import xml.dom.minidom as minidom def covert_to_unicode(msg): __re_str = None if isinstance(msg, unicode): __re_str = msg elif isinstance(msg, str): try: __re_str = msg.decode('gbk') except Exception, errinfo: raise Exception, '%s, %s' % (errinfo, str(msg)) else: raise Exception, '%s 必须为str或unicode类型' % msg return __re_str #print covert_to_unicode('哈哈') class CreateCovXml(): def __init__(self, cov_xml_path): self.cov_xml_path = cov_xml_path self.__dom = None self.__root = None def _covert_code(self, msg): return covert_to_unicode(msg) def __create_new_node(self, node_name, node_text=None): if self.__dom == None: raise Exception, '创建结点时,document对象还不存在' if None == node_text: return self.__dom.createElement(self._covert_code(node_name)) else: newNode = self.__dom.createElement(self._covert_code(node_name)) newText = self.__dom.createTextNode(self._covert_code(node_text)) newNode.appendChild(newText) return newNode def begin_cov(self): try: impl = minidom.getDOMImplementation() self.__dom = impl.createDocument(None, u'coverages', None) self.__root = self.__dom.documentElement except: traceback.print_exc() raise Exception, '创建coverage xml根结点失败' def add_cov(self, type, name, total_line, effective_line, covered_line, cover_rate): if self.__root == None: raise Exception, '创建结点时,root结点不存在或对象不存在' type_node = self.__create_new_node('Type', type) name_node = self.__create_new_node('Name', name) total_line_node = self.__create_new_node('TotalLine', total_line) effective_line_node = self.__create_new_node('EffectiveLine', effective_line) covered_line_node = self.__create_new_node('Covered', covered_line) cover_rate_node = self.__create_new_node('Cover', cover_rate) new_coverage_node = self.__create_new_node('coverage') new_coverage_node.appendChild(type_node) new_coverage_node.appendChild(name_node) new_coverage_node.appendChild(total_line_node) new_coverage_node.appendChild(effective_line_node) new_coverage_node.appendChild(covered_line_node) new_coverage_node.appendChild(cover_rate_node) self.__root.appendChild(new_coverage_node) def end_cov(self): try: f = open(self.cov_xml_path, 'wb') writer = codecs.lookup('utf-8')[3](f) self.__dom.writexml(writer, encoding='utf-8') writer.close() f.close() return True except Exception, err: traceback.print_exc() raise Exception, '写xml文件出错' if __name__ == '__main__': os.chdir("E:\\PyWk\\nodepad_py") test = CreateCovXml('cov.xml') test.begin_cov() test.add_cov(type="total", name='0', total_line='1', effective_line='2', covered_line='3', cover_rate='4') test.end_cov() print 'endl'