andriod 生成xml文件 方法

前端之家收集整理的这篇文章主要介绍了andriod 生成xml文件 方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在android平台中,我们经常会用到sharedPreference之类的东西,sharedPreference其实就是生成xml文件,然后去读写的过程。

下面请看一下代码目录:

源码如下:

  1. package com.leo.writexml;
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import java.util.Random;
  10.  
  11. import org.xmlpull.v1.XmlSerializer;
  12.  
  13. import android.app.Activity;
  14. import android.os.Bundle;
  15. import android.os.Environment;
  16. import android.util.Xml;
  17. import android.view.Menu;
  18. import android.view.View;
  19. import android.widget.Toast;
  20.  
  21. import com.leo.writexml.domain.SmsInfo;
  22.  
  23. public class MainActivity extends Activity {
  24. private List<SmsInfo> smsInfos;
  25. @Override
  26. protected void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. setContentView(R.layout.activity_main);
  29. smsInfos = new ArrayList<SmsInfo>();
  30. Random random = new Random();
  31. long number = 1580000001;
  32. for(int i = 0 ;i < 10 ;i++){
  33. smsInfos.add(new SmsInfo(System.currentTimeMillis(),random.nextInt(2) + 1,"短信内容"+i,Long.toString(number + i),i));
  34. }
  35. }
  36.  
  37. @Override
  38. public boolean onCreateOptionsMenu(Menu menu) {
  39. // Inflate the menu; this adds items to the action bar if it is present.
  40. getMenuInflater().inflate(R.menu.main,menu);
  41. return true;
  42. }
  43. public void backupSms(View view){
  44. //假设我已获得了所有的短信
  45. StringBuilder sb = new StringBuilder();
  46. sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  47. sb.append("<smss>");
  48. for(SmsInfo info:smsInfos){
  49. sb.append("<sms>");
  50. sb.append("<body>");
  51. sb.append(info.getBody());
  52. sb.append("</body>");
  53. sb.append("<date>");
  54. sb.append(info.getDate());
  55. sb.append("</date>");
  56. sb.append("<type>");
  57. sb.append(info.getType());
  58. sb.append("</type>");
  59. sb.append("<address>");
  60. sb.append(info.getAddress());
  61. sb.append("</address>");
  62. sb.append("</sms>");
  63. }
  64. sb.append("</smss>");
  65. File file = new File(Environment.getExternalStorageDirectory(),"smsinfo.xml");
  66. try {
  67. FileOutputStream fos = new FileOutputStream(file);
  68. fos.write(sb.toString().getBytes());
  69. fos.close();
  70. Toast.makeText(this,"备份 成功",0).show();
  71. } catch (Exception e) {
  72. // TODO Auto-generated catch block
  73. e.printStackTrace();
  74. Toast.makeText(this,"备份失败",0).show();
  75. }
  76. }
  77. /**
  78. * 第二种方式来生成xml文件
  79. * @param view
  80. */
  81. public void backupSms2(View view){
  82. XmlSerializer serializer = Xml.newSerializer();//xml序列化
  83. try {
  84. File file = new File(Environment.getExternalStorageDirectory(),"backupsms2.xml");
  85. FileOutputStream fos = new FileOutputStream(file);
  86. serializer.setOutput(fos,"utf-8");
  87. serializer.startDocument("utf-8",true);
  88. serializer.startTag(null,"smss");
  89. for(SmsInfo info :smsInfos){
  90. serializer.startTag(null,"sms");
  91. serializer.attribute(null,"id",info.getId()+"");
  92. serializer.startTag(null,"body");
  93. serializer.text(info.getBody());
  94. serializer.endTag(null,"body");
  95. serializer.startTag(null,"address");
  96. serializer.text(info.getAddress());
  97. serializer.endTag(null,"address");
  98. serializer.startTag(null,"type");
  99. serializer.text(info.getType()+"");
  100. serializer.endTag(null,"type");
  101. serializer.startTag(null,"date");
  102. serializer.text(info.getDate()+"");
  103. serializer.endTag(null,"date");
  104. serializer.endTag(null,"sms");
  105. }
  106. serializer.endTag(null,"smss");
  107. serializer.endDocument();
  108. fos.close();
  109. Toast.makeText(this,"备份成功",0).show();
  110. } catch (IOException e) {
  111. // TODO Auto-generated catch block
  112. e.printStackTrace();
  113. Toast.makeText(this,0).show();
  114. }
  115. }
  116. }
smsinfo文件:
  1. package com.leo.writexml.domain;
  2.  
  3. public class SmsInfo {
  4. private long date;
  5. private int type;
  6. private String body;
  7. private String address;
  8. private int id;
  9. public int getId() {
  10. return id;
  11. }
  12.  
  13. public void setId(int id) {
  14. this.id = id;
  15. }
  16.  
  17. public SmsInfo() {
  18. }
  19. public SmsInfo(long date,int type,String body,String address,int id) {
  20. super();
  21. this.date = date;
  22. this.type = type;
  23. this.body = body;
  24. this.address = address;
  25. this.id = id;
  26. }
  27. public long getDate() {
  28. return date;
  29. }
  30. public void setDate(long date) {
  31. this.date = date;
  32. }
  33. public int getType() {
  34. return type;
  35. }
  36. public void setType(int type) {
  37. this.type = type;
  38. }
  39. public String getBody() {
  40. return body;
  41. }
  42. public void setBody(String body) {
  43. this.body = body;
  44. }
  45. public String getAddress() {
  46. return address;
  47. }
  48. public void setAddress(String address) {
  49. this.address = address;
  50. }
  51. }
androidmanifist.xml:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.leo.writexml"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6.  
  7. <uses-sdk
  8. android:minSdkVersion="8"
  9. android:targetSdkVersion="17" />
  10. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  11. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  12. <application
  13. android:allowBackup="true"
  14. android:icon="@drawable/ic_launcher"
  15. android:label="@string/app_name"
  16. android:theme="@style/AppTheme" >
  17. <activity
  18. android:name="com.leo.writexml.MainActivity"
  19. android:label="@string/app_name" >
  20. <intent-filter>
  21. <action android:name="android.intent.action.MAIN" />
  22.  
  23. <category android:name="android.intent.category.LAUNCHER" />
  24. </intent-filter>
  25. </activity>
  26. </application>
  27.  
  28. </manifest>
activity_main.xml:
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity" >
  10.  
  11. <Button
  12. android:id="@+id/btn"
  13. android:onClick="backupSms"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:layout_alignParentTop="true"
  17. android:layout_centerHorizontal="true"
  18. android:layout_marginTop="199dp"
  19. android:text="生成XML文件" />
  20. <Button
  21. android:layout_below="@id/btn"
  22. android:onClick="backupSms2"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:text="第二种方式生成XML文件" />
  26.  
  27. </RelativeLayout>

代码差不多就这些,可以运行后,用DDMS查看生成文件

猜你在找的XML相关文章