Android——获取和输出XML数据文件
来源:互联网 发布:地方台直播软件 编辑:程序博客网 时间:2024/04/30 02:26
XML(ExtentsibleMarkup Language)是一种可扩展标记语言,主要用于存取数据,关于xml和html 的区别可详细查看XML与HTML的区别
本文主要介绍在android中如果获取xml中的内容:
首先在Android studio IDE下为项目创建一个assets文件夹,如果遇到问题请参考android studio 下打开assets的文件
然后在里面创建一个data.xml文件,内容如下:
<language cat="it"> <lan id="1"> <name>c#</name> <ide>Visual Studio</ide> </lan> <lan id="2"> <name>java</name> <ide>eclipse</ide> </lan> <lan id="3"> <name>android</name> <ide>android Studio</ide> </lan></language>
根节点为language,有一个属性cat=“it”
然后下面添加了三个lan结点,里面存了name和ide
接下来回到MainActivity.jav中来读取xml
首先打开data.xml
InputStream in=getResources().getAssets().open("data.xml");//方法返回的是一个输入流,用于读取数据
然后要用到一个类Document类(org.w3c.dom包)
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder=dbf.newDocumentBuilder(); Document document=documentBuilder.parse(in);
接下来对document进行操作读取数据
NodeList nodeList=document.getElementsByTagName("language");//根节点只有一个所以,可以Element root=nodeList.item(0);//获得根节点的属性,加入到textView中tv.append(root.getAttribute("cat").toString()+"\n");//获得根节点的子节点NodeList subNodeList=root.getElementsByTagName("lan");//循环取出数据 for(int i=0;i<subNodeList.getLength();i++){ Element lan= (Element) subNodeList.item(i); tv.append("<lan id=\""+lan.getAttribute("id")+"\">"); Element name= (Element) //获得name标签,并用getTextContent()取得文本lan.getElementsByTagName("name").item(0); tv.append("<name>"+name.getTextContent()+"</name>"+"\n"); Element ide= (Element) lan.getElementsByTagName("ide").item(0); tv.append("<ide>"+ide.getTextContent()+"</ide>"+"\n"); }
运行如图:
然后接着来生成与输出XML
try {//先新建一个空的document Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); //根节点 Element language = document.createElement("language"); language.setAttribute("cat", "it"); //创建子节点 Element lan1 = document.createElement("lan"); lan1.setAttribute("id", "1");//设置属性 Element name1 = document.createElement("name"); Element ide1 = document.createElement("ide"); name1.setTextContent("c#");//设置内容 ide1.setTextContent("visual studio"); lan1.appendChild(name1);//加入到父节点下面 lan1.appendChild(ide1); language.appendChild(lan1); Element lan2 = document.createElement("lan"); lan2.setAttribute("id", "2"); Element name2 = document.createElement("name"); Element ide2 = document.createElement("ide"); name2.setTextContent("c#"); ide2.setTextContent("visual studio"); lan2.appendChild(name2); lan2.appendChild(ide2); language.appendChild(lan2); Element lan3 = document.createElement("lan"); lan3.setAttribute("id", "3"); Element name3 = document.createElement("name"); Element ide3 = document.createElement("ide"); name3.setTextContent("c#"); ide3.setTextContent("visual studio"); lan3.appendChild(name3); lan3.appendChild(ide3); language.appendChild(lan3); //将根节点加入到document document.appendChild(language); //利用Trandform进行转换 TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); transformer.setOutputProperty("encoding", "utf-8");//设置输出参数 StringWriter sw=new StringWriter();//创建一个输出流 transformer.transform(new DOMSource(document),new StreamResult(sw));//参数为源和输出,使用DOMSource(Node)和StreamResult(Writer) tv.append(sw.toString()); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); }
结果如图:
如果要写入到内存卡
File file = Environment.getExternalStorageDirectory(); File data = new File(file, File.separator + "data.xml"); if (!data.exists()) { data.createNewFile(); }transformer.transform(new DOMSource(document), new StreamResult(data));//参数为源和输出,使用DOMSource(Node)和StreamResult(Writer)
请务必要声明权限
0 0
- Android——获取和输出XML数据文件
- Android—(获取并解析xml和Json)
- C++抽象编程——数据文件的各种输出方式
- MySQL导入TxT数据文件和格式化输出
- XML数据文件
- Python处理XMl数据文件和XML数据流(字符串)
- Android 输出XML
- Struts2标签——数据的获取和输出
- 学习笔记—输出XML
- AJAX和SOAP——异步数据和XML获取
- AJAX和SOAP——异步数据和XML获取
- Android使用DOM生成和输出XML格式数据
- Android开发——获取服务器返回的xml文件
- Android开发17——获取网络资源之XML数据
- Android——获取AndroidManifest.xml中的参数
- GAE实现批量上传数据文件(XML和CSV格式)
- CEGUI初学者指南2——装载数据文件和初始化
- 表空间、数据文件和控制文件——oracle概念
- Github学习笔记2- Repository & Issue
- iOS_创建文件夹与删除文件夹
- 稀疏矩阵创建及转置操作
- linux下socket的close和shutdown
- Android之handler介绍
- Android——获取和输出XML数据文件
- React with Webpack - 3: 内联image、font
- First job interview 总结
- hdoj练习题 异或的应用
- 第二章:基于IK的智能分词、细粒度分词、同义词、停用词
- Unity中,如何从代码中生成UI
- 人脸关键点检测中的CLM/RL-Mean-shift/CLNF
- nginx问题汇总
- Xcode 6 LaunchImage 载入界面标准大小