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

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文件,而且不用考虑这些非法字符,所以很方便安全,下面就介绍:

时间: 2024-10-26 15:52:44

Android(java)学习笔记185:xml文件生成的相关文章

JAVA学习笔记 -- 把资源文件打包到jar包

初学GUI,用Eclipse导出jar包,设定的最小化图标不能显示(hello.png文件放在项目的根目录下).代码如下: import javax.swing.JFrame; import java.awt.Toolkit; import java.awt.Image; import java.net.URL; public class GUITest { public static void main(String[] args) { JFrame frame = new JFrame();

java学习笔记之xml

xml学习笔记 1:xml的概述 1.1 xml是什么 标记语言:语言中出现了<a></a>的标签 a:HTML 超文本标记语言 (语法非常严格,不能随意的定义标签) b:XML 可扩展的标记语言(用户可以根据自己的需求,随意的定义标签) <垃圾></垃圾> 开发的组织:w3c 开源精神 HTML XML Java Script 版本:使用 1.0 1.2 xml有什么用 a:存储数据 b:作为配置文件 1.3 xml怎么用 2:xml的语法 2.1 文档声

JAVA学习笔记 -- 读写XML

XML是一种可扩展标记语言 以下是一个完整的XML文件(也是下文介绍读写XML的样本): <? xml version="1.0" encoding="UTF-8"? > <poem author="William Carlos Williams" title="The Great Figure"> <line>Among the rain</line> <line>

android开发学习笔记(一)-Manifest文件

一:概述 所有的app都要在根目录下AndroidManifest.xml文件,这个文件显示了app告诉android系统的基本信息.在app代码运行之前,android系统从这个文件获取基本信息 功能: 给app的java包起名作为这个app的唯一标识符 声明app中要使用的组件 决定哪些进程持有app组件 确定app需要的用户权限 它声明应用程序必须拥有哪些权限以访问API的被保护部分以及与其它应用程序交互 它声明应用程序必须拥有哪些权限以访问API的被保护部分以及与其它应用程序交互 声明a

Struts2 学习笔记——struts.xml文件之Bean的配置

Struts2的大部分核心组件不是以硬编码的形式写在代码中,而是通过自身的IoC容器来管理的. Struts2以可配置的形式来管理核心组件,所以开发者可以很容易的扩展框架的核心组件.当开发者需要扩展或者替换Struts2的核心组件时,只需要提供自己的组件实现类,并部署在Struts2的IoC容器中即可. 我们打开struts2-core-2.2.1.1.jar中的struts-default.xml文件,可以看到大量的Bean的定义.如下代码片段: <struts> <!—- 两个对象工

Java学习笔记七(文件夹操作)

1.介绍 上一篇博客介绍的是java中常用的操作文件的方式,本篇博客着重讲解一下,在Java中是如何来操作文件夹的.主要是利用的是Java.IO包下面的File类,本篇博客着重讲解一下该类的构造函数和常用的方法. 2.File类的字段摘要 File类为我们提供了与系统有关的路径分割符,字段分别如下 static String pathSeparator:返回值为字符串,结果表示分号; static char pathSeparatorChar:返回值为char类型,结果表示分号 static c

Java学习笔记--字符串和文件IO

1.Java中的字符串类和字符的表示 2.区分String,StringBuilder和StringBuffer 3.从命令行中给main方法传递参数 4.文件操作 1 Java中的字符串和字符 1.1 String类 字符串就是由一系列的字符组成的序列,在很多语言中,比如C语言,将其存储在一个数组中.现在运用Java的思想,就要将字符串视为一个对象,其中Java规定的String类有11个构造方法,同时还有至少40种实现的方法,通过String类的学习,可以很好地了解面向对象的类和对象的思想.

16-1-8 JAVA学习笔记(1) XML语法

一.XML语法 1.xml文档声明,声明基本属性,有且只有一个文档生活,必须在最前端: <?xml version="1.0" encoding="utf-8" standalone="yes" ?>; 2.xml元素,一个xml标签就是一个xml元素,一个标签分为开始标签和结束标签,在开始标签跟结束标签间可以包含文本,文件内容成为标签体, 如果一个xml标签内不包括标签体也不包含其他元素,那么可以把开始标签跟结束标签合并,称为自闭标

FPGA学习笔记之mif文件生成方法总结

方法1:利用Quartus自带的mif编辑器 优点:对于小容量RAM可以快速方便的完成mif文件的编辑工作,不需要第三方软件的编辑: 缺点:一旦数据量过大,一个一个的输入会使人崩溃: 使用方法:在quartus中,[file]/[new],选择Memory  Initialization file,弹出如下窗口: Number of words:可寻址的存储单元数,对于8bit地址线,此处选择256: words size:存储单元宽度,8bit: 然后点击“OK”. 在表格中输入初始化数据:

16-1-9 JAVA学习笔记(2) XML 约束

定义:在XML技术里,可以编写一个文档来约束一个XML文档的写法,这称之为XML约束. 作用:约束XML文档的写法:对XML进行校验: 常用约束技术 :  XML DTD(Document Type Definition)文档类型定义: XML Schema 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE 书架 SYSTEM"book.dtd"> 3 <书架&