安卓xml存储读取和sharedpreferences文件存储读取

起因今天有人问到我 xml文件存储读取和sharedpreferences读写该咋做,能不能帮忙写个案例,这里我简单写出一个案例,一下是全部的代码

一、首先引入

权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

二、下面是Activity

import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;import java.io.File;
import java.io.IOException;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;public class MainActivity extends AppCompatActivity {private EditText ed_name;//名字private EditText ed_school_degree;//学号private EditText ed_age;//年龄private EditText ed_gender;//性别private EditText ed_face;//政治面貌private EditText ed_address;//家庭住址private Button btn_save_xml;//保存到xmlprivate Button btn_read_xml;//从xml读取private Button btn_save_sharedpreferences;//保存到SharedPreferencesprivate Button btn_read_sharedpreferences;//从SharedPreferences读取@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ed_name = findViewById(R.id.ed_name);ed_school_degree = findViewById(R.id.ed_school_degree);ed_age = findViewById(R.id.ed_age);ed_gender = findViewById(R.id.ed_gender);ed_face = findViewById(R.id.ed_face);ed_address = findViewById(R.id.ed_address);btn_save_xml = findViewById(R.id.btn_save_xml);btn_read_xml = findViewById(R.id.btn_read_xml);
//        xml文件存储读取btn_save_xml.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String name = ed_name.getText().toString();String school_degree = ed_school_degree.getText().toString();String age = ed_age.getText().toString();String gender = ed_gender.getText().toString();String face = ed_face.getText().toString();String address = ed_address.getText().toString();if (TextUtils.isEmpty(name)) {showToast("请输入姓名");return;}if (TextUtils.isEmpty(school_degree)) {showToast("请输入学号");return;}if (TextUtils.isEmpty(age)) {showToast("请输入年龄");return;}if (TextUtils.isEmpty(gender)) {showToast("请输入性别");return;}if (TextUtils.isEmpty(face)) {showToast("请输入政治面貌");return;}if (TextUtils.isEmpty(address)) {showToast("请输入家庭住址");return;}// 创建一个 DocumentBuilder 对象DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder;try {builder = factory.newDocumentBuilder();Document doc = builder.newDocument();// 创建根元素Element rootElement = doc.createElement("student");doc.appendChild(rootElement);// 创建子元素并设置文本内容Element nameElement = doc.createElement("name");nameElement.appendChild(doc.createTextNode(name));rootElement.appendChild(nameElement);Element schoolDegreeElement = doc.createElement("school_degree");schoolDegreeElement.appendChild(doc.createTextNode(school_degree));rootElement.appendChild(schoolDegreeElement);Element ageElement = doc.createElement("age");ageElement.appendChild(doc.createTextNode(age));rootElement.appendChild(ageElement);Element genderElement = doc.createElement("gender");genderElement.appendChild(doc.createTextNode(gender));rootElement.appendChild(genderElement);Element faceElement = doc.createElement("face");faceElement.appendChild(doc.createTextNode(face));rootElement.appendChild(faceElement);Element addressElement = doc.createElement("address");addressElement.appendChild(doc.createTextNode(address));rootElement.appendChild(addressElement);// 将文档写入 XML 文件TransformerFactory transformerFactory = TransformerFactory.newInstance();Transformer transformer = transformerFactory.newTransformer();DOMSource source = new DOMSource(doc);StreamResult result = new StreamResult(new File(getFilesDir(), "student_info.xml"));transformer.transform(source, result);showToast("学生信息已保存到 XML 文件");} catch (ParserConfigurationException | TransformerException e) {e.printStackTrace();showToast("保存失败:" + e.getMessage());}}});btn_read_xml.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {try {// 创建一个 DocumentBuilder 对象DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();// 从文件中读取 XML 数据File xmlFile = new File(getFilesDir(), "student_info.xml");Document doc = builder.parse(xmlFile);// 获取根元素Element rootElement = doc.getDocumentElement();// 获取子元素并读取其文本内容String name = rootElement.getElementsByTagName("name").item(0).getTextContent();String school_degree = rootElement.getElementsByTagName("school_degree").item(0).getTextContent();String age = rootElement.getElementsByTagName("age").item(0).getTextContent();String gender = rootElement.getElementsByTagName("gender").item(0).getTextContent();String face = rootElement.getElementsByTagName("face").item(0).getTextContent();String address = rootElement.getElementsByTagName("address").item(0).getTextContent();// 显示读取的数据,您可以根据需要修改此部分showToast("姓名: " + name + "\n" +"学号: " + school_degree + "\n" +"年龄: " + age + "\n" +"性别: " + gender + "\n" +"政治面貌: " + face + "\n" +"家庭住址: " + address);} catch (ParserConfigurationException | SAXException | IOException e) {e.printStackTrace();showToast("读取失败:" + e.getMessage());}}});btn_save_sharedpreferences = findViewById(R.id.btn_save_sharedpreferences);btn_read_sharedpreferences = findViewById(R.id.btn_read_sharedpreferences);
//        sharedpreferences文件存储读取btn_save_sharedpreferences.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String name = ed_name.getText().toString();String school_degree = ed_school_degree.getText().toString();String age = ed_age.getText().toString();String gender = ed_gender.getText().toString();String face = ed_face.getText().toString();String address = ed_address.getText().toString();if (TextUtils.isEmpty(name)){showToast("请输入姓名");return;}if (TextUtils.isEmpty(school_degree)){showToast("请输入学号");return;}if (TextUtils.isEmpty(age)){showToast("请输入年龄");return;}if (TextUtils.isEmpty(gender)){showToast("请输入性别");return;}if (TextUtils.isEmpty(face)){showToast("请输入政治面貌");return;}if (TextUtils.isEmpty(address)){showToast("请输入家庭住址");return;}// 使用 SharedPreferences 保存数据SharedPreferences sharedPreferences = getSharedPreferences("student_info", Context.MODE_PRIVATE);SharedPreferences.Editor editor = sharedPreferences.edit();editor.putString("name", name);editor.putString("school_degree", school_degree);editor.putString("age", age);editor.putString("gender", gender);editor.putString("face", face);editor.putString("address", address);editor.apply();showToast("学生信息已保存到 SharedPreferences");}});btn_read_sharedpreferences.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 从 SharedPreferences 中读取学生信息SharedPreferences sharedPreferences = getSharedPreferences("student_info", Context.MODE_PRIVATE);String name = sharedPreferences.getString("name", "");String school_degree = sharedPreferences.getString("school_degree", "");String age = sharedPreferences.getString("age", "");String gender = sharedPreferences.getString("gender", "");String face = sharedPreferences.getString("face", "");String address = sharedPreferences.getString("address", "");// 显示读取的数据,您可以根据需要修改此部分showToast("姓名: " + name + "\n" +"学号: " + school_degree + "\n" +"年龄: " + age + "\n" +"性别: " + gender + "\n" +"政治面貌: " + face + "\n" +"家庭住址: " + address);}});}private void  showToast(String msg){Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();}
}

最后是activity_main.xml 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:orientation="vertical"android:layout_height="match_parent"tools:context=".MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:orientation="horizontal"android:layout_height="60dp"><TextViewandroid:layout_width="0dp"android:text="姓名:"android:gravity="center"android:layout_weight="1"android:layout_height="match_parent"/><EditTextandroid:id="@+id/ed_name"android:layout_width="0dp"android:layout_height="match_parent"android:hint="请输入名字"android:maxLines="1"android:lines="1"android:layout_weight="4"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:orientation="horizontal"android:layout_marginTop="10dp"android:layout_height="60dp"><TextViewandroid:layout_width="0dp"android:text="姓名:"android:gravity="center"android:layout_weight="1"android:layout_height="match_parent"/><EditTextandroid:id="@+id/ed_school_degree"android:layout_width="0dp"android:layout_height="match_parent"android:hint="请输入学号"android:maxLines="1"android:lines="1"android:layout_weight="4"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:orientation="horizontal"android:layout_marginTop="10dp"android:layout_height="60dp"><TextViewandroid:layout_width="0dp"android:text="年龄:"android:gravity="center"android:layout_weight="1"android:layout_height="match_parent"/><EditTextandroid:id="@+id/ed_age"android:layout_width="0dp"android:layout_height="match_parent"android:hint="请输入年龄"android:maxLines="1"android:inputType="number"android:lines="1"android:layout_weight="4"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:orientation="horizontal"android:layout_marginTop="10dp"android:layout_height="60dp"><TextViewandroid:layout_width="0dp"android:text="性别:"android:gravity="center"android:layout_weight="1"android:layout_height="match_parent"/><EditTextandroid:id="@+id/ed_gender"android:layout_width="0dp"android:layout_height="match_parent"android:hint="请输入性别"android:maxLines="1"android:lines="1"android:layout_weight="4"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:orientation="horizontal"android:layout_marginTop="10dp"android:layout_height="60dp"><TextViewandroid:layout_width="0dp"android:text="政治面貌:"android:gravity="center"android:layout_weight="1"android:layout_height="match_parent"/><EditTextandroid:id="@+id/ed_face"android:layout_width="0dp"android:layout_height="match_parent"android:hint="请输入政治面貌"android:maxLines="1"android:lines="1"android:layout_weight="4"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:orientation="horizontal"android:layout_marginTop="10dp"android:layout_height="60dp"><TextViewandroid:layout_width="0dp"android:text="家庭住址:"android:gravity="center"android:layout_weight="1"android:layout_height="match_parent"/><EditTextandroid:id="@+id/ed_address"android:layout_width="0dp"android:layout_height="match_parent"android:hint="请输入家庭住址"android:maxLines="1"android:lines="1"android:layout_weight="4"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:orientation="vertical"android:layout_marginLeft="16dp"android:layout_marginTop="16dp"android:layout_marginRight="16dp"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btn_save_xml"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="保存到xml"/><Buttonandroid:id="@+id/btn_read_xml"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="从xml读取"/><Buttonandroid:id="@+id/btn_save_sharedpreferences"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="保存到SharedPreferences"/><Buttonandroid:id="@+id/btn_read_sharedpreferences"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="从SharedPreferences读取"/></LinearLayout>
</LinearLayout>

效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/630621.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony UI开发-ohos-svg

简介 ohos-svg是一个SVG图片的解析器和渲染器&#xff0c;解析SVG图片并渲染到页面上。它支持大部分 SVG 1.1 规范&#xff0c;包括基本形状、路径、文本、样式和渐变,它能够渲染大多数标准的 SVG 图像。ohos-svg的优点是性能好、内存占用低。 效果展示 SVG图片解析并绘制: …

【网站项目】新生报到系统小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

RIP最短路实验(华为)

思科设备参考&#xff1a;RIP最短路实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是一种基于距离矢量的内部网关协议&#xff0c;工作原理是每个路由器周期性地向邻居路由器发…

C++笔记:类和对象(二)

对象和引用 代码演示&#xff1a; #include<iostream> using namespace std;class A { public :A() default;A(const A&) default; private :};class B { public :B(A &a) : a(a) {} private :A &a; };class C { public :C() default;C(const C &) …

深入解析Apache Hadoop YARN:工作原理与核心组件

什么是YARN&#xff1f; YARN&#xff08;Yet Another Resource Negotiator&#xff09;是Apache Hadoop生态系统中的一个重要组件&#xff0c;用于资源管理和作业调度。它是Hadoop 2.x版本中的一个关键特性&#xff0c;取代了旧版本中的JobTracker和TaskTracker。YARN的设计目…

VUE 弹框内容懒加载-真实项目

背景&#xff1a;VUE 页面&#xff0c;点击按钮&#xff0c;弹框&#xff0c;内容从接口获取&#xff0c;数据量比较大&#xff0c;鼠标滑到页面最底部&#xff0c;调取一次接口&#xff0c;分批加载&#xff1b; demo&#xff1a; <template><div><!-- 触发弹…

如何部署npm私有仓库以及在项目中如何使用

如何部署npm私有仓库以及在项目中如何使用 为什么要部署npm私有仓库&#xff1f; 安全性&#xff1a;私有仓库允许团队存放内部研发的、不宜公开发布的代码包&#xff0c;只对特定用户或者团队可见和可用&#xff0c;从而保护公司的知识产权和商业秘密。模块的复用性&#xf…

HTML5+JavaScript实现本地视频/音频播放器

HTML5JavaScript实现本地视频/音频播放器 HTML5 提供了本地视频和音频播放器的支持&#xff0c;通过 <video> 和 <audio> 标签&#xff0c;这些标签支持多种媒体格式&#xff0c;并且可以通过 JavaScript 进行控制&#xff0c;实现功能比较完整的本地视频音频播放器…

Jenkins机器已经安装了ansible, 运行的时候却报错ansible: command not found

操作系统&#xff1a;MacOS Jenkins log提示 ansible: command not found 直接在Jenkins 机器中&#xff0c;进入一样的目录执行ansible --version OK 原因&#xff1a; Jenkins 默认使用的环境是 /usr/bin, 而我的ansible 安装配置在conda3 下面&#xff0c;所以需要在Jenkin…

Hive进阶

目录 一、MapReduce的计算过程 二、Yarn的资源调度 yarn的资源调度策略 三、Hive的语法树 四、Hive配置优化 五、数据开发 六、数据仓库 七、数据仓库开发流程 八、数仓分层 九、ETL和ELT 一、MapReduce的计算过程 分布式计算框架 需要编写代码执行&#xff0c;执行时…

云原生Kubernetes: K8S 1.29版本 部署Kuboard

目录 一、实验 1.环境 2.K8S 1.29版本 部署Kuboard (第一种方式) 3.K8S 1.29版本 部署Kuboard (第二种方式) 4.K8S 1.29版本 使用Kuboard 二、问题 1.docker如何在node节点间移动镜像 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注ma…

浅写个登录(无js文件)

全部代码如下&#xff0c;无需编写wxss文件&#xff0c;渲染都在style里面&#xff1a; <view style"height: 250rpx;width: 100%;"> <!-- 背景图片 --><view style"position: absolute; background-color: antiquewhite; height: 250rpx;width…