android xml网络传输数据,Android中XML数据的操作

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值