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

推荐阅读
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 本文详细介绍了如何解决MyBatis中常见的BindingException错误,提供了多种排查和修复方法,确保Mapper接口与XML文件的正确配置。 ... [详细]
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社区 版权所有