New submission from Javier Domingo:

Hi I found something like a bug, I can't get this working:

import xml.dom.minidom as minidom
document="""<a>
    <b>
        <c />
        <c />
    </b>
</a>""" 
dom = minidom.parseString(document)

dom.childNodes
dom.childNodes[0].childNodes
dom.childNodes[0].childNodes[1].childNodes

def delete_recursive(parent):
    for child in parent.childNodes:
        if child.hasChildNodes():
            delete_recursive(child)
        else:
            parent.removeChild(child)

delete_recursive(dom)

dom.childNodes
dom.childNodes[0].childNodes
dom.childNodes[0].childNodes[0].childNodes

Executes as:
>>> import xml.dom.minidom as minidom
>>> document="""<a>
...     <b>
...         <c />
...         <c />
...     </b>
... </a>""" 
>>> dom = minidom.parseString(document)
>>> 
>>> dom.childNodes
[<DOM Element: a at 0x7f5408e717d0>]
>>> dom.childNodes[0].childNodes
[<DOM Text node "'\n    '">, <DOM Element: b at 0x7f5408e71f50>, <DOM Text node 
"'\n'">]
>>> dom.childNodes[0].childNodes[1].childNodes
[<DOM Text node "'\n        '">, <DOM Element: c at 0x7f5408e93290>, <DOM Text 
node "'\n        '">, <DOM Element: c at 0x7f5408e93310>, <DOM Text node "'\n   
 '">]
>>> 
>>> def delete_recursive(parent):
...     for child in parent.childNodes:
...         if child.hasChildNodes():
...             delete_recursive(child)
...         else:
...             parent.removeChild(child)
... 
>>> delete_recursive(dom)
>>> 
>>> dom.childNodes
[<DOM Element: a at 0x7f5408e717d0>]
>>> dom.childNodes[0].childNodes
[<DOM Element: b at 0x7f5408e71f50>]
>>> dom.childNodes[0].childNodes[0].childNodes
[<DOM Text node "'\n        '">, <DOM Element: c at 0x7f5408e93290>, <DOM Text 
node "'\n        '">, <DOM Element: c at 0x7f5408e93310>, <DOM Text node "'\n   
 '">]

The problem here is this last line, those text nodes shouldn't be here! I have 
traced the problem, and seem that the for loop is not correctly executed

----------
components: XML
messages: 179309
nosy: txomon
priority: normal
severity: normal
status: open
title: minidom error
versions: Python 3.2

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue16890>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to