--- android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureServlet.java 2010/09/16 09:11:23 1059 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureServlet.java 2010/09/16 13:32:10 1060 @@ -1,5 +1,6 @@ package dk.thoerup.traininfoservice.banedk; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -9,17 +10,11 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import org.w3c.dom.DOMImplementation; -import org.w3c.dom.Document; -import org.w3c.dom.Element; +import org.simpleframework.xml.Serializer; +import org.simpleframework.xml.core.Persister; import dk.thoerup.circuitbreaker.CircuitBreakerException; import dk.thoerup.traininfoservice.Statistics; @@ -109,86 +104,18 @@ } protected String formatXml(DepartureBean beans, boolean arrival) throws ServletException{ - String xml = ""; - try { - DocumentBuilder builder = docBuilderFactory.newDocumentBuilder(); - DOMImplementation impl = builder.getDOMImplementation(); - - - Document doc = impl.createDocument(null,null,null); - Element root = doc.createElement("departureinfo"); - root.setAttribute("station", beans.getStationName()); - root.setAttribute("arrival", Boolean.toString(arrival) ); - - for (String notif : beans.notifications) { - Element notElem = doc.createElement("notification"); - notElem.setTextContent(notif); - root.appendChild(notElem); - } - - for (DepartureEntry departure : beans.departureEntries) { - Element train = doc.createElement("train"); - - Element time = doc.createElement("time"); - time.setTextContent( departure.getTime() ); - train.appendChild(time); - - Element updated = doc.createElement("updated"); - updated.setTextContent( String.valueOf(departure.getUpdated()) ); - train.appendChild(updated); - - Element trainNumber = doc.createElement("trainnumber"); - trainNumber.setTextContent( departure.getTrainNumber() ); - train.appendChild(trainNumber); - - Element destination = doc.createElement("destination"); - destination.setTextContent( departure.getDestination()); - train.appendChild(destination); - - Element origin = doc.createElement("origin"); - origin.setTextContent( departure.getOrigin() ); - train.appendChild(origin); - - Element location= doc.createElement("location"); - location.setTextContent( departure.getLocation() ); - train.appendChild(location); - - Element status = doc.createElement("status"); - status.setTextContent( departure.getStatus() ); - train.appendChild(status); - - Element note = doc.createElement("note"); - note.setTextContent( departure.getNote() ); - train.appendChild(note); - - Element type = doc.createElement("type"); - type.setTextContent( departure.getType() ); - train.appendChild(type); - - root.appendChild(train); - } - - doc.appendChild(root); - - - DOMSource domSource = new DOMSource(doc); - - Transformer transformer = transformerFactory.newTransformer(); - //transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - transformer.setOutputProperty(OutputKeys.METHOD, "xml"); - transformer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1"); - transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "1"); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); - java.io.StringWriter sw = new java.io.StringWriter(); - StreamResult sr = new StreamResult(sw); - transformer.transform(domSource, sr); - xml = sw.toString(); + + Serializer serializer = new Persister(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + try { + serializer.write(beans, out); } catch (Exception e) { throw new ServletException(e); } - return xml; + + return out.toString(); } }