標籤:
1.xml檔案:
用元素描述資料,跨平台。
2.利用傳統的方式建立xml檔案,下面是一個案例:
設計思路:建立一個學生管理系統,建立xml檔案儲存學生資訊;
(1)首先是布局檔案activity_main.xml檔案,如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" android:paddingLeft="10dip" android:paddingRight="10dip" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="學生資訊管理系統" android:textColor="#99ff0000" android:textSize="20sp" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="姓名" android:textColor="#9900ff00" android:textSize="14sp" /> <EditText android:id="@+id/et_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="請輸入姓名" android:inputType="text" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="學號" android:textColor="#9900ff00" android:textSize="14sp" /> <EditText android:id="@+id/et_num" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="請輸入學號" android:inputType="number" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="性別" android:textColor="#9900ff00" android:textSize="14sp" /> <RadioGroup android:id="@+id/rg_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <RadioButton android:id="@+id/rb_male" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="男" /> <RadioButton android:id="@+id/rb_female" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女" /> </RadioGroup> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:onClick="save" android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="儲存" /> </RelativeLayout></LinearLayout>
:
(2)邏輯核心代碼如下:MainActivity.java:
package com.itheima.studentinfo;import java.io.File;import java.io.FileOutputStream;import android.app.Activity;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.Window;import android.widget.EditText;import android.widget.RadioGroup;import android.widget.Toast;public class MainActivity extends Activity { private EditText et_name; private EditText et_num; private RadioGroup rg_sex; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //介面無標題 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); et_name = (EditText) findViewById(R.id.et_name); et_num = (EditText) findViewById(R.id.et_num); rg_sex = (RadioGroup) findViewById(R.id.rg_sex); } /** * 點擊儲存學生的資訊,產生一個xml檔案 * @param view */ public void save(View view){ String name = et_name.getText().toString().trim(); String num = et_num.getText().toString().trim(); if(TextUtils.isEmpty(num)||TextUtils.isEmpty(name)){ Toast.makeText(this, "學生姓名或者學號不可為空", 0).show(); return ; } try { File file = new File(getFilesDir(),num+".xml"); FileOutputStream fos = new FileOutputStream(file); StringBuilder sb = new StringBuilder();
//傳統地建立xml檔案 sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); sb.append("<student>"); sb.append("<name>"); sb.append(name); sb.append("</name>"); sb.append("<num>"); sb.append(num); sb.append("</num>"); sb.append("<sex>"); int id = rg_sex.getCheckedRadioButtonId(); if(id==R.id.rb_male){//男 sb.append("male"); }else{//女 sb.append("female"); } sb.append("</sex>"); sb.append("</student>");
fos.write(sb.toString().getBytes()); fos.close(); Toast.makeText(this, "儲存資料成功", 0).show(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(this, "儲存資料失敗", 0).show(); } }}
運行代碼布署到模擬器上,然後我們在/data/data/com.itheima.studentinfo/files目錄下,找到了10001.xml檔案如:
把10001.xml檔案匯出到電腦上,使用瀏覽器開啟如:
上面是建立xml檔案比較傳統的方法,但是輸入姓名 、學號等資訊的時候,我們不能包含非法字元,比如“ /”、“ < ”等等類似,所以上面代碼還是有缺陷的。如:
使用瀏覽器開啟產生的10002.xml檔案報如下錯誤:
很明顯上面傳統的xml檔案的建立方式是具有很大局限性,但是google的api提供很方便的介面產生xml檔案,而且不用考慮這些非法字元,所以很方便安全,下面就介紹:
Android(java)學習筆記185:xml檔案產生