使用sax.utils我如何添加标签

时间:2011-07-15 23:04:10

标签: python sax saxparser

我有以下代码来创建xml doc

self.errorlist.append(
            '<testcase classname=%(cls)s name=%(name)s time="%(taken)d">'
            '<%(type)s type=%(errtype)s message=%(message)s><![CDATA[%(tb)s]]>'
            '</%(type)s></testcase>' %
            {'cls': self._quoteattr('.'.join(id.split('.')[:-1])),                         
             'name': self._quoteattr(id.split('.')[-1]),                                   
             'taken': taken,                                                               
             'type': type,                                                                 
             'errtype': self._quoteattr(nice_classname(err[0])),                           
             'message': self._quoteattr(exc_message(err)),                                 
             'tb': escape_cdata(tb),                                                       
             })    

如何添加新标签或新类型,例如“D b” 我试过了

 self.errorlist.append(
        '<testcase classname=%(cls)s name=%(name)s db=%(db)s time="%(taken)d">'
        '<%(type)s type=%(errtype)s message=%(message)s><![CDATA[%(tb)s]]>'
        '</%(type)s></testcase>' %
        {'cls': self._quoteattr('.'.join(id.split('.')[:-1])),
         'name': self._quoteattr(id.split('.')[-1]),
         'taken': taken,
         'type': type,
         'errtype': self._quoteattr(nice_classname(err[0])),
         'message': self._quoteattr(exc_message(err)),
         'tb': escape_cdata(tb),
         })

但得到了:KeyError:'db'

我也试过普通的%(db)s,但是收到了错误: NameError:未定义全局名称“db”

以下是导入

来自xml.sax import saxutils

1 个答案:

答案 0 :(得分:0)

解决:使用下面的代码,我在XML Doc中获取db =“mysql”

self.errorlist.append(
            '<testcase classname=%(cls)s name=%(name)s db="%(db)s" time="%(taken)d">'
            '<%(type)s type=%(errtype)s message=%(message)s><![CDATA[%(tb)s]]>'
            '</%(type)s></testcase>' %
            {'cls': self._quoteattr('.'.join(id.split('.')[:-1])),
             'name': self._quoteattr(id.split('.')[-1]),
             'db': self.db,
             'taken': taken,
             'type': type,
             'errtype': self._quoteattr(nice_classname(err[0])),
             'message': self._quoteattr(exc_message(err)),
             'tb': escape_cdata(tb),
             })