热门标签 | 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 }

推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文详细介绍如何在VSCode中配置自定义代码片段,使其具备与IDEA相似的代码生成快捷键功能。通过具体的Java和HTML代码片段示例,展示配置步骤及效果。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • IneedtofocusTextCellsonebyoneviaabuttonclick.ItriedlistView.ScrollTo.我需要通过点击按钮逐个关注Tex ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
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社区 版权所有