/** * Created by Nicholas Hallahan on 1/15/15. * nhallahan@spatialdev.com */ package com.spatialdev.osm.model; import android.util.Xml; import org.xmlpull.v1.XmlSerializer; import java.io.IOException; import java.io.StringWriter; import java.util.LinkedList; public class OSMXmlWriter { private static final String OSM_API_VERSION = "0.6"; // We are not using namespaces. private static final String ns = null; private LinkedList<OSMElement> elements; private String generator = "unknown"; private String osmUser = ""; private XmlSerializer xmlSerializer; StringWriter stringWriter; public static String elementToString(OSMElement element, String osmUser, String appNameAndVersion) throws IOException { LinkedList<OSMElement> elements = null; if (element != null) { elements = new LinkedList<>(); elements.add(element); } return elementsToString(elements, osmUser, appNameAndVersion); } public static String elementsToString(LinkedList<OSMElement> elements, String osmUser, String appNameAndVersion) throws IOException { OSMXmlWriter writer = new OSMXmlWriter(elements, appNameAndVersion, osmUser); writer.start(); if (elements != null) { writer.iterateElements(); } return writer.end(); } private OSMXmlWriter(LinkedList<OSMElement> elements, String generator, String osmUser) { this.elements = elements; this.generator = generator; this.osmUser = osmUser; xmlSerializer = Xml.newSerializer(); stringWriter = new StringWriter(); } private void start() throws IOException { xmlSerializer.setOutput(stringWriter); xmlSerializer.startDocument("UTF-8", null); xmlSerializer.startTag(ns, "osm"); xmlSerializer.attribute(ns, "version", OSM_API_VERSION); xmlSerializer.attribute(ns, "generator", generator); xmlSerializer.attribute(ns, "user", osmUser); } private String end() throws IOException { xmlSerializer.endTag(ns, "osm"); xmlSerializer.endDocument(); return stringWriter.toString(); } private void iterateElements() throws IOException { for (OSMElement element : elements) { element.xml(xmlSerializer, osmUser); } } }