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等数据库不同,数据库提供了更强 ...
随机推荐
- phpStudy for Linux (lnmp+lamp一键安装包)
phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Tengine/Lighttpd/IIS7/8/6 phpStudy for Linux 支持Apache/Ng ...
- (三)开始在OJ上添加签到功能
在了解完OJ文件下的各个文件夹的主要作用后,我们开始往里面添加东西(其实只要知道各文件夹是干什么的后,添加东西也变得非常简单了) 一 在数据库中添加对应功能的字段. 我们这个学期才刚开数据库这门课,所 ...
- WordPress 主题开发 - (二) 理解主题 待翻译
What is “Theme Sense”? What is “Theme Sense”? Theme Sense is an intuitive understanding of WordPress ...
- Eclipse导入android包错误
错误提示:Invalid project description… 解决方案:假设你的工作空间是workshop,那么你可以在你的workshop下新建一个文件夹,然后放入你的包,再在Eclipse中 ...
- windows创建桌面快捷方式的VBA脚本
Dim wShell, oShortcut 'Dim strDesktop$ ' 为了与VBS兼容, Dim strDesktop ' 这里改写一下,测试通过... Set w ...
- iOS 进阶 第三天(0326)
0326 Xib:描述软件界面,轻量级,一般用来描述局部界面 Xib的获取,如下图所示: xib在我们开发的时候叫xib,但如果运行在我们手机里会生成nib.所以xib和nib两种方法来访问xib
- JPages分页插件的使用
废话不多说,直接上代码. 首先下载JPages的js和css包,附上下载地址:http://dl.oschina.net/softfile/jpages/jpages-latest-138554713 ...
- Ubuntu 14.04 安装 Xilinx ISE 14.7 全过程
生命在于折腾. 这个帖子作为我安装xilinx ISE 14.7版本一个记录.希望给需要的人一些帮助,这些内容绝大部分也是来源于互联网. 软硬件: lsb_release -a No LSB modu ...
- c# 重载运算符(+-|&)和扩展方法
通常我们需要对class的相加,相减,相乘 等重载以适应需求, 如caml查询的时候,我们可以定义一个caml类,然后来操作这些查询. 首先,我们定义一个class为Test public class ...
- sqlserver convert 日期时间 转换格式化
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49 Select CONVERT(varchar(100), GET ...