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等数据库不同,数据库提供了更强 ...
随机推荐
- LitJSON使用
地址:http://lbv.github.io/litjson/docs/quickstart.html LitJSON Quickstart Guide Introduction Quick Sta ...
- Repeat Header / Keep Header Visible in Tables in RS 2008
You selected "Repeat header rows on each page" or "Keep header rows visible while scr ...
- SVM入门
前言: 又有很长的一段时间没有更新博客了,距离上次更新已经有两个月的时间了.其中一个很大的原因是,不知道写什么好-_-,最近一段时间看了看关于SVM(Support Vector Machine)的文 ...
- Redis 三:存储类型之字符串
.赋值单个: [赋值多个:mset a b c ] .取值单个: get a [取值多个:mget a b c] .数字递增 incr a 在a的基础上+,那就是返回101 如果预先的值为0,那么返回 ...
- 在iOS App的图标上显示版本信息
最近读到一篇文章(http://www.merowing.info/2013/03/overlaying-application-version-on-top-of-your-icon/)介绍了一种非 ...
- iOS多线程GCD 研究
Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法. dispatch queue分成以下三种: 1)运行在主线程的Main queue,通过dispat ...
- (ACM)C++ STL 训练(第一天)
因为老师说ACM考的是纯C++,所以打算抛弃VS的VC++不用了,针对纯C++的编译器有Intel Compiler(不过要钱),MinGw(个人用的),当然还有微软的VC++ 编译器,IDE你们可以 ...
- ActiveMQ使用记录
1.在Linux中安装ActiveMQ 官方文档地址:http://activemq.apache.org/getting-started.html#GettingStarted-StartingAc ...
- [System.Net]模拟Web请求编写简易单词查询客户端
demo: 我就不上传了 前言 在实际生活中,网络请求的应用极其常见,比如使用浏览器,程序中我们还要调用webservice.那么浏览器是怎么请求网络资源的呢?不用它可以自己请求不? 答案是可以的. ...
- ASP.Net MVC4 登录
一月之前,工作室师兄给我们介绍博客,然后试着去申请了一个,一直不晓得更新什么,直到今天,才有了一点小想法.最近在做一个小网站,然后就在登录那一块犯愁了,止步不前. 以前对登录一直没有什么概念,以为登录 ...