Writing XML on Android Writing XML on Android android android

Writing XML on Android


You can write xml like all others text files.For parsing Document to string I used:

public static String getStringFromNode(Node root) throws IOException {        StringBuilder result = new StringBuilder();        if (root.getNodeType() == 3)            result.append(root.getNodeValue());        else {            if (root.getNodeType() != 9) {                StringBuffer attrs = new StringBuffer();                for (int k = 0; k < root.getAttributes().getLength(); ++k) {                    attrs.append(" ").append(                            root.getAttributes().item(k).getNodeName()).append(                            "=\"").append(                            root.getAttributes().item(k).getNodeValue())                            .append("\" ");                }                result.append("<").append(root.getNodeName()).append(" ")                        .append(attrs).append(">");            } else {                result.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");            }            NodeList nodes = root.getChildNodes();            for (int i = 0, j = nodes.getLength(); i < j; i++) {                Node node = nodes.item(i);                result.append(getStringFromNode(node));            }            if (root.getNodeType() != 9) {                result.append("</").append(root.getNodeName()).append(">");            }        }        return result.toString();    }

But there is one more simple way to do this:http://www.ibm.com/developerworks/opensource/library/x-android/index.html#list11

private String writeXml(List<Message> messages){    XmlSerializer serializer = Xml.newSerializer();    StringWriter writer = new StringWriter();    try {        serializer.setOutput(writer);        serializer.startDocument("UTF-8", true);        serializer.startTag("", "messages");        serializer.attribute("", "number", String.valueOf(messages.size()));        for (Message msg: messages){            serializer.startTag("", "message");            serializer.attribute("", "date", msg.getDate());            serializer.startTag("", "title");            serializer.text(msg.getTitle());            serializer.endTag("", "title");            serializer.startTag("", "url");            serializer.text(msg.getLink().toExternalForm());            serializer.endTag("", "url");            serializer.startTag("", "body");            serializer.text(msg.getDescription());            serializer.endTag("", "body");            serializer.endTag("", "message");        }        serializer.endTag("", "messages");        serializer.endDocument();        return writer.toString();    } catch (Exception e) {        throw new RuntimeException(e);    } }


There is a very lightweight framework for reading and writing XML from annotated Java objects. It is fully compatible with Android.

http://simple.sourceforge.net


Since API level 8 you can use:

javax.xml.transform.TransformerFactory factory = new javax.xml.transform.TransformerFactory();javax.xml.transform.Transformer transformer = factory.newTransformer();javax.xml.transform.dom.DOMSource domSource = new javax.xml.transform.dom.DOMSource(rootNode);javax.xml.transform.stream.StreamResult result = new javax.xml.transform.stream.StreamResult(outputStream);transformer(domSource, result);