package com.google.mcommerce.sample.android.chapter11.xml;
/**
* <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
*<state>
*<view name="button">
*<text>send</text>
*<id>10</id>
*</view>
*
*<view name="textview">
*<text>this is a demo!</text>
*<id>11</id>
*</view>
*</state>
*/
import java.io.OutputStream;
import java.io.Writer;
import java.util.List;
import org.xmlpull.v1.XmlSerializer;
import android.util.Xml;
public class PullXMLUtils {
/**
* 创建xml文件
*
* @param items
* 存储view状态
* @param outStream
* 输出
* @throws Exception
*/
public static void createXML(List<ViewState> items, OutputStream outStream)
throws Exception {
XmlSerializer serializer = Xml.newSerializer();
// 设置输出及编码
serializer.setOutput(outStream, "utf-8");
// 构建文档类似:<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
serializer.startDocument("utf-8", true);
// 开始Tag
serializer.startTag(null, "state");
for (ViewState vs : items) { // 增强for循环
serializer.startTag(null, "view");
serializer.attribute(null, "name", vs.getName());
serializer.startTag(null, "text");
serializer.text(vs.getText());
serializer.endTag(null, "text");
serializer.startTag(null, "id");
serializer.text(String.valueOf(vs.getId()));
serializer.endTag(null, "id");
serializer.endTag(null, "view");
}
// 结束Tag
serializer.endTag(null, "state");
// 结束文档
serializer.endDocument();
// 关闭流
outStream.flush();
outStream.close();
}
/**
* 创建xml文件,过载方法
*
* @param items
* 存储view状态
* @param writer
* 字符流
* @throws Exception
*/
public static void createXML(List<ViewState> items, Writer writer)
throws Exception {
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(writer);
serializer.startDocument("utf-8", true);
serializer.startTag(null, "state");
for (ViewState vs : items) {
serializer.startTag(null, "view");
serializer.attribute(null, "name", vs.getName());
serializer.startTag(null, "text");
serializer.text(vs.getText());
serializer.endTag(null, "text");
serializer.startTag(null, "id");
serializer.text(String.valueOf(vs.getId()));
serializer.endTag(null, "id");
serializer.endTag(null, "view");
}
serializer.endTag(null, "state");
serializer.endDocument();
// 关闭流
writer.flush();
writer.close();
}
}