<?xml version="1.0" encoding="utf-8"?> <classes> <group name="一年级" num="10"> <person name="小明" age="7"> <chinese> 语文80 </chinese> <english> 英语89 </english> </person> <person name="小强" age="8"> <chinese> 语文90 </chinese> <english> 英语99 </english> </person> </group> <group name="二年级" num="20"> <person name="小文" age="8"> <chinese> 语文85 </chinese> <english> 英语95 </english> </person> <person name="小中" age="9"> <chinese> 语文80 </chinese> <english> 英语90 </english> </person> </group> </classes>
剖析出来的效果显现如下图:
下面来剖析源代码:
/** * 用dom体式格局 剖析xml 文件 * @param fileName */ private String domXmlParse(String fileName) { String str=""; // xml文档建立工场 DocumentBuilderFactory docFactory = DocumentBuilderFactory .newInstance(); // xml文档建立实例 DocumentBuilder docBuilder; // xml文档 Document doc = null; InputStream inStream = null; try { docBuilder = docFactory.newDocumentBuilder(); // 从assets文件夹下猎取文件 转换成输入流 inStream = this.getResources().getAssets().open(fileName); doc = docBuilder.parse(inStream); // 猎取xml跟元素 Element rootEle = doc.getDocumentElement(); // 二级父元素的list列表 NodeList groupNode = rootEle.getElementsByTagName("group"); // NodeList childNode = rootEle.getElementsByTagName("person"); // 遍历Classe下一切的group for (int i = 0; i < groupNode.getLength(); i++) { Element groupEle = (Element) groupNode.item(i); String groupName = groupEle.getAttribute("name"); String num = groupEle.getAttribute("num"); str =str+"name ="+groupName+" num = "+num+"\n"; Log.e("xml", "name = " + groupName + " num = " + num); // NodeList personNode = groupNode.item(i).getChildNodes(); NodeList personNode = groupEle.getElementsByTagName("person"); // 遍历group下的一切person for (int j = 0; j < personNode.getLength(); j++) { Element personEle = (Element) personNode.item(j); String name = personEle.getAttribute("name"); String age = personEle.getAttribute("age"); str =str+"personName ="+name+" personAge = "+age+"\n"; Log.e("xml", "name = " + name + " age = " + age); Element chineseEle = (Element) personEle .getElementsByTagName("chinese").item(0); Element englistEle = (Element) personEle .getElementsByTagName("english").item(0); String chinese = chineseEle.getFirstChild().getNodeValue(); String english = englistEle.getFirstChild().getNodeValue(); str =str+"chinese = "+chinese+" english = "+english+"\n"; Log.e("xml", "chinese = " + chinese + " english = " + english); } } } catch (ParserConfigurationException e1) { e1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } return str; }
为 XML 文档的已剖析版本定义了一组接口。剖析器读入全部文档,然后构建一个驻留内存的树结构,然后代码就能够运用 DOM 接口来操纵这个树结构。长处:全部文档树在内存中,便于操纵;支撑删除、修正、重新排列等多种功用;瑕玷:将全部文档调入内存(包含无用的节点),浪费时间和空间;运用场所:一旦剖析了文档还需屡次接见这些数据;硬件资本足够(内存、CPU)。
以上就是android dom 剖析xml体式格局 的内容,更多相关内容请关注ki4网(www.ki4.cn)!