Используя sax.utils, как я могу добавить тег - PullRequest
0 голосов
/ 16 июля 2011

У меня есть следующий код, который создает документ XML

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),                                                       
             })    

Как я могу добавить новый тег или новый тип, например, "DB" Я пытался

 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 голосов
/ 19 июля 2011

решено: используя код ниже, я смог получить db = "mysql" в XML Doc

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),
             })
...