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()