方式一:字符串拼接
StringBuilder sb=new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<root>");
sb.append("<book>aaa</book>");
sb.append("</root>");
File path = new File(Environment.getExternalStorageDirectory().getPath(), "config.xml");
FileOutputStream fos= new FileOutputStream(path);
fos.write(sb.toString().getBytes());
fos.close();
方式二: XmlSerializer
private void XmlSerializerTest() throws IOException {
// 1.获取XmlSerializer 类的实例,通过xml获取
XmlSerializer serializer= Xml.newSerializer();
File file=new File(Environment.getExternalStorageDirectory(),"config.xml");
FileOutputStream fos=new FileOutputStream(file);
//读写流的编码格式
serializer.setOutput(fos,"utf-8");
// 2.写xml开头,xml 头部的编码格式utf-8
serializer.startDocument("utf-8",true);
//3.写节点,命名空间xmlns ,如AndroidManifest里面定义的xmlns
serializer.startTag(null,"root");//root开始节点
serializer.startTag(null,"book");//book开始节点
serializer.text("aaaaaa");
serializer.endTag(null,"book");//book结束节点
serializer.endTag(null,"root");//root结束节点
// xml结束
serializer.endDocument();
}
解析XML:xmlPullParser
public void xmlParser(InputStream in) throws Exception {
//获取XmlPullParser实例
XmlPullParser xmlPullParser= Xml.newPullParser();
xmlPullParser.setInput(in,"utf-8");
//获取事件类型
int type=xmlPullParser.getEventType();
while (type!=XmlPullParser.END_DOCUMENT){
switch (type) {
case XmlPullParser.START_TAG:
//开始标签
//获取标签名字
xmlPullParser.getName();
//获取标签内容
xmlPullParser.nextText();
//获取属性值
xmlPullParser.getAttributeValue(0);
break;
case XmlPullParser.END_TAG:
//结束标签
break;
}
//获取下一个节点
type=xmlPullParser.nextTag();
}
}