把界面内容解析成XML(用DOM模式)

第一步,修改AndroidManifest.xml,添加sdcara写入权限

 1 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 2
 3     <application
 4         android:allowBackup="true"
 5         android:icon="@drawable/ic_launcher"
 6         android:label="@string/app_name"
 7         android:theme="@style/AppTheme" >
 8         <activity
 9             android:name="com.example.androidfilestream04.MainActivity"
10             android:label="@string/app_name" >
11             <intent-filter>
12                 <action android:name="android.intent.action.MAIN" />
13
14                 <category android:name="android.intent.category.LAUNCHER" />
15             </intent-filter>
16         </activity>
17     </application>

第二步,写layout,编写界面

 1 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
 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     <TableRow>
 8
 9         <TextView
10             android:layout_width="wrap_content"
11             android:layout_height="wrap_content"
12             android:text="姓名" />
13
14         <EditText
15             android:id="@+id/name"
16             android:layout_width="wrap_content"
17             android:layout_height="wrap_content" />
18     </TableRow>
19
20     <TableRow>
21
22         <TextView
23             android:layout_width="wrap_content"
24             android:layout_height="wrap_content"
25             android:text="邮箱" />
26
27         <EditText
28             android:id="@+id/email"
29             android:layout_width="wrap_content"
30             android:layout_height="wrap_content" />
31     </TableRow>
32
33     <TableRow>
34
35         <Button
36             android:id="@+id/but"
37             android:layout_width="wrap_content"
38             android:layout_height="wrap_content"
39             android:text="提交" />
40     </TableRow>
41
42 </TableLayout>

第三部,编写Activity,进行数据解析

  1 package com.example.androidfilestream04;
  2
  3 import java.io.File;
  4 import java.io.StringWriter;
  5
  6 import javax.xml.parsers.DocumentBuilder;
  7 import javax.xml.parsers.DocumentBuilderFactory;
  8 import javax.xml.parsers.ParserConfigurationException;
  9 import javax.xml.transform.OutputKeys;
 10 import javax.xml.transform.Result;
 11 import javax.xml.transform.Source;
 12 import javax.xml.transform.Transformer;
 13 import javax.xml.transform.TransformerConfigurationException;
 14 import javax.xml.transform.TransformerException;
 15 import javax.xml.transform.TransformerFactory;
 16 import javax.xml.transform.dom.DOMSource;
 17 import javax.xml.transform.stream.StreamResult;
 18
 19 import org.w3c.dom.Document;
 20 import org.w3c.dom.Element;
 21
 22 import android.os.Bundle;
 23 import android.os.Environment;
 24
 25 import android.app.Activity;
 26 import android.view.Menu;
 27 import android.view.View;
 28 import android.view.View.OnClickListener;
 29 import android.widget.Button;
 30 import android.widget.EditText;
 31
 32 public class MainActivity extends Activity {
 33     private EditText name;
 34     private EditText email;
 35     private Button but = null;
 36
 37     @Override
 38     protected void onCreate(Bundle savedInstanceState) {
 39         super.onCreate(savedInstanceState);
 40         setContentView(R.layout.activity_main);
 41         this.name = (EditText) super.findViewById(R.id.name);
 42         this.email = (EditText) super.findViewById(R.id.email);
 43         this.but = (Button) super.findViewById(R.id.but);
 44         this.but.setOnClickListener(new OnClickListenerImpl());
 45     }
 46
 47     private class OnClickListenerImpl implements OnClickListener {
 48
 49         @Override
 50         public void onClick(View v) {
 51             if (!Environment.MEDIA_MOUNTED.equals(Environment
 52                     .getExternalStorageState())) {
 53                 return;
 54             }
 55             // 文件存在地址
 56             File file = new File(Environment.getExternalStorageDirectory()
 57                     + File.separator + "neusoft" + File.separator
 58                     + "member1.xml");
 59             // 判断路径是否不存在,若不存在则创建
 60             if (!file.getParentFile().exists()) {
 61                 file.getParentFile().mkdirs();
 62             }
 63             // 获得dom解析器工厂(工作的作用是用于创建具体的解析器)
 64             DocumentBuilderFactory factory = DocumentBuilderFactory
 65                     .newInstance();
 66             DocumentBuilder builder = null;
 67             try {
 68                 // 获得具体的dom解析器
 69                 builder = factory.newDocumentBuilder();
 70             } catch (ParserConfigurationException e) {
 71                 // TODO Auto-generated catch block
 72                 e.printStackTrace();
 73             }
 74             Document doc = null;
 75             doc = builder.newDocument();// 创建一个新的文档
 76             Element addresslist = doc.createElement("addresslist");
 77             Element linkman = doc.createElement("linkman");
 78             Element name = doc.createElement("name");
 79             Element email = doc.createElement("email");
 80             // 设置标签显示的内容
 81             name.appendChild(doc.createTextNode(MainActivity.this.name
 82                     .getText().toString()));
 83             email.appendChild(doc.createTextNode(MainActivity.this.email
 84                     .getText().toString()));
 85
 86             // 设置标签之间的关系
 87             linkman.appendChild(name);
 88             linkman.appendChild(email);
 89             addresslist.appendChild(linkman);
 90             // 最后放入文档
 91             doc.appendChild(addresslist);
 92
 93             // 取得TransformerFactory实例
 94             TransformerFactory tf = TransformerFactory.newInstance();
 95             Transformer t = null;
 96
 97             try {
 98                 // 从transFactory获取Transformer实例
 99                 t = tf.newTransformer();
100             } catch (TransformerConfigurationException e) {
101                 // TODO Auto-generated catch block
102                 e.printStackTrace();
103             }
104             t.setOutputProperty(OutputKeys.ENCODING, "utf-8");
105             DOMSource source = new DOMSource(doc);// 输出文档
106             StreamResult result = new StreamResult(file);// 指定输出位置
107             try {
108                 t.transform(source, result);// 输出
109             } catch (TransformerException e) {
110                 // TODO Auto-generated catch block
111                 e.printStackTrace();
112             }
113
114         }
115
116     }
117
118 }
时间: 2024-10-12 13:23:51

把界面内容解析成XML(用DOM模式)的相关文章

excel内容转成xml

简单记录下如何将excel中的一个表格内容转成xml格式的文件. excel菜单栏中的"开发工具"下有专门处理xml的模块,如下图. 如果你的excel中看不到"开发工具"栏,请到Excel 选项中的"常用"下将"在功能区显示"开发工具"选项卡"勾选中即可,如下图. 处理Xml模块下有两个功能是导入和导出.默认情况下,你可能会发现导出是灰色的,这是因为从excel导出,需要做一个文件映射,将你要的列映成xm

利用Python将Linux conf配置文件的内容解析成字典格式

Linux下许多配置文件除了ini格式的可以用python的ConfigParser模块外,可以自己编写一段简单的代码将只有"key=value"这样的conf配置文件解析成字典,利用字典的key可以轻松获取key对应的value.python实现起来方法比较简单,只要逐行读取配置文件,将每一个键值对写入字典即可. python代码示例如下: #!/usr/bin/python # encoding: utf-8 # -*- coding: utf8 -*- import re fro

android开发 服务器端访问MySQL数据库,并把数据库中的某张表解析成xml格式输出到浏览器

我们此时只要写一个Servlet就可以了: public class UpdateMenuServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; // 构造方法 public UpdateMenuServlet() { super(); } // 销毁方法 public void destroy() { super.destroy(); } // 响应Get请求 public

xml语法、DTD约束xml、Schema约束xml、DOM解析xml

今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使

jaxp解析XML之DOM解析

XML解析技术XML解析方式分为三种一种是DOM解析一种是SAX解析 DOM思想:将整个xml加载入内存,形成围挡对象,所有对xml操作都是对内存中节点对象进行,DOM是官方xml解析标准,同时支持解析其他各种语言 SAX解析方式的出现,因为DOM的解析方式需要对文档进行加载入内存,当文档较大的时候比较消耗资源,这时候就出现了SAX解析SAX思想:一边解析,一边处理,一边释放资源 在JDK6中又引入了另一种StAX解析方式是一种拉模式的xml解析方式,而SAX是一种推模式XML解析方式推模式由服

2018/1/1 XML和DOM、SAX解析

1.XML (1)描述带关系的数据(软件的配置文件) (2)数据的载体(小型的"数据库")2.语法:标签: 标签名不能以数字开头,中间不能有空格,区分大小写.有且仅有一个根标签.属性: 可有多个属性,但属性值必须用引号(单引号或双引号)包含,但不能省略,也不能单双混用.文档声明: <?xml version="1.0" encoding="utf-8"?> encoding="utf-8": 打开或解析xml文档时

XML之DOM解析文档

TestDom.java package com.sxt.dom; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Do

使用jaxp对比xml进行DOM解析

/*DOM解析编程 •遍历所有节点 •查找某一个节点 •删除结点 •更新结点 •添加节点 /* package cn.itcast.jaxp; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigu

HTML、XML 等 Dom 结点类解析库Jsoup

Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. 特点: HTML.XML.自定义DOM格式文本解析: 可操作HTML元素.属性.文本: 适用于采集解析网站HTML: DOM解析功能强大. 开源库jsoup-1.8.1.jar,基本用法: 1 package com.zhang.jsoupdemo; 2 3 import android.os.Enviro