Sax2 import

"Venemans, Bernard" <[email protected]>
Newsgroups gmane.comp.python.xml
Message-ID <[email protected]>
I installed Python 2.4 and PyXML 0.8.3 in order to be able to run a
script that converts an XML log to HTML (see attachment). On Windows
this works fine, but I cannot get it to work on Solaris 9.
 
I get the following output... 
 
~/squish-2.0.1/projects> /usr/local/bin/python
./lib/GenerateHtmlReport.py
/usr/local
['/mnt/usr3/people/venemab/squish-2.0.1/projects/lib',
'/usr/local/lib/python24.zip', '/usr/local/lib/python2.4',
'/usr/local/lib/python2.4/plat-sunos5',
'/usr/local/lib/python2.4/lib-tk',
'/usr/local/lib/python2.4/lib-dynload',
'/usr/local/lib/python2.4/site-packages']
Traceback (most recent call last):
  File "./lib/GenerateHtmlReport.py", line 11, in ?
    from xml.dom.ext.reader import Sax2
ImportError: No module named ext.reader

...when I execute the following piece of code (see attachment for
complete python file):
 
#!/usr/bin/env python
# -*- coding: Latin-1 -*-
 
import sys
print sys.prefix
print sys.path
 
from xml.dom.NodeFilter import NodeFilter
from xml.dom import Node
# 
http://sourceforge.net/project/showfiles.php?group_id=6473&package_id=65
41&release_id=174846
from xml.dom.ext.reader import Sax2
 
 
I installed PyXML with 'python setup.py install' which resulted in an
_xmlplus directory structure being added to
/usr/local/lib/python2.4/site-packages.
Anybody any idea what goes wrong here?
 
Thanks, Bernard Venemans

_______________________________________________
XML-SIG maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/xml-sig
GenerateHtmlReport.py (application/octet-stream, 3.9 KB)
#!/usr/bin/env python
# -*- coding: Latin-1 -*-

import sys
print sys.prefix
print sys.path

from xml.dom.NodeFilter import NodeFilter
from xml.dom import Node
# http://sourceforge.net/project/showfiles.php?group_id=6473&package_id=6541&release_id=174846
from xml.dom.ext.reader import Sax2


def printHeader(filename):
    print '<html>'
    print '<head>'
    print '<title>' + filename + '</title>'
    print '</head>'
    print '<body>'

    
def printSummary(testcases, tests, passes, fails, errors, fatals):
    print '<table border="1" cellpadding="1" width="100%">'
    print '<caption>Summary</caption>'
    print '<tr>'
    print '<td>Test cases</td><td>' + testcases + '</td>'
    print '</tr>'
    print '<tr>'
    print '<td>Tests</td><td>' + tests + '</td>'
    print '</tr>'
    print '<tr>'
    print '<td>Passes</td><td>' + passes + '</td>'
    print '</tr>'
    print '<tr>'
    print '<td>Fails</td><td>' + fails + '</td>'
    print '</tr>'
    print '<tr>'
    print '<td>Errors</td><td>' + errors + '</td>'
    print '</tr>'
    print '<tr>'
    print '<td>Fatals</td><td>' + fatals + '</td>'
    print '</tr>'
    print '</table>'

    print "<table border=\"1\" cellpadding=\"3\" width=\"100%\">"
    print "<caption>Results</caption>"    


def printResult(result, time, line, message, detail):
    isReport = True
    if (isReport):
        if result == "LOG" or result == "START" or result == "END":
            return
        #end-if
    #end-if
        
    if result == "PASS":
        print '<tr bgcolor="green">'
    elif result == "FAIL":
        print '<tr bgcolor="yellow">'
    elif result == "ERROR" or result == "FATAL":
        print '<tr bgcolor="red">'
    else:
        print '<tr>'

    if result == "START" or result == "END":
        print '<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>' % \
               (result, time, "", "", "")
    elif result == "START_TEST_CASE" or result == "END_TEST_CASE":
        messageList = message.split("'")
        message = messageList[1]
        print '<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>' % \
               (result, time, "", message, "")
    elif result == "PASS" or result == "FAIL" or result == "ERROR" or \
         result == "FATAL" or result == "LOG":
        messageList = message.split(":")
        message = messageList[len(messageList)-1]        
        print '<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>' % \
               (result, "", line, message, detail)
    else :
        print '<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>' % \
               (result, time, line, message, detail)
        
    print '</tr>'    


def printFooter():
    print '</table>'
    print "</body>"
    print "</html>"


# create Reader object
reader = Sax2.Reader()

# open input file
if len(sys.argv) < 2:
    raise RuntimeError, "Missing a file name argument"
datasource = open(sys.argv[1])

# parse the document
doc = reader.fromStream(datasource)

# we can close the file again
datasource.close()

# create tree walker instance
walker = doc.createTreeWalker(doc.documentElement,
                              NodeFilter.SHOW_ELEMENT, None, 0)

# start output
printHeader(sys.argv[1])

# iterate over all nodes
node = walker.currentNode
while not node is None:
    attrs = node.attributes

    if node.nodeName == "summary":
        printSummary(node.getAttribute("testcases"),
                     node.getAttribute("tests"),
                     node.getAttribute("passes"),
                     node.getAttribute("fails"),
                     node.getAttribute("errors"),
                     node.getAttribute("fatals"))
    elif node.nodeName == "testresult":
        printResult(node.getAttribute("result"),
                    node.getAttribute("time"),
                    node.getAttribute("line"),
                    node.getAttribute("message"),
                    node.firstChild.nodeValue)


    # move to next node
    node = walker.nextNode()

# end output
printFooter()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.