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等数据库不同,数据库提供了更强 ...
随机推荐
- file与 byte[] 互转
byte 转file String filepath="D:\\"+getName(); File file=new File(filepath); ...
- winform 清空界面所有控件已输入的值
rivate void btnClear_Click(object sender, EventArgs e){ ClearCntrValue(this.pnlContent);} 复制代码/// ...
- 第一行代码 Android 第二版到货啦
今日android第一行代码[第二版]已到,收获的季节到了 先看一下封面 书签: 以后就把空闲时间送给它吧 先来看一下本书的目录: 第1章 开始启程--你的第1行Android代码 第2章 先从看得到 ...
- 高德amap 根据坐标获取的地址信息
高德地理逆地理编码接口List<List<Address>> lists = coder.getFromLocation(33.00, 116.500, 3, 3, 3, 50 ...
- 简单方便的在线客服展示插件 jQuery.onServ
onServ jQuery.onServ 是一款简单方便的在线客服jQuery 插件,可以使任意html实现弹出展示在线客服效果, 可以自定义内容,简单配置出多个弹出动作特效,设置位置和样式. git ...
- C# 文件管理类 Directory
今天简单接触了一下C#的文件管理类,对类的大体功能做了简单的了解; 做项目用于判断文件是否存.在创建文件.删除文件较为常用:今天大体总结文件调取功能: public string GetFile() ...
- SQLserver通过链接服务器连接oracle
在SQLserver中一直使用的是DTS抽取数据,但是DTS微软只支持到2008,到了2012后就没有这个工具了,现在需要在SQLserver跟Oracle中间建立一个通道,借助这个通道,将Oracl ...
- Python 学习教程
<Core Python Programming>勘误参考表 http://starship.python.net/crew/wesc/cpp/errata2.htm 笨办法学 Pytho ...
- 驱动makefile
1 ifeq ($(KERNELRELEASE),) 2 CURRENT_PATH=$(shell pwd) 3 #KERNEL_DIR:=/lib/modules/$(shell uname - ...
- iOS 进阶 第十天(0410)
0410 在tableViewCell之间添加一根线,通栏 iOS应用数据存储的常用方式 plist存储文件 plist读取文件 下面是plist存储读取的图解: 注意:plist只能存储常见的属性. ...