Android創(chuàng)建XML
目前為止,我一直專注于通過 Internet 解析 XML。但是,有時(shí)您的應(yīng)用程序可能需要將 XML 發(fā)送到遠(yuǎn)程服務(wù)器。顯然,您可以只使用一個(gè) StringBuilder 來創(chuàng)建 XML 字符串。另一種備選方法來自中的Pull 解析器。
使用pull 解析器編寫XML
- 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);
- }
- }
XmlSerializer 類是前一部分所使用的 XmlPullParser包的一部分。它沒有提取事件,而是將它們推出到數(shù)據(jù)流或編寫程序中。在本例中,它僅僅將事件推送到了一個(gè) java.io.StringWriter 實(shí)例中。它提供了一個(gè)直觀的 API,通過各種方法開始和結(jié)束文檔、處理元素以及添加文本或?qū)傩?。這是 StringBuilder 的一種出色的替換方案,因?yàn)樗梢愿虞p松地確保您的 XML 具有良好結(jié)構(gòu)。