parse arg xmlFileName
factory=bsf.loadClass("javax.xml.parsers.DocumentBuilderFactory")~newInstance
factory~setNamespaceAware(.true)
parser=factory~newDocumentBuilder
eh=.errorHandler~new
javaEH=BsfCreateRexxProxy(eh, , "org.xml.sax.ErrorHandler")
parser~setErrorHandler(javaEH)
rootNode=parser~parse(xmlFileName)
whatToShow=bsf.getConstant("org.w3c.dom.traversal.NodeFilter", "SHOW_ELEMENT")
iterator=rootNode~createNodeIterator(rootNode, whatToShow, .nil, .true)
node=iterator~nextNode
loop while node<>.nil
nrAttrs=node~getAttributes~getLength
say pp(node~getNodeName)
node=iterator~nextNode
end
::requires BSF.CLS
::class ErrorHandler
::method unknown
use arg methName, argArray
exception=argArray[1]
.error~say(methName":"
"line="exception~getLineNumber",col="exception~getColumnNumber":"
pp(exception~getMessage))