Android中XML数据的操作

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));

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、绪论 上周工作需要了解项目的一些大体内容,结果在xml解析这一块看的迷迷糊糊的,所以在这里把学习到xm...
    cao健强阅读 9,787评论 1 7
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,783评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,282评论 19 139
  • 散一次步, 看一下你, 等一阵风, 思一片情, 写一句话。 我来了, 你还在渴望。 我走了, 你还在迟疑。
    小剧在成长阅读 1,261评论 0 5
  • 第一天: 早上九点钟报到/ 录指纹/ 出发去工地/(项目梅江会展中心11层电话加网络)
    不二墩子阅读 1,733评论 0 0

友情链接更多精彩内容