[issue12984] XML NamedNodeMap ( attribName in NamedNodeMap fails )

Matthew Newcomb report at bugs.python.org
Thu Sep 15 01:11:48 CEST 2011


New submission from Matthew Newcomb <spolematt at gmail.com>:

I was cleaning up some old code to make it pep8 compliant and came across this bug.  Switching from 'has_key' to 'in' does not work with a xml.dom.minidom.NamedNodeMap.  An easy solution appears to be to add a '__contains__' method to NamedNodeMap.  

This is with:
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2

I've tried it with 2.4.3 as well ( on some older machines ).

import xml.dom.minidom

def show_bug():
    document = '<dom mbid="5">foobar_attributes</dom>'
    dom = xml.dom.minidom.parseString(document)
    attribs = dom.getElementsByTagName('dom')[0].attributes

    if attribs.has_key('mbid'):
        print "This works..  found 'mbid' attribute"

    if 'mbid' in attribs:
        print "Will never get here, the above will throw an exception"


>>> show_bug()
This works..  found 'mbid' attribute
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "show_bug.py", line 11, in show_bug
    if 'mbid' in attribs:
  File "/usr/lib/python2.7/xml/dom/minidom.py", line 524, in __getitem__
    return self._attrs[attname_or_tuple]
KeyError: 0

----------
components: XML
files: show_bug.py
messages: 144060
nosy: spolematt
priority: normal
severity: normal
status: open
title: XML NamedNodeMap ( attribName in NamedNodeMap fails )
type: crash
versions: Python 2.7
Added file: http://bugs.python.org/file23157/show_bug.py

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue12984>
_______________________________________


More information about the Python-bugs-list mailing list