I was using jaxb for my xml needs but it was proving to slow. However, I am confounded by this simple example. I have the XSD for a NexposeReport as released by Rapid7 and I have successfully generated the beans using Ant. I had to add a couple of namespace declarations to the Rapid7 XSD.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://xml.report.nexpose.rapid7.net" targetNamespace="http://xml.report.nexpose.rapid7.net"> These are my "made up" namespace values since the original had no mention of a namespace. The parser complained about the lack of a namespace in the xml instance. <NexposeReport version="1.0"> <scans> <scan> . . . So, I added a subtitution. Map<String,String> substNamespaces = new HashMap<String,String>(); substNamespaces.put("", "http://xml.report.nexpose.rapid7.net"); xmlOps.setLoadSubstituteNamespaces(substNamespaces); reportDoc = NexposeReportDocument.Factory.parse(sr,xmlOps); However, I cannot figure out how to select all the scan nodes from the xml instance. @Test public void loadReport() throws Exception { NexposeReportDocument reportDoc = null; boolean hasResults = false; for(int i = 1; i < RPT_IDX_MAX; i++) { String fname = RPT_BASE_NAME + i + ".xml"; InputStream ios = new FileInputStream(fname); XMLStreamReader sr = new XMLStreamReader(ios,false); XmlOptions xmlOps = new XmlOptions(); Map<String,String> substNamespaces = new HashMap<String,String>(); substNamespaces.put("","http://xml.report.nexpose.rapid7.net"); xmlOps.setLoadSubstituteNamespaces(substNamespaces); reportDoc = NexposeReportDocument.Factory.parse(sr,xmlOps); XmlCursor xmlCursor = reportDoc.newCursor(); xmlCursor.selectPath("$this//NexposeReport/scans/scan"); System.out.println("# of selections: " + xmlCursor.getSelectionCount()); xmlCursor.dump(); while (xmlCursor.toNextSelection()) { System.out.println(xmlCursor.getTextValue()); } } } The output: # of selections: 0 ROOT (USER) *:R:<cur>[0] <mark>[0] (DocumentXobj) ELEM nexposerep...@http://xml.report.nexpose.rapid7.net (ElementXobj) ATTR version Value( "1.0" ) After( "\n" ) (AttrXobj) ELEM sc...@http://xml.report.nexpose.rapid7.net Value( "\n" ) (ElementXobj) ELEM s...@http://xml.report.nexpose.rapid7.net After( "\n" ) (ElementXobj) ATTR id Value( "130" ) (AttrXobj) ATTR name Value( "3592" ) (AttrXobj) ATTR startTime Value( "20090324T170449013" ) (AttrXobj) ATTR endTime Value( "20090324T171328716" ) (AttrXobj) ATTR status Value( "finished" ) (AttrXobj) <snip>lots more data</snip> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

