XmlPullParser(安卓推荐)

添加xml文件XmlPullParser

package com.it.heima.review;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.xmlpull.v1.XmlSerializer;

import android.R.xml;
import android.os.Bundle;
import android.app.Activity;
import android.text.TextUtils;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Toast;

public class MainActivity extends Activity {
    private EditText ed_ssname;
    private RadioGroup rgb;
    private Button btnButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnButton = (Button) findViewById(R.id.btnSave);
        ed_ssname = (EditText) findViewById(R.id.ed_name);
        rgb = (RadioGroup) findViewById(R.id.rgb);
        btnButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String studentname = ed_ssname.getText().toString().trim();
                String sex;
                if (TextUtils.isEmpty(studentname)) {
                    Toast.makeText(getApplicationContext(), "ssss", 0);
                } else {
                    int id = rgb.getCheckedRadioButtonId();

                    if (id == R.id.male) {
                        sex = "男";
                    } else {
                        sex = "女";
                    }
                    File file = new File(getFilesDir(), studentname + ".xml");
                    try {
                        OutputStream out = new FileOutputStream(file);
                        XmlSerializer serializer = Xml.newSerializer();
                        serializer.setOutput(out, "utf-8");
                        serializer.startDocument("utf-8", true);
                        serializer.startTag(null, "name");
                        serializer.text(studentname);
                        serializer.endTag(null, "name");
                        serializer.startTag(null, "sex");
                        serializer.text(sex);
                        serializer.endTag(null, "sex");
                        serializer.endDocument();
                        Toast.makeText(getApplicationContext(), "sucess", 0);
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        });
    }
}

解析

package com.itheima.pullparser;

import java.io.IOException;
import java.io.InputStream;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import com.itheima.pullparser.domain.Product;

import android.os.Bundle;
import android.app.Activity;
import android.util.Xml;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //使用 xml  pull 解析器 去 解析 xml 文件的内容

        // Xml
        XmlPullParser pullParser = Xml.newPullParser();

        try {
            InputStream in = getAssets().open("result.xml");

            // 解析的源 是什么 ???  --- result.xml
            pullParser.setInput(in, "gbk");

            //获得 一个 事件的 类型
            int eventType = pullParser.getEventType();
/*
<?xml version="1.0" encoding="gbk"?>
<smartresult>
  <product type="mobile">
    <phonenum>13512345678</phonenum>
    <location>重庆移动神州行卡</location>
    <phoneJx>有得有失,华而不实,须防劫财,始保平安 吉带凶</phoneJx>
 </product>
</smartresult>
 *
 */
            Product p=null;
            while(eventType!=XmlPullParser.END_DOCUMENT){

                if(eventType==XmlPullParser.START_TAG){

                    //判断是否是 元素的开始 , 只要是某个 元素的开始位置, 那么就会进入这里
                    //获得 当前解析到的元素的名称
                    if("product".equals(pullParser.getName())){
                        p = new Product();
                        // sax 解析 

                        //准备 product 类的一个实例 , 去 封装数据
                        String type = pullParser.getAttributeValue(0);
                        p.setType(type);
                    }else if("phonenum".equals(pullParser.getName())){

                        //获得   13512345678

                        // <phonenum>13512345678</phonenum>
                        String phonenum = pullParser.nextText();
                        p.setPhonenum(phonenum);
                    }else if("location".equals(pullParser.getName())){

                        //<location>重庆移动神州行卡</location>
                        String location = pullParser.nextText();
                        p.setLocation(location);
                    }else if("phoneJx".equals(pullParser.getName())){

//                        <phoneJx>有得有失,华而不实,须防劫财,始保平安 吉带凶</phoneJx>
                        String phoneJx = pullParser.nextText();
                        pullParser.getText();
                        p.setPhoneJx(phoneJx);
                    }
                }
                //手动 挪动 "指针 "
                eventType = pullParser.next();
            }

            if(p!=null){
                System.out.println(p.toString());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}
时间: 2024-08-15 00:15:41

XmlPullParser(安卓推荐)的相关文章

安卓白盒测试发现问题分类 不涉及业务逻辑

1.异步网络请求的回调中更新UI,但未判断界面是否存在而导致空指针crash 2.Handler中的Callback导致的内存泄漏 3.静态对象保存Activity引用而导致的内存泄漏 4.Handler所在的类为内部类时,若不是静态内部类,默认保存外部类的引用而导致的内存泄漏 5.handler的postDelayed中更新UI,但可能执行时界面也不是当前界面,也会导致空指针crash 6.Fragment中没有默认空构造函数导致crash 7.进程内模块间通信,为了解耦使用广播,但未使用Lo

关于XML与XML解析(一)

XML语言 XML语言:可扩展标记语言(HTML 超文本标记语言) XML与HTML的差异主要在于其标记完全是自定义的,我们只需要遵循一定的语法结构即可. 其主要作用是:存储配置信息和传输数据(用于数据交换) 特点: 1.xml文件后缀名:.xml(可使用浏览器浏览) 2.xml文档结构:序言(<?xml version="1.0" encoding="字符集">) + 数据部分 3.xml节点:分双标记和单标记(开始标记--结束标记),根标记只能有一对

保护视力-刻不容缓

蓝光对人眼的危害,主要表现在导致近视.白内障以及黄斑病变的眼睛病理危害和人体节律危害. 科普 短波蓝光是波长处于 400nm-480nm 之间具有相对较高能量的光线. 该波长内的蓝光会使眼睛内的黄斑区毒素量增高,严重威胁我们的眼底健康.蓝光诱发致盲眼病 -- 来源百度百科 https://baike.baidu.com/item/蓝光/4217304 f.lux 过滤伤害人眼的蓝光,根据时间变化调整屏幕的色温,减少眼睛疲劳感,提高睡眠质量. f.lux 根据用户设置的位置,获取一天的日出日落时间

程序员必备:常见的安卓开发工具推荐

Android以其极强的开放性吸引着世界各地的开发者去开发各种各样的移动应用开发,而各种SDK更是为各个层次的开发者提供了一个可以尽情展示他们专业技能和创造性的平台.虽然Java是各种平台最常用的编程语言,但是一些其它的工具包只支持C.C++和Ruby.除此之外,所要开发应用的特性在一定程度上也决定了开发环境的选择. 下面给大家推荐几款常见的安卓开发工具         一.Basic4Android Basic4Android是Android平台上一个简单而又强大的可视化快速安卓应用开发工具,

求大大们推荐安卓API在线查阅的网站!

============问题描述============ 我之前找到一个英文的网站,里面包含有internals这类隐藏API的,非常完整,现在网址找不到了,求大大们推荐个能在线查API的网站,谢谢! ============解决方案1============ http://www.android-doc.com/ 中文的能访问,英文的不行了,除非FQ.

推荐安卓开发神器(里面有各种UI特效和实例)

网上有很多开源的安卓类库很好用,对于刚学习安卓的童鞋亦或者老鸟都是很好的学习对象. 我平时有关注开源代码的习惯,这么多年也搜集了不少精彩的源码. 到后来发现自己手机里装的都是几百个demo app,删又不舍得删,不删又占资源, 于是就准备搞了个23code应用,里面汇集了我精心整理的应用, 此后每周应该都会更新.敬请期待... 百度下载 更多源码访问官网www.23code.com ,网站尽量每天都更新. 有童鞋不懂什么意思, 1.如果手机装的开源应用多得话,就记不得哪个是哪个了,这个直接软件内

电子书阅读器安卓版推荐 PDF阅读器也可轻松编辑文档了

在电子书的各种格式中,你最青睐哪种呢?是mobi.txt.还是PDF,相信很多人和小编一样喜欢阅读 PDF格式的电子书,这时候选择一款合适的PDF阅读器就十分重要了.那么,电子书阅读软件哪个好呢? 在回答这个问题之前,我们先考虑这样一个问题,我们需要一款什么样的PDF阅读器?是只满足基本的阅读功能就可以了么?想必很多人都不满足于这吧.小编今天推荐的这款轻快PDF阅读器的功能就十分齐全,不信且往下看: 一.我们需要什么样的阅读功能? 1.自动添加手机内的PDF文件:这点应该没什么意见吧,毕竟很多人

六款值得推荐的android(安卓)开源框架简介

1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduling) (3) 网络请求的优先级处理 (4) 缓存 (5) 多级别取消请求 (6) 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求) 2.android-async-http 项目地址:https://github.com/loopj/android-async-http

六款值得推荐的android(安卓)开源框架简介(转)

1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载: (2)  网络请求的排序(scheduling) (3)  网络请求的优先级处理 (4)  缓存 (5)  多级别取消请求 (6)  和Activity和生命周期的联动(Activity结束时同时取消所有网络请求) 2.android-async-http 项目地址:https://github.com/loopj/android-asyn