热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用DOM模式将界面内容转换为XML

本文介绍了如何通过修改Android应用的配置文件和编写布局与Activity代码,利用DOM模式将用户输入的数据保存为XML文件。

首先,需要在项目的AndroidManifest.xml文件中添加对外部存储的写入权限,确保应用能够访问并写入外部存储设备。


1 
2
3 4 android:allowBackup="true"
5 android:icon="@drawable/ic_launcher"
6 android:label="@string/app_name"
7 android:theme="@style/AppTheme" >
8 9 android:name="com.example.androidfilestream04.MainActivity"
10 android:label="@string/app_name" >
11
12
13
14

15
16

接下来,设计用户界面,通过TableLayout布局来创建一个简单的表单,包含姓名和邮箱的输入框以及一个提交按钮。


1 2     xmlns:tools="http://schemas.android.com/tools"
3 android:id="@+id/TableLayout1"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent" >
6
7
8
9 10 android:layout_width="wrap_content"
11 android:layout_height="wrap_content"
12 android:text="姓名" />
13
14 15 android:id="@+id/name"
16 android:layout_width="match_parent"
17 android:layout_height="wrap_content" />
18

19
20
21
22 23 android:layout_width="wrap_content"
24 android:layout_height="wrap_content"
25 android:text="邮箱" />
26
27 28 android:id="@+id/email"
29 android:layout_width="match_parent"
30 android:layout_height="wrap_content" />
31

32
33
34
35 36 android:id="@+id/but"
37 android:layout_width="wrap_content"
38 android:layout_height="wrap_content"
39 android:text="提交" />
40

41


最后,在MainActivity中实现逻辑处理,当用户点击提交按钮时,应用会检查外部存储是否可用,并将用户输入的信息以XML格式保存到指定的文件中。


 1 package com.example.androidfilestream04;
2
3 import java.io.File;
4 import java.io.StringWriter;
5 import javax.xml.parsers.DocumentBuilder;
6 import javax.xml.parsers.DocumentBuilderFactory;
7 import javax.xml.parsers.ParserConfigurationException;
8 import javax.xml.transform.OutputKeys;
9 import javax.xml.transform.Result;
10 import javax.xml.transform.Source;
11 import javax.xml.transform.Transformer;
12 import javax.xml.transform.TransformerConfigurationException;
13 import javax.xml.transform.TransformerException;
14 import javax.xml.transform.TransformerFactory;
15 import javax.xml.transform.dom.DOMSource;
16 import javax.xml.transform.stream.StreamResult;
17 import org.w3c.dom.Document;
18 import org.w3c.dom.Element;
19 import android.os.Bundle;
20 import android.os.Environment;
21 import android.app.Activity;
22 import android.view.Menu;
23 import android.view.View;
24 import android.view.View.OnClickListener;
25 import android.widget.Button;
26 import android.widget.EditText;
27
28 public class MainActivity extends Activity {
29 private EditText name;
30 private EditText email;
31 private Button but = null;
32
33 @Override
34 protected void onCreate(Bundle savedInstanceState) {
35 super.onCreate(savedInstanceState);
36 setContentView(R.layout.activity_main);
37 this.name = (EditText) findViewById(R.id.name);
38 this.email = (EditText) findViewById(R.id.email);
39 this.but = (Button) findViewById(R.id.but);
40 this.but.setOnClickListener(new OnClickListenerImpl());
41 }
42
43 private class OnClickListenerImpl implements OnClickListener {
44
45 @Override
46 public void onClick(View v) {
47 if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
48 return;
49 }
50 File file = new File(Environment.getExternalStorageDirectory() + File.separator + "neusoft" + File.separator + "member1.xml");
51 if (!file.getParentFile().exists()) {
52 file.getParentFile().mkdirs();
53 }
54 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
55 DocumentBuilder builder = null;
56 try {
57 builder = factory.newDocumentBuilder();
58 } catch (ParserConfigurationException e) {
59 e.printStackTrace();
60 }
61 Document doc = null;
62 doc = builder.newDocument();
63 Element addresslist = doc.createElement("addresslist");
64 Element linkman = doc.createElement("linkman");
65 Element name = doc.createElement("name");
66 Element email = doc.createElement("email");
67 name.appendChild(doc.createTextNode(MainActivity.this.name.getText().toString()));
68 email.appendChild(doc.createTextNode(MainActivity.this.email.getText().toString()));
69 linkman.appendChild(name);
70 linkman.appendChild(email);
71 addresslist.appendChild(linkman);
72 doc.appendChild(addresslist);
73 TransformerFactory tf = TransformerFactory.newInstance();
74 Transformer t = null;
75 try {
76 t = tf.newTransformer();
77 } catch (TransformerConfigurationException e) {
78 e.printStackTrace();
79 }
80 t.setOutputProperty(OutputKeys.ENCODING, "utf-8");
81 DOMSource source = new DOMSource(doc);
82 StreamResult result = new StreamResult(file);
83 try {
84 t.transform(source, result);
85 } catch (TransformerException e) {
86 e.printStackTrace();
87 }
88 }
89 }
90 }

推荐阅读
  • 使用URLHttpConnection获取并展示图片至ImageView的方法
    本文介绍如何通过URLHttpConnection方式从网络加载图片,并将其显示在Android应用的ImageView组件上。包括布局文件和Java代码的具体实现。 ... [详细]
  • 获取年月日,之前的日期不能选择日历cCalendar.getInstance();获取系统的工具类【可以获取时间】DatePickerDialogdate ... [详细]
  • 本文介绍了如何在Java中使用`JCheckBoxMenuItem.setMnemonic()`方法,并提供了多个实际应用的代码示例。 ... [详细]
  • 这个报错出现在userDao里面,sessionfactory没有注入。解决办法:spring整合Hibernate使用test测试时要把spring.xml和spring-hib ... [详细]
  • 本文探讨了缓存系统中的两个关键问题——缓存穿透与缓存失效时的雪崩效应,以及这些问题的解决方案。此外,文章还介绍了数据处理、数据库拆分策略、缓存优化、拆分策略、应用架构演进及通信协议的选择等内容。 ... [详细]
  • 本文介绍如何创建一个简单的Android桌面小部件,通过显示两个文本框来展示基本功能。提供代码下载链接及详细步骤。 ... [详细]
  • mybatis相关面试题 ... [详细]
  • JobScheduler5.0源码分析
    0.JobScheduler执行代码mJobScheduler(JobScheduler)getSystemService(Context.JOB_SCHEDULER_SERVICE); ... [详细]
  • 本文探讨了在 JavaFX 应用程序中使用 TableView 组件时遇到的滚动条问题,特别是当表格数据变化时,水平滚动条无法自动复位至初始位置的情况。 ... [详细]
  • django项目中使用手机号登录
    本文使用聚合数据的短信接口,需要先获取到申请接口的appkey和模板id项目目录下创建ubtils文件夹,定义返回随机验证码和调取短信接口的函数function.py文件se ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 本文总结了几个常用的Android开发技巧,包括检测设备上是否安装特定应用、获取应用的版本名称、设置状态栏透明以及如何从一个应用跳转至另一个应用的方法。 ... [详细]
  • Android开发经验分享:优化用户体验的关键因素
    随着Android市场的不断扩展,用户对于移动应用的期望也在不断提高。本文探讨了在Android开发中如何优化用户体验,以及为何用户体验的重要性超过了技术本身。 ... [详细]
  • 在将应用的 Android SDK 更新至 Target 29 后,使用 Facebook SDK 5.8.0 的应用程序在 Android 10 设备上出现崩溃。本文探讨了可能的原因及解决方案。 ... [详细]
  • Linux环境下的PHP7安装与配置指南
    本文详细介绍了如何在Linux操作系统中安装和配置PHP7,包括检查当前PHP版本、升级PHP以及配置MySQL支持等步骤,适合后端开发者参考。 ... [详细]
author-avatar
手机用户2502887415
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有