源码:

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格式数据的简单使用的更多相关文章

  1. Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

  2. Android使用DOM生成和输出XML格式数据

    Android使用DOM生成和输出XML格式数据 本文主要简单解说怎样使用DOM生成和输出XML数据. 1. 生成和输出XML数据 代码及凝视例如以下: try { DocumentBuilderFa ...

  3. Java中XML格式的字符串4读取方式的简单比较

    Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...

  4. C#操作数据表中XML格式的数据

    以前还真没有见过数据表中存储XML格式的数据,刚开始听说的时候,还以为是数据表中有XML的字段类型, 再了解,其实也就是字符串类型的,只不过字符串的格式是XML格式的.确实孤陋寡闻!汗... (可添加 ...

  5. Android读取JSON格式数据

    Android读取JSON格式数据 1. 何为JSON? JSON,全称为JavaScript Object Notation,意为JavaScript对象表示法. JSON 是轻量级的文本数据交换格 ...

  6. yii2 输出xml格式数据

    作者:白狼 出处:http://www.manks.top/yii2_xml_response.html.html本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文 ...

  7. iOS开发之解析XML格式数据

    XML格式的数据是一种数据的传输格式.因为它方便编写.结构清晰,所以深受程序猿的喜爱,非常多人都喜欢使用XML格式数据传输或者作为程序的配置信息. 如今我将来实如今iOS中解析XML格式数据,语言使用 ...

  8. Android中NDK的搭建及简单使用 Android.mk相关介绍 JNI的使用

    Android中NDK的搭建及简单使用: 使用NDK,简述其重要步骤:.搭建NDK环境(作用:用于自动生成jni下的.c对应的so文件)---到Android NDK官网或Android官网下载ndk ...

  9. R语言XML格式数据导入与处理

    数据解析 XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用的工具.它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强 ...

随机推荐

  1. (一)熟悉执行流程——基于ThinkPHP3.2的内容管理框架OneThink学习

    ThinkPHP作为国内具有代表性的PHP框架,经过多年的发展,受到越来越多公司与开发者的青睐.我也在忙里偷闲中抽出部分时间,来学习这个优秀的框架.在开始学习这个框架时,最好通过实例来学习,更容易结合 ...

  2. Nginx启动SSL功能,并进行功能优化,你看这个就足够了

    一:开始Nginx的SSL模块 1.1 Nginx如果未开启SSL模块,配置Https时提示错误 nginx: [emerg] the "ssl" parameter requir ...

  3. Ajax和JavaScript的区别

    javascript是一种在浏览器端执行的脚本语言,Ajax是一种创建交互式网页应用的开发技术 ,它是利用了一系列相关的技术其中就包括javascript.Javascript是由网景公司开发的一种脚 ...

  4. Delphi ISO 收藏!

    CodeGear RAD Studio 2007 最终版(With Update4) v11.0.2902.10471http://altd.codegear.com/download/radstud ...

  5. Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json & pickle 数据序列化

    一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...

  6. cdev成员结构体file_operations文件操作结构的分析

    struct file_operations{ struct module *owner; // 指向拥有该结构的模块的指针,避免正在操作时被卸载,一般为初始化为THIS_MODULES loff_t ...

  7. IOS开发一些资源收集

    从别的地方看到的,多谢作者,现贴在这里备忘. 在线教程 iOS技术概述    我个人感觉这是开始iOS开发第一步,了解一下iOS整体的结构,有哪些支持类库.如何使用类库等等一切基础的概念性指示 iPh ...

  8. mysql中常用的公式及个人演示

    学生,院系表 -- phpMyAdmin SQL Dump-- version 4.1.9-- http://www.phpmyadmin.net---- Host: localhost-- Gene ...

  9. SSMS 2008R2没有智能感知方法解决

    有时SSMS会莫明奇妙的没有了智能感知(前一天还是有的, 第2天就没有了) 在网上查到有如下原因: 1. 服务器上有Offline的DB 解决方案: 将Offline的DB删掉或者设成online即可 ...

  10. nodejs小问题:express不是内部或外部命令(转载)

    安装express之后发现居然提示express不是内部或外部命令. 工具/原料 Node.js安装包 方法/步骤 1 首先下载Node.js安装包,此处我用的是官方最新的v0.10.27 32位版: ...