源码:

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 通过ContentResolver获得联系人数据
  2. Android Afinal框架学习(一) FinalDb 数据库操作
  3. android xml本地数据弹窗多选
  4. android之纵横屏幕切换时保存数据
  5. Android实现简易计算器(页面跳转和数据传输)
  6. android(6)(读数据的一些权限)
  7. android(17)_数据存储与访问_SQLite数据库_修改数据库
  8. Android中模拟器如何访问本地mysql数据库
  9. Android与服务器端数据交互(基于SOAP协议整合android+webservice)

随机推荐

  1. 加载AnimationDrawable 从xml file
  2. Activity切换动画无效(android:windowIsT
  3. android去除Spinner的分割线
  4. Android——拖动条SeekBar
  5. android ScrollView 充满屏幕
  6. android selector的使用
  7. Theme.Holo.Light详解
  8. android中View.measure方法详解
  9. Android(安卓)build/envsetup.sh 脚本分
  10. Android(安卓)SDK下载和更新失败的解决方