Android中XML格式数据的简单使用
源码:
package com.wangzhu.demo; import java.io.IOException;
import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; import android.content.Context; /**
* XML,即可扩展标记语言(Extensible Markup Language),<br/>
* 标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。<br/>
* 它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。<br/>
* 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的机构化数据。<br/>
*
* 特点:<br/>
* XML是一种标记语言,很类似HTML<br/>
* XML的设计宗旨是传输数据,而非显示数据<br/>
* XML标签没有被预定义,您需要自行定义标签<br/>
* XML被设计为具有自我描述性<br/>
* XML是W3C的推荐标准<br/>
*
* 与HTML对比:<br/>
* XML不是HTML的替代。<br/>
* XML和HTML为不同的目的而设计:<br/>
* XML被设计为传输和存储数据,其焦点是数据的内容。<br/>
* HTML被设计用来显示数据,其焦点是数据的外观。<br/>
* HTML旨在显示信息,而XML旨在传输信息。<br/>
*
* XML的语法规则:<br/>
* 在XML中,省略关闭标签是非法的,所有元素都必须有关闭标签。<br/>
* XML标签对大小写敏感<br/>
* XML必须正确地嵌套<br/>
* XML文档必须有根元素<br/>
* XML的属性值须加引号<br/>
* XML中空格会被保留<br/>
*
* 使用Android平台自带的API加载XML数据,并且按照XML的结构将所有数据解析出来<br/>
*
* 使用Android平台自带的API创建符合XML规范的数据,并且将XML数据输出。<br/>
*
* @author wangzhu
* @date 2014年11月15日 下午11:38:10
*/
public class XMLUtils {
private Context context; public XMLUtils(Context context) {
this.context = context;
} /**
* 读取XML文件
*/
public void readXML() {
StringBuilder accum = new StringBuilder();
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(context.getAssets().open(
"languages.xml"));
// 获取Languages标签
Element element = document.getDocumentElement();
accum.append("cat=").append(element.getAttribute("cat"))
.append(",");
NodeList list = element.getElementsByTagName("lan");
for (int i = 0; i < list.getLength(); i++) {
// 获取每个lan标签
Element lan = (Element) list.item(i);
accum.append("id=").append(lan.getAttribute("id")).append(",");
accum.append("ide=")
.append(lan.getElementsByTagName("ide").item(0)
.getTextContent()).append(",");
accum.append("name=")
.append(lan.getElementsByTagName("name").item(0)
.getTextContent()).append(";");
}
System.err.println("readXml: " + accum);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 创建XML文件
*/
public void createXML() {
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
// 创建文档对象
Document document = builder.newDocument(); // 创建根元素
Element languages = document.createElement("Languages");
languages.setAttribute("cat", "it"); // 使用文档对象创建第一个子元素
Element lan1 = document.createElement("lan");
lan1.setAttribute("id", "1");
Element name1 = document.createElement("name");
name1.setTextContent("Java");
// 添加子元素
lan1.appendChild(name1);
Element ide1 = document.createElement("ide");
ide1.setTextContent("Eclipse");
// 添加子元素
lan1.appendChild(ide1);
// 添加到根元素中
languages.appendChild(lan1); // 使用文档对象创建第一个子元素
Element lan2 = document.createElement("lan");
lan2.setAttribute("id", "2");
Element name2 = document.createElement("name");
name2.setTextContent("Swift");
// 添加子元素
lan2.appendChild(name2);
Element ide2 = document.createElement("ide");
ide2.setTextContent("Xcode");
// 添加子元素
lan2.appendChild(ide2);
// 添加到根元素中
languages.appendChild(lan2); // 使用文档对象创建第一个子元素
Element lan3 = document.createElement("lan");
lan3.setAttribute("id", "3");
Element name3 = document.createElement("name");
name3.setTextContent("C#");
// 添加子元素
lan3.appendChild(name3);
Element ide3 = document.createElement("ide");
ide3.setTextContent("Visual Studio");
// 添加子元素
lan3.appendChild(ide3);
// 添加到根元素中
languages.appendChild(lan3); // 将languages作为根元素添加到文档中
document.appendChild(languages); // 转化
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
StringWriter sw = new StringWriter();
transformer
.transform(new DOMSource(document), new StreamResult(sw));
System.err.println("createXML: " + sw.toString());
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
} }
截图:
Xml文件:

Android中XML格式数据的简单使用的更多相关文章
- Android中解析XML格式数据的方法
XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...
- Android使用DOM生成和输出XML格式数据
Android使用DOM生成和输出XML格式数据 本文主要简单解说怎样使用DOM生成和输出XML数据. 1. 生成和输出XML数据 代码及凝视例如以下: try { DocumentBuilderFa ...
- Java中XML格式的字符串4读取方式的简单比较
Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...
- C#操作数据表中XML格式的数据
以前还真没有见过数据表中存储XML格式的数据,刚开始听说的时候,还以为是数据表中有XML的字段类型, 再了解,其实也就是字符串类型的,只不过字符串的格式是XML格式的.确实孤陋寡闻!汗... (可添加 ...
- Android读取JSON格式数据
Android读取JSON格式数据 1. 何为JSON? JSON,全称为JavaScript Object Notation,意为JavaScript对象表示法. JSON 是轻量级的文本数据交换格 ...
- yii2 输出xml格式数据
作者:白狼 出处:http://www.manks.top/yii2_xml_response.html.html本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文 ...
- iOS开发之解析XML格式数据
XML格式的数据是一种数据的传输格式.因为它方便编写.结构清晰,所以深受程序猿的喜爱,非常多人都喜欢使用XML格式数据传输或者作为程序的配置信息. 如今我将来实如今iOS中解析XML格式数据,语言使用 ...
- Android中NDK的搭建及简单使用 Android.mk相关介绍 JNI的使用
Android中NDK的搭建及简单使用: 使用NDK,简述其重要步骤:.搭建NDK环境(作用:用于自动生成jni下的.c对应的so文件)---到Android NDK官网或Android官网下载ndk ...
- R语言XML格式数据导入与处理
数据解析 XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用的工具.它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强 ...
随机推荐
- Winform合并多个Excel文件到一个文件中(源文件.xls,实际是.xml)
1.下面两个文件.xls是给的文件,实际上是.xml文件 2.具体的代码 private void btOK_Click(object sender, EventArgs e) { //0.获取路径文 ...
- 了解jsonp
<script> //创建全局函数,用来处理 跨域 获取到的信息: function name(data){ .... ...
- win2008r2 iis7.5 mvc 403.14
痛苦的经历,网上各种办法尝试,不成功 环境如标题:发布403.14 错误 解决办法:很简单,发布时,不要使用预编译(发布期间预编译选项 不能选中) 之后就好了...折磨人的小妖精
- 使用socket.io搭建聊天室
最近在学习nodejs,需要找一些项目练练手.找来找去发现了一个聊天室的教程,足够简单,也能从中学到一些东西.下面记录我练习过程中待一些笔记. nodeJS模块 共用到了2个模块,express和so ...
- python autopy
今天学习了python autopy 主要包括alert,color,mouse,key,bitmap,screen等的操作 文档在http://www.autopy.org/documentatio ...
- Linux环境下GIT初次使用
Git是一个功能强大的分布式版本控制系统,最初用来作Linux内核代码管理的. 第一次接触到github是关于一个报道:在2013年1月15日晚间,全球最大的社交编程及代码托管网站GitHub突然疑似 ...
- vim使用手册
1. 关于Vim 1.1 Vim的几种模式 2. 启动Vim 3. 文档操作 4. 光标的移动 4.1 基本移动 4.2 翻屏 4.3 标记 5. 插入文本 5.1 基本插入 5.2 改写插入 6. ...
- Java程序员使用的20几个大数据工具
最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具. 这是一个系列,主题为: 语言 web框架 应用服务器 SQL数据访问工具 SQL数据库 大数据 构建工具 云提供商 今天我 ...
- 指向const的指针和const指针
1.指向const的指针:const int *p 或 int const *p 解释:p是一个指针,指向const int类型的常量:指针指向的内容为常量,因此不能改变*p的值,但指针p可以改变,指 ...
- UML 小结(5)- 图解 Rational Rose 的详细安装过程
在学习UML的时候,会用到画图工具:Rotional Rose . 原以为这款软件直接下载下来或者跟朋友那边拷过来就可以直接用了,结果却是没有那么简单,如果读者您也是为了解决这个家伙的安装问题的话,那 ...