安卓中xml的读取与生成
来源:互联网 发布:在线画画软件 编辑:程序博客网 时间:2024/05/17 06:03
文档背景:
安卓界面activity:
一个textview两个按钮
生成button和解析button
本文档主要通过实例将xml的读取和生成过程
详细“翻译”;
package com.example;
import android.os.Bundle;
import android.util.Xml;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button bt1;private Button bt2;private TextView tv;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setView(); setListeners();}private void setView() { // TODO Auto-generated method stub bt1 = (Button) findViewById(R.id.button1); bt2 = (Button) findViewById(R.id.button2); tv= (TextView) findViewById(R.id.textView1);}private void setListeners() { // TODO Auto-generated method stub bt1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub jiexi(); } }); bt2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub shengcheng(); } });}protected void shengcheng() {//解析自定义的生成方法;此方法生成 // TODO Auto-generated method stub try { //try catch捕捉错误信息; FileOutputStream out = //文件输出流out new FileOutputStream( "/sdcard/e.xml");//将文件输出流接入sd卡中的e.xml 文件上;准备向e输出数据; XmlSerializer s = //序列化器 s,用来生成xml文件; Xml.newSerializer(); s.setOutput(out, "GBK");//序列化器s的输出端口接入out,输出指定的GBK格式的输出流; s.startDocument("GBK", true); //序列化器头部公文标记格式为GBK,是独立文件; s.startTag(null, "email")//序列化器输出开始标签,命名空间选择默认null;名字叫email; .attribute(null, "date", "2016-10-29")//的属性(命名空间为null,日期属性设置为2016-10-29) .attribute(null, "time", "16:5:12")//的属性(命名空间null,时间属性设置为16:5:12) .startTag(null, "from")//的开始标签(命名空间为null,标签内容是from) .text("aaa@aaa.com")//开始标签的文字内容是aaa@aaa.com .endTag(null, "from")//的结束标签(命名空间为null,标签内容是from ) .startTag(null, "to")//开始标签....to .startTag(null, "to-email")//标签嵌套,表明to标签中的内容是以下几个“toemail”收件人标签 .text("bbb@bbb.com") .endTag(null, "to-email") .startTag(null, "to-email") .text("ccc@ccc.com") .endTag(null, "to-email") .startTag(null, "to-email") .text("ddd@ddd.com") .endTag(null, "to-email") .endTag(null, "to")//承接上面的to开始标签,此时完成to标签; .startTag(null, "subject")//标题subject的开始标签 .text("Hello Xml!")//此标签的内容是hello xml .endTag(null, "subject")//标题的结束尾标签 .startTag(null, "body")//正文名为body的开始标签 .text(">>>Hello Xml!<<<>>>Hello Xml!<<<>>>Hello Xml!<<<")//内容为。。。 .endTag(null, "body")//body的结束 .endTag(null, "email");//序列化器email的输出结束 s.flush(); out.close(); Toast.makeText(this, "生成成功", 0).show(); } catch (Exception e) { // TODO: handle exception Toast.makeText(this, "生成失败", 0).show(); e.printStackTrace(); }}protected void jiexi() { // TODO Auto-generated method stub try { tv.setText("");//清空textview; FileInputStream in=new FileInputStream("/sdcard/email.xml");//找到sd卡中的xml文件; XmlPullParser p=Xml.newPullParser();//创建新的解析器p p.setInput(in,"GBK");//设置读取xml数据输入流 int type; while((type=p.next())!=XmlPullParser.END_DOCUMENT){//当p的next()不是数据流的end时!=1时; if(type==XmlPullParser.START_TAG){//如果是数据解析流的开始标签时 String name=p.getName();// 获取标签的名字 if(name.equals("email")){//如果标签名等于email; String d=p.getAttributeValue(null, "date");//获得email的date属性值 String t=p.getAttributeValue(null, "time");//获得email的time属性值 tv.append("\nDate:"+d);//在tv里换行显示“date:“+d tv.append("\nTime:"+t);//在tv里换行显示“Time:”+t }else if(name.equals("from")){//如果标签名是from; tv.append("\n发件人:"+p.nextText());//tv里换行显示:发件人+标签名向后跳一步所取得的文本; }else if(name.equals("to-email")){//如果标签名=to-email tv.append("\n收件人:"+p.nextText());//tv换行显示收件人+标签名后的文本; }else if(name.equals("subject")){//如果标签名=subject; tv.append("\n标题:"+p.nextText());//tv换行显示标题+标题标签名下的文本; }else if(name.equals("body")){//如果标签名是body tv.append("\n内容:"+p.nextText()); //tv里换行显示内容标签下的文本; } } } in.close(); Toast.makeText(this, "解析完成", 0).show(); } catch (Exception e) { // TODO: handle exception Toast.makeText(this, "解析失败", 0).show(); }}@Overridepublic boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true;}
}
0 0
- 安卓中xml的读取与生成
- 读取与生成XML
- 读取生成的xml
- android中xml文件的生成与读取(Pull)
- Go语言关于XML的读取与生成
- DOM4J生成与读取XML文档
- 构造xml文件(生成与读取)
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
- DOM模型的XML文件生成读取
- DOM模型的XML文件生成读取
- Java 如何读取sqlserver生成的xml
- xml读取和生成
- 分页生成读取xml
- 在Android中操作XML数据-读取与解析XML数据/生成与输出XML数据
- XML的解析与生成
- xml的生成与解析
- 《黑镜》第一季观后感
- Linux 搭建nexus私服
- 基本数据类型 运算符 输入输出语句
- 在eclipse里报这个错Http Status 500-/***.jsp(line:2,column:39) The JSP specification requires ............
- Linux开发工具:gcc
- 安卓中xml的读取与生成
- centos7下载rpm包安装MySQL
- 31传染(3)48(4)
- Java toArray用法
- 洛谷 1199
- .c文件到可执行文件过程
- 洛谷 P3406 海底高铁
- 第5章 接口隔离原则(ISP)
- 2016-10-29动态库静态库的制作步骤及各自优缺点