生成xml:
package com.itheima.createxml;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.List;import com.itheima.createxml.domain.Message;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;public class MainActivity extends Activity { ListsmsList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //虚拟10条短信 smsList = new ArrayList (); for(int i = 0; i < 10; i++){ Message sms = new Message("小志好棒" + i, System.currentTimeMillis() + "", "138"+i+i, "1"); smsList.add(sms); } } public void click(View v){ //在内存中把xml备份短信的格式拼接出来,短信保存在外部,因为应用删除后要短信还在。 StringBuffer sb = new StringBuffer(); sb.append(" "); sb.append(" "); for (Message sms : smsList) { //拼接每一条短信sms sb.append(" "); File file = new File("sdcard/sms.xml"); try { FileOutputStream fos = new FileOutputStream(file); fos.write(sb.toString().getBytes()); fos.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}"); sb.append(""); sb.append(sms.getBody()); sb.append(""); sb.append(" "); } sb.append(""); sb.append(sms.getDate()); sb.append(" "); sb.append(""); sb.append(sms.getType()); sb.append(" "); sb.append(" "); sb.append(sms.getAddress()); sb.append(""); sb.append("
生成xml:
package com.itheima.xmlserializer;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlSerializer;import com.itheima.createxml.domain.Message;import android.os.Bundle;import android.app.Activity;import android.util.Xml;import android.view.Menu;import android.view.View;public class MainActivity extends Activity { ListsmsList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 虚拟10条短信 smsList = new ArrayList (); for (int i = 0; i < 10; i++) { Message sms = new Message("小志好棒" + i, System.currentTimeMillis() + "", "138" + i + i, "1"); smsList.add(sms); } } public void click(View v){ //使用xml序列化器生成xml文件 //1.拿到序列化器对象 XmlSerializer xs = Xml.newSerializer(); //2.初始化路径和文件名,生成在sd卡中, File file = new File("sdcard/sms2.xml"); try { FileOutputStream fos = new FileOutputStream(file); //enconding:指定用什么编码生成xml文件,安卓默认就是utf-8,所以几乎所有的编码都是utf-8, xs.setOutput(fos, "utf-8"); //utf-8指定头结点 中的enconding的值enconding="utf-8",true指定是否是独立的xml文件, xs.startDocument("utf-8", true); xs.startTag(null, "message");//开始节点的名字 ,null为namespace, for (Message sms : smsList) { xs.startTag(null, "sms"); xs.startTag(null, "body"); xs.text(sms.getBody() + "");//text表示文本节点 xs.endTag(null, "body"); xs.startTag(null, "date"); xs.text(sms.getDate()); xs.endTag(null, "date"); xs.startTag(null, "type"); xs.text(sms.getType()); xs.endTag(null, "type"); xs.startTag(null, "address"); xs.text(sms.getAddress()); xs.endTag(null, "address"); xs.endTag(null, "sms"); } xs.endTag(null, "message");//结束节点 //告诉序列化器,文件生成完毕 xs.endDocument(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
解析xml:
package com.itheima.pullparser;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import com.itheima.pullparser.domain.City;import android.os.Bundle;import android.app.Activity;import android.util.Xml;import android.view.Menu;import android.view.View;public class MainActivity extends Activity { ListcityList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void click(View v){ //获取到src文件夹下的资源文件 InputStream is = getClassLoader().getResourceAsStream("weather.xml");//获取资源作为流 //拿到pull解析器对象 XmlPullParser xp = Xml.newPullParser(); //初始化 try { xp.setInput(is, "gbk");//第一个是输入流,gbk是解析编码,gbk是windows的默认编码格式,所以weather.xml的编码格式是gbk //获取当前节点的事件类型,通过事件类型的判断,我们可以知道当前节点是什么节点,从而确定我们应该做什么操作 //解析是一行一行的解析的, int type = xp.getEventType(); City city = null; while(type != XmlPullParser.END_DOCUMENT){ //文档结束节点 //根据节点的类型,要做不同的操作 switch (type) { case XmlPullParser.START_TAG://开始节点 // 获取当前节点的名字 if("weather".equals(xp.getName())){ //创建city集合对象,用于存放city的javabean cityList = new ArrayList (); } else if("city".equals(xp.getName())){ //创建city的javabean对象 city = new City(); } else if("name".equals(xp.getName())){ String name = xp.nextText();//获取当前节点的下一个节点的文本就是QQ,nextText并把指针移到当前节点的结束节点, city.setName(name); } else if("temp".equals(xp.getName())){ // 获取当前节点的下一个节点的文本 String temp = xp.nextText(); city.setTemp(temp); } else if("pm".equals(xp.getName())){ // 获取当前节点的下一个节点的文本 String pm = xp.nextText(); city.setPm(pm); } break; case XmlPullParser.END_TAG://结束节点, */ 5 80 rr -5 800 ���� 12�� 60