美文网首页
Android中XML数据的操作

Android中XML数据的操作

作者: baolvlv | 来源:发表于2017-09-01 15:07 被阅读0次

    XML,即可扩展标记语言(Extensible Markup Language)非常适合万维网传输,提供统一方法来描述和交换独立于应用程序或供应商的结构化数据,在互联网上被广泛使用。

    本文介绍了Android中读取XML数据与在Android中生成XML数据的方法。

    详细代码:github.com/Baolvlv/LearnAndroid/tree/master/TestXML

    1.xml简介

    xml可扩展标记语言,extensible Markup Language

    传输数据而非显示数据,需要自定义标签,为纯文本

    大小写敏感,正确的嵌套,属性值加引号,空格保留,必须有根元素

    2.读取与解析xml数据

    通过getAssets().open()获取assets文件夹下的文件

    //打开assets文件夹中的文件为InputStream

    InputStream is =  getAssets().open("language.xml");

    创建builderFactory

    //创建DocumentBuilderFactory

    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();

    创建builder

    //由builderFactory创建DocumentBuilder

    DocumentBuilder builder = builderFactory.newDocumentBuilder();

    builder转为document

    //将InputStream通过builder转化为document

    Document document = builder.parse(is);

    document通过getDocumentElement获取元素

    //获取文件中的根元素

    Element element = document.getDocumentElement();

    element通过getElementByTagName获取子元素的nodelist

    //获取所有标签名为"lan"的子元素

    NodeList nodeList =  element.getElementsByTagName("lan");

    nodelist通多item(i)获取第i个元素

    //将所有获取到的"lan"标签的nodelist转换为element

    Element lan = (Element) nodeList.item(i);

    元素通过getAttribute()获取属性

    //获取lan的id 属性

    tv.append(lan.getAttribute("id")+"\n");

    // 获取lan标签下第0个name 标签的文本

    tv.append(lan.getElementsByTagName("name").item(0).getTextContent()+"\n");

    //获取lan标签下第0个ide标签的文本内容

    tv.append(lan.getElementsByTagName("ide").item(0).getTextContent()+"\n”);

    Factory->builder->Document. Document获取元素:getDocumentElement

    Element获取元素:getElementByTagName,结果为nodelist

    nodelist获取Element,item(i),element获取属性:getAttribute

    3.生成与输出xml数据

    创建factory与builder,创建document

    //创建factory和builder

    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();

    DocumentBuilder builder = builderFactory.newDocumentBuilder();

    //创建Documnet

    Document newxml = builder.newDocument();

    通过document.createElement()创建标签,setAttribute()为标签创建属性,setTextContent为标签创建文本

    Element lan1 = newxml.createElement("lan");

    lan1.setAttribute("id","1");

    Element name1 = newxml.createElement("name”);

    通过appendChild()为标签添加子标签

    ide1.setTextContent("Eclipse");

    //添加子标签

    lan1.appendChild(name1);

    lan1.appendChild(ide1);

    language.appendChild(lan1);

    通过appendChild()为document添加根标签

    //为Document添加根标签

    newxml.appendChild(language);

    创建TransformerFactory与Transformer,设置输出属性

    //创建factory和transformer

    TransformerFactory factory = TransformerFactory.newInstance();

    Transformer transformer = factory.newTransformer();

    //设置输出属性

    transformer.setOutputProperty("encoding","utf-8”);

    创建StringWriter用于输出,用transformer将source转换为result

    //创建StringWriter用于输出

    StringWriter sw =newStringWriter();

    //transformer将Document转化为结果

    transformer.transform(newDOMSource(newxml),newStreamResult(sw));

    相关文章

      网友评论

          本文标题:Android中XML数据的操作

          本文链接:https://www.haomeiwen.com/subject/evfkjxtx.html