| Author |
Java & XML Parsing XML Response String
|
Ed Berrey
Greenhorn
Joined: Apr 23, 2004
Posts: 6
|
|
Error is: java.net.MalformedURLException: no protocol: <?xml version="1.0"?> Code used is: try { factory = SAXParserFactory.newInstance(); saxParser = factory.newSAXParser(); } catch (Exception e) { System.out.println("In ShipmentTrackingAction.execute - " + e); } try { handler = new DefaultHandler() { boolean Shipment_ = false; public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equalsIgnoreCase("Shipment")) { Shipment_ = true; } } public void characters(char ch[], int start, int length) throws SAXException { if (Shipment_) { System.out.println("Shipment: "); parsedResponse.append("Shipment: "); parsedResponse.append("<br>"); Shipment_ = false; } } }; saxParser.parse(dhlResponse, handler); } catch (Exception e) { parsedResponse.append(dhlResponse); System.out.println("In ShipmentTrackingAction.dhlParser - " + e); e.printStackTrace(); } //return parsedResponse.toString(); return parsedResponse.toString(); } XML trying to parse starts like this: <?xml version="1.0"?> <ECommerce version="1.1" action="Response" timestamp="2005/08/18T12:35:54" transmission_reference="E14D4E8C"> Stack trace is: java.net.URL.<init>(URL.java(Compiled Code)) java.net.URL.<init>(URL.java(Inlined Compiled Code)) java.net.URL.<init>(URL.java(Inlined Compiled Code)) org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) org.apache.xerces.parsers.XMLParser.parse(Unknown Source) org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) javax.xml.parsers.SAXParser.parse(Unknown Source) javax.xml.parsers.SAXParser.parse(Unknown Source) com.xse.utility.XmlTransmitterSUN.dhlParser(XmlTransmitterSUN.java:693) com.xse.controller.actions.ShipmentTrackingAction.execute(ShipmentTrackingAction.java:73) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397) javax.servlet.http.HttpServlet.service(HttpServlet.java:740) javax.servlet.http.HttpServlet.service(HttpServlet.java:853) com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110) com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174) com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313) com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116) com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283) com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42) com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40) com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:974) com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:555) com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:200) com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:119) com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:276) com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71) com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182) com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334) com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56) com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:618) com.ibm.ws.http.HttpConnection.run(HttpConnection.java:439) com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
|
 |
Stan James
(instanceof Sidekick)
Ranch Hand
Joined: Jan 29, 2003
Posts: 8791
|
|
There are a number of parse() signatures on SaxParser but amazingly enough none that take XML as a String. Some take an InputStream, for which you can make a ByteArrayInputStream from the bytes in your String. Let me know if that works. Something to file away: One clue was in the "no such protocol" error. That's what network classes like URL say when they don't find something like "http:" or "ftp:" on the front of a URL. It was reading your String as a URL and trying to fetch XML from there. [ August 18, 2005: Message edited by: Stan James ]
|
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
|
 |
Ed Berrey
Greenhorn
Joined: Apr 23, 2004
Posts: 6
|
|
Thank you very much. Was exactly what was needed. Code now works as designed. Again, thank you!
|
 |
 |
|
|
subject: Java & XML Parsing XML Response String
|
|
|