編輯:關於android開發
使用序列化器生成一個xml文件
//1,初始化一個xml文件的序列化器
XmlSerializer serializer = Xml.newSerializer();
//2.初始化序列器參數
File file = new File(Environment.getExternalStorageDirectory(),"backup.xml");
FileOutputStream fos = new FileOutputStream(file);
serializer.setOutput(fos, "UTF-8");
//3.開始寫xml文件.
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "smss");
for(SmsInfo info : smsInfos){
//開始寫sms節點
serializer.startTag(null, "sms");
//開始寫body節點
serializer.startTag(null, "body");
serializer.text(info.getBody());
//body節點結束
serializer.endTag(null, "body");
//開始寫address節點
serializer.startTag(null, "address");
serializer.text(info.getAddress());
serializer.endTag(null, "address");
//開始寫data節點
serializer.startTag(null, "date");
serializer.text(info.getDate()+"");
serializer.endTag(null, "date");
// sms節點結束
serializer.endTag(null, "sms");
}
//smss根節點結束
serializer.endTag(null, "smss");
//xml 結束
serializer.endDocument();
fos.close();
Toast.makeText(this, "備份短信成功", 0).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "備份短信失敗", 0).show();
}
#12.使用pull解析xml格式的數據 (重要)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 設置activity顯示的布局
setContentView(R.layout.activity_main);
TextView tv_info = (TextView) findViewById(R.id.tv_info);
StringBuilder sb = new StringBuilder();
try {
//獲取我們解析出來的天氣信息
List<Channel> channels = WeatherService.getAllWeatherInfos(getClass().getClassLoader().getResourceAsStream("weather.xml"));
for(Channel channel : channels){
sb.append(channel.toString());
sb.append("\n");
}
//把解析出來的天氣信息設置到textview上
tv_info.setText(sb.toString());
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "解析天氣信息失敗", 0).show();
}
}
}
---------------------------------------------------------------
public class WeatherService {
/**
* 解析服務器返回的數據 獲取天氣信息
* @param is 服務器返回的包含天氣信息的流 (xml)
* @return
*/
public static List<Channel> getAllWeatherInfos(InputStream is) throws Exception{
List<Channel> channels = null;
Channel channel = null;
//1.獲取xml解析器
XmlPullParser parser = Xml.newPullParser();
//2.設置xml解析器的參數
parser.setInput(is, "utf-8");
//3.開始解析xml文件.
int type = parser.getEventType();// 獲取當前的事件的類型
while (type!=XmlPullParser.END_DOCUMENT){ //需要讓pull解析器解析到文件的末尾
switch (type) {
case XmlPullParser.START_TAG:
if("weather".equals(parser.getName())){//總的開始節點
channels = new ArrayList<Channel>(); //初始化集合
}else if("channel".equals(parser.getName())){//某個城市的信息開始了.
channel = new Channel();
//獲取到id的屬性值
String id = parser.getAttributeValue(0);
channel.setId(Integer.parseInt(id));
//解析city節點
}else if("city".equals(parser.getName())){
String city = parser.nextText();
channel.setCity(city);
//解析溫度節點
}else if("temp".equals(parser.getName())){
String temp = parser.nextText();
channel.setTemp(temp);
//解析風力節點
}else if("wind".equals(parser.getName())){
String wind = parser.nextText();
channel.setWind(wind);
//解析pm250節點
}else if("pm250".equals(parser.getName())){
String pm250 = parser.nextText();
channel.setPm250(Integer.parseInt(pm250));
}
break;
//判斷xml的結束節點
case XmlPullParser.END_TAG:
if("channel".equals(parser.getName())){
//把解析的內容加入到集合中
channels.add(channel);
channel = null;
}
break;
}
type = parser.next();
}
is.close();
return channels;//把所有的頻道的集合返回回去
}
}
nagios二次開發之“依據分組繪制服務圖”
nagios二次開發之“依據分組繪制服務圖”背景: 在nagios3.2.0版本,曾將nagios、saltstack、Thinkphp進行整合。在整合的基礎之上,進行了
安卓第一天筆記,安卓第一天
安卓第一天筆記,安卓第一天安卓第一天筆記 1.移動通信的發展G--(generation) 1G:模擬制式 2G:GSM/CDMA 2.5G:GPRS 2.75G:EDG
Android——Fragment介紹及兩種基本使用方法
Android——Fragment介紹及兩種基本使用方法 今天在調ViewPager的時候,感覺ViewPager+Fragment這種做法更靈活,所以,現
Android種使用Notification實現通知管理以及自定義通知欄(Notification示例四),自定義notification
Android種使用Notification實現通知管理以及自定義通知欄(Notification示例四),自定義notification示例一:實現通知欄管理 當針對相