Possible error in 'dive into Python' book, help!

  • Thread starter Ben Edwards (lists)
  • Start date
B

Ben Edwards (lists)

I have been going through Dive into Python which up to now has been
excellent. I am now working through Chapter 9, XML Processing. I am 9
pages in (p182) in the 'Parsing XML section. The following code is
supposed to return the whole XML document (I have put ti at the end of
this email):

from xml.dom import minidom

xmldoc =
minidom.parse('/home/ben/diveintopython-5.4/py/kgp/binary.xml')
grammerNode = xmldoc.firstChild

print grammerNode.toxml()

But it only returns:

<!DOCTYPE grammar
PUBLIC '-//diveintopython.org//DTD Kant Generator Pro v1.0//EN'
'kgp.dtd'>

The next line is then

grammerNode.childNodes

And it returns an empty tuples;(

Kind of stuck here as I don't really want to continue. Has anyone any
idea what is going on?

Ben

binary.xml

<?xml version="1.0"?>
<!DOCTYPE grammar PUBLIC "-//diveintopython.org//DTD Kant Generator Pro
v1.0//EN" "kgp.dtd">
<grammar>
<ref id="bit">
<p>0</p>
<p>1</p>
</ref>
<ref id="byte">
<p><xref id="bit"/><xref id="bit"/><xref id="bit"/><xref
id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/><xref
id="bit"/></p>
</ref>
</grammar>
 
S

Sion Arrowsmith

I have been going through Dive into Python which up to now has been
excellent. I am now working through Chapter 9, XML Processing. I am 9
pages in (p182) in the 'Parsing XML section. The following code is
supposed to return the whole XML document (I have put ti at the end of
this email):

from xml.dom import minidom

xmldoc =
minidom.parse('/home/ben/diveintopython-5.4/py/kgp/binary.xml')
grammerNode = xmldoc.firstChild

print grammerNode.toxml()

But it only returns:

<!DOCTYPE grammar
PUBLIC '-//diveintopython.org//DTD Kant Generator Pro v1.0//EN'
'kgp.dtd'>

The next line is then

grammerNode.childNodes

And it returns an empty tuples;(

Kind of stuck here as I don't really want to continue. Has anyone any
idea what is going on?

OK, your xmldoc has two child nodes. The first is the <!DOCTYPE ... >
you're getting above. Which of course doesn't have any children, so
grammarNode.childNodes is naturally empty. The <grammar> element is
the *second* child of the xmldoc, so of course isn't xmldoc.firstChild.
Probably what you want is:

grammarNode = xmldoc.documentElement

Dive Into Python's assertion that "A Document always has only one
child node, the root element of the XML document" looks a little
off from where I'm standing:
<?xml version="1.0" ?>
<!DOCTYPE grammar
PUBLIC '-//diveintopython.org//DTD Kant Generator Pro v1.0//EN' 'kgp.dtd'>
<grammar>
<ref id="bit">
<p>0</p>
<p>1</p>
</ref>
<ref id="byte">
<p><xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/></p>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,996
Messages
2,570,238
Members
46,826
Latest member
robinsontor

Latest Threads

Top