Android XMl文件存储及其解析

Android使用xml存储数据和读取(xml序列化和解析) 没啥总结的,如果运行不成功那就评论区dd我。看到的话会回来改的。 阅读详情

Android XMl文件存储及其解析

在Android中有许多数据要以文件的形式保存到本地,那么怎么以xml格式的形式来保存文件呢?

使用StringBuffer拼接字符串(不推荐)

因为demo过于简单,就直接粘贴源码:

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
class my {
public static void main(String[] args) 
{
        initData();
}

  private static void initData() {
    File file = new File("C:\\Users\\xcq\\Desktop\\test\\my.xml");//这里是我的路径
    ArrayList<Bean> mList = new ArrayList<Bean>();
    try {
          FileOutputStream fis = new FileOutputStream(file);
        for (int i =0 ;i<10;i++){
         Bean bean =  new Bean("张"+i,"男",System.currentTimeMillis() );
         mList.add(bean);
        }
        StringBuilder sb = new StringBuilder();
        sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
        sb.append("<student>");

        for (int i = 0; i < mList.size(); i++) {
            sb.append("<body>");


            sb.append("<name>");
            sb.append(mList.get(i).getName());
            sb.append("</name>");


            sb.append("<sex>");
            sb.append(mList.get(i).getSex());
            sb.append("</sex>");


            sb.append("<date>");
            sb.append(mList.get(i).getDate());
            sb.append("</date>");


            sb.append("</body>");
        }

        sb.append("</student>");
        fis.write(sb.toString().getBytes());
        fis.close();

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

    }
}


static class Bean{
    private  String  name;
    private  String sex;
    private long date;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public long getDate() {
        return date;
    }

    public void setDate(long date) {
        this.date = date;
    }

    public Bean(String name, String sex, long date) {
        this.name = name;
        this.sex = sex;
        this.date = date;
    }
}}

执行完后的效果:

虽然这种方法能够生成xml文件,但是我们不推荐使用,因为如果在某个标签下,他的内容是这个标签就会出错比如
这个标签下,我的内容为,显然这种就无法解析。

使用XMl序列化器生成xml文件(推荐)

Dmeo在后面;

     private void createMetod() {
    // 得到xml序列化器对象
    XmlSerializer xmlSerializer = Xml.newSerializer();
    //给序列化器设置输出流
    File file = new File(getFilesDir().getAbsolutePath() + "my.xml");

    try {
        FileOutputStream fos = new FileOutputStream(file);
        //给序列化器指定好输出流
        xmlSerializer.setOutput(fos, "utf-8");//这个utf-8的作用,是指定xml文件用什么编码生成
        xmlSerializer.startDocument("utf-8", true);//这个utf-8的作用,指定的是头结点中encoding这个属性的值
        xmlSerializer.startTag(null, "student");

        //根节点的开始标签
        xmlSerializer.startTag(null, "name");
        xmlSerializer.text("张三");
        //根节点的结束标签
        xmlSerializer.endTag(null,"name");



        xmlSerializer.startTag(null, "age");
        xmlSerializer.text("12");
        xmlSerializer.endTag(null,"age");


        xmlSerializer.startTag(null, "addr");
        xmlSerializer.text("北京");
        xmlSerializer.endTag(null,"addr");

        xmlSerializer.endTag(null, "student");

        //生成尾节点,告诉序列化器,文件生成完毕
        xmlSerializer.endDocument();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

xmlSerializer.startDocument(“utf-8”, true);

这个utf-8的作用,指定的是头结点中encoding这个属性的值,后一个参数standalone,表示是否为独立的xml文件

xmlSerializer.startTag(null, “name”);

第一个参数是命名空间,类似于 android:layout_width=”match_parent”,前面的android,
这里就赋值为null,第二个参数为根节点名称。

运行之后我们就可以在data/data/mydemo.com.xmlcreate/files中查看到my.xml文件了

xml的解析

xml解析有4种方式:Dom,Dom4J,SAX,PUll

Dom:会把整篇文档加载到内存中,在Android里我们不推荐使用。

Dom4j:会导入jar包

SAX和pull:加载一行解析一行,以事件类型作为驱动。google推荐使用pull解析,因此我们使用pull进行解析。

//xml 解析
private void jiexiMethod() {
    File file = new File(getFilesDir().getAbsolutePath() + "/my.xml");
    try {
        FileInputStream fis = new FileInputStream(file);
        //获取Xml的pull解析器
        XmlPullParser xp = Xml.newPullParser();

        //指定使用什么编码去解析xml文件
        xp.setInput(fis,"utf-8");

        //开始解析
        //需要判断当前解析到什么标签,因为解析到不同的标签需要做不同的操作
        //通过获取当前标签的事件类型
        int type = xp.getEventType();

        while (type!=XmlPullParser.END_DOCUMENT){
          switch (type){
              case  XmlPullParser.START_TAG:
                if("student".equals(xp.getName())){//获取当前标签的名字
                   mList = new ArrayList<Bean>();
                    bean =new Bean();
                }else if("name".equals(xp.getName())){
                    String name = xp.nextText();//获取当前节点的下一个节点的文本,并把指针移动至当前节点的结束节点
                    bean.setName(name);
                }else if("age".equals(xp.getName())){
                    String age = xp.nextText();
                    bean.setAge(age);
                }else if("addr".equals(xp.getName())){
                    String addr = xp.nextText();
                    bean.setAddr(addr);
                }
                  break;
              case XmlPullParser.END_TAG:
                  if("student".equals(xp.getName())){
                      mList.add(bean);
                  }
                  break;
          }
        //指针移动至下一个节点,并且获取它的事件类型
        type = xp.next();
    }
    //解析结果

        for (int i = 0; i < mList.size(); i++) {
            Log.e("mlist",mList.toString());
        }

    } catch (Exception e) {


    }

}

相关Demo

Android向本地写入一个XML文件和解析XML文件 在网络存储过程中有很多时候会遇到XML文件解析和使用XML保存一些信息,解析XML文件用的比较多的方法是pull解析和SAX解析,但是我一般只用pull解析,下面就向cd卡写入一个XML文件,然后再使用pull解析的方法对文件进行解析。 阅读详情

相关推荐

android 自定义xml存储方式以及存储位置

android 自定义xml存储方式以及存储位置。我的博客地址:http://blog.youkuaiyun.com/qq_16064871。

android存储方式之xml

在android中短信不能用sharedpreference存储,所以用xml存储比较方便。

420

K8S证书过期解决办法之替换证书

k8s证书过期解决方案之替换证书

q_hsolucky的博客 1万+

android xml存储数据,关于android:xml数据存储的最佳方法

我是学习android的php / mysql开发人员。我正在创建一个从我的PHP应用程序接收信息的android应用程序,以创建不同产品的列表视图,这将打开该产品详细信息的网络视图。目前,我的php cms Web应用程序为iphone应用程序输出xml列表。...(也分别输出html)。我完全控制了php应用程序,因此,如果有更好的方法来为android应用程序输出数据,请告诉我。我已经创建了...

weixin_39585070的博客 737

第四次工业革命如何重构产业逻辑:写给技术人的趋势推演

第四次工业革命正在以人工智能、大数据和新能源为核心重构全球产业逻辑。本文从历史规律切入,指出技术革命本质是生产力跃迁和产业链话语权的转移。当前AI基础设施竞赛已形成算力、数据、算法三大支柱,其中算力投资首超石油领域,绿色算力与新型架构成为关键。数据治理带来隐私计算等新技术约束,数据中心正向液冷技术和"东数西算"模式演进。技术人需构建三大竞争力:夯实分布式系统等底层能力、培养跨领域知识融合能力、善用约束条件驱动创新。这场变革将奖励那些深度理解技术本质并能快速适应的实践者。

几十年资深高级架构师,技术专家的技术笔记。专注C、Java、Python、微服务、云原生、AI工程化及高并发系统分布式架构实战,分享源码剖析、性能调优与架构治理经验。 289

DELL Precision T7920加装显卡遇到的坑

文章目录DELL Precision T7920加装显卡服务器原有配置介绍选购过程确认型号确认PCIE x16插槽确认电源功率和电源线安装过程电源模组线不够多单装一个3090显卡尺寸问题加装上1080Ti非常重要!官方文档 DELL Precision T7920加装显卡 实验室由于显卡计算能力不够,以及显卡显存不够,请老师花了大价钱购入了两张GeForce 3090显卡。老师赛高!记录一下这次加装显卡过程中学到的一些知识。 服务器原有配置介绍 服务器原有一张1080Ti显卡,一个16核Xeon CPU。

weixin_45520982的博客 1万+

1-1.Android 下的 XML 文件(概念理解、存储位置理解)

XML(Extensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言

weixin_52173250的博客 2083

Python+whisper/vosk实现语音识别

Whisper 是一个由 OpenAI 开发的人工智能语音识别模型,它能够将语音转换为文本。Whisper 模型特别之处在于它的设计目标是能够理解和转录多种语言的语音,包括但不限于英语。Whisper 模型在训练时使用了大量不同语言的语音数据,这使得它具有很好的跨语言能力。Vosk 是一个开源的语音识别库,它可以在离线环境下工作,不依赖于任何外部服务。Vosk 基于Kaldi语音识别框架,支持多种语言,包括中文。Vosk提供了多种预训练模型,可以根据需求选择适合的模型进行语音识别。

weixin_44458771的博客 5939

Android中Xml数据存储与解析

xml可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。xml作为承载数据的一个重要角色,在Android中常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器;

Hai_pp的博客 1465

汇川Easy系列PLC系统PID指令编程应用(增量型)

增量式PIDS7-1200/1500增量式PID(输出归一化、支持PWM输出)_西门子1200pid算法公式-优快云博客文章浏览阅读1k次。本文介绍了S7-1200/1500 PLC中增量式PID算法的应用,包括输出归一化和PWM输出。通过详细解析,阐述了PID输出如何限制在0.0-1.0之间,并且如何将PID输出与PWM占空比关联,适用于温度等控制场景。

RXXW_Dor的博客 1422

2篇5章1节:实验流行病学的核心特征和设计原则

本文系统阐释实验流行病学的核心定义、四大核心特征、四大基本原则及主流设计类型,结合骨科、肿瘤科、儿科、精神科、内外妇儿及公共卫生等多学科临床实践案例,具象化解读人为干预、随机分组、平行对照、前瞻性设计的核心内涵与应用价值。同时,规范梳理对照、随机、盲法、重复四大研究基本原则,详细介绍临床试验、现场试验、社区试验三类主流研究设计的适配场景与应用差异。

MD Code 169

Android-10-数据存储

1.数据存储方式 (1)文件存储:该存储方式是一种较常用的方法,在Android中读取/写入文件的方法,提供了openFileInput()和 openFileOutput()方法来读取设备上的文件。可以存储大数据,如文本、图片、音频等。 (2)SharedPreferences:它是Android提供的用来存储一些简单的配置信息的一种机制,采 用了XML格式将数据存储到设备中。可以存储应用程序的各种配置信息,如用户名、密码等。 (3)SQLite数据库: SQLite 是Android自带的一个轻量级

qq_42759120的博客 3102

2026最新openclaw(clawbot/moltbot)真正在自己个人电脑上搭建部署,配置飞书远程远程让AI助理操控电脑完成任务,以及结合ollama无限token实现7*24小时工作(附配置)

2026最新openclaw(clawbot/moltbot)真正在自己个人电脑上搭建部署,配置飞书远程远程让AI助理操控电脑完成任务,以及结合 ollama 无限token实现7*24小时工作,以及部署安装需要的 skills 完成复杂的工作任务(附完整可以运行的配置文件)。 很多人已经会配置安装 openclaw 了 ,但是 安装完成之后真正让电脑自动运行起来的很好,完成出色工作的更少,最常见的就是聊聊天,或者执行一些简单的命令,理解要让电脑自动化工作,openclaw、skills、大模型这三样。

代码讲故事 2962

(4.4.6)android之文件存储类

1-android的文件存储方式有sharePreference流文件xml半结构化数据SQLite数据库第三方面向对象的数据库 2-sharePreference的存放路径系统内存datadatapackage nameshare_prefs文件夹可以用反射机制修改默认存放路径 3-可以使用流方式读取sharePreference文件数据 4-sharePreference可以存放图像文件但是要转

JAVA成长之路 972

Android系统解决-授予管理所有文件的权限问题

Android版本一直在加,Android9/Android10/Android11/Android12/Android13/Android14/Android15 , 客户app 也在不断适配,但是存在特别是定制产品中,客户不愿意适配,啥问题都让系统解决,绕过一定机制、实现。这里说的就是一个常见的常见需求:Android13 上面,客户要求默认授予管理所有文件的权限,如下:问题是机器重启后这个权限仍需要重新打开才行,那就是每次开机使用某些功能前都需要授权一次。是的ADB对应命令。

十年饮冰,难凉热血 2539

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android - 测试(粒度/程度/),JunitTest,logcat,SharedPreferences,上下文,文件权限,生成xml文件,xml的解析

Android - (测试(粒度/程度/),JunitTest,logcat,SharedPreferences,上下文,文件权限,生成xml文件,xml的解析

mythmayor的博客 429

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android总结第一篇

先来看看效果图: 第一天:学习android的历史,以及收发短信 发送短信以及打电话的过程中,我们要注意给权限SEND_SMS  CALL_PHONE 同时有四种方法去监听按钮 最好的最常用的一种是直接 第一步:实现接口 implements OnClickListener 第二步:按钮监听 Button but_add_data=(

wohenai791515672的专栏 1006

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

传智播客java学习--3g开发Android2

使用文件进行数据存储: Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。 public class FileActivity extends Activity {     @Override public void onCreate(Bundle savedInstanceState) { ...

weixin_33682790的博客 71

Android ListPreference的用法

首先,我们明确,preference是和数据存储相关的。 其次,它能帮助我们方便的进行数据存储!为什么这个地方一定要强调下方便的这个词呢?原因是,我们可以根本就不使用,我们有另外的N种办法可以实现同样的功能!它的出现,相当于为我们提供了一个方便的工具,当然了,这个工具并不是必须的。preference都应用在什么场景呢? 这得从android对preference的实现说起...

京之道 183

Android 常见面试 知识点小结

前言根据笔者自己的阅读以及项目经验总结而言,不同于网上的copy来copy去。很多内容加上了自己的理解,难免有错误不当之处,烦请指出。Android 系统架构 Linux 内核层,为 Android 设备提供了底层的驱动,如蓝牙驱动、照相机驱动等等 系统运行库层,这些曾通过一些 C/C++ 库为 Android 系统提供了主要的特性支持,如 SQlite 提宫数据库,Webkit 提高了浏览器内核

手把手教你学安卓 2669

制作一个简单的新闻客户端

前面的博客中介绍了在Android中实现网络通信,这篇博客将是对前面介绍的技术的一个综合运用,制作一个简单的新闻客户端,在这个新闻客户端中用到了ListView、ListView的优化、使用开源框架访问网络图片、使用pull解析xml文件等技术,这些技术都是前面的博客中介绍的 首先看一下新闻客户端的演示效果 实现方式: 第一步:将新闻中用到的图片部

meishadevs的个人博客 6929

Android的文件存储

数据存储 Android的数据存储有5种,分别为文件存储,SharedPreferences、SQLite数据库、ContentProvifer以及网络存储。 文件存储:常用的存储方式,读写文件,与Java中实现I/O程序完全一样。 有两种形式:XML以及JSON。 SharedPreferences:存储一些简单的信息的一种机制。采用XML格式将数据存储到设备中,可以存储用户的各种配置信...

菜菜的博客 1372

android解析XML

XML是一种常用的数据存储方式,在Android平台内部很多地方都使用了XML存储,轻量级的SharedPreferences 类的存储就使用了XML文件。 XML解析主要有三种方式,SAX ,DOM, 和Android自带的PULL解析器解析XML文件。 常规在PC使用DOM相对轻松,对一些性能敏感的数据库或手机主要采用SAX方式,SAX读取是单向的,优点是不占用空间,属性解析方便,但对于嵌

WannerWang的博客 645

Android中的数据存储之文件存储、SharedPreferences和Pull解析

Android中的数据存储之文件存储、SharedPreferences和Pull解析一、数据存储的五种方式 文件存储 分手机内部存储、手机外部存储 以IO流形式存放,可存放较大数据 SharedPreferences 本质是一个XML 以Map形式存放简单的配置参数 SQLite 轻量级、跨平台数据库 所有数据都是存放在手机上的单一文件内,占用内存小 ContentProvider 将本应

技术路漫漫 1262

Android--使用pull解析XML和在sd卡中生成XML文件

代码: 主函数: ublic class MainActivity extends AppCompatActivity { String xmlString = "&lt;apps&gt;\n" + "\t&lt;app&gt;\n" + "\t\t&lt;id&gt;1&lt...

ykx_1448488568的博客 628
上一篇: Android内部存储和外部存储
下一篇: android Error:Error: File path too long on Windows, keep below 240 characters
FlyRabbit_1
博客等级 码龄10年 4粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值