码迷,mamicode.com
首页 > 移动开发 > 详细

Android(java)学习笔记185:xml文件生成

时间:2015-08-20 23:54:20      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

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文件生成

标签:

原文地址:http://www.cnblogs.com/hebao0514/p/4746396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!