源码:

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文件:

更多相关文章

  1. org.gradle.api.GradleException: Lint found fatal errors whil
  2. android操作通讯录的联系人
  3. viewPager的简单实现
  4. Android中SQLite增删改查的方法(Android开发视频讲座)
  5. 如何避免输入法弹出时遮挡住按钮或输入框
  6. 【Android】使RecyclerView 支持setEmptyView
  7. android 通过ContentResolver获得联系人数据
  8. Android拍照上传代码样例
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. android 横竖屏切换生命周期详解
  2. android安全:Android对开机自启动的限制
  3. NDK使用log的问题
  4. Android(安卓)开发TCP、UdP客户端
  5. 导航标签使用
  6. audio的输出设备切换分析
  7. okhttp3的基本使用
  8. android webview 加载本地文件
  9. Android(安卓)unZip
  10. Android个推使用