First create an xml file yourself: DomTest.xml
<?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>
The parsed result is shown as follows:
Let’s analyze the source code:
/** * 用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; }
Defines a set of interfaces for the parsed version of an XML document. The parser reads in the entire document and builds a memory-resident tree structure that code can then manipulate using the DOM interface. Advantages: The entire document tree is in memory, easy to operate; supports multiple functions such as deletion, modification, and rearrangement; Disadvantages: Transferring the entire document into memory (including useless nodes) wastes time and space; Usage occasions: Once parsed Documents also need to access this data multiple times; hardware resources are sufficient (memory, CPU).
The above is the content of android dom parsing xml. For more related content, please pay attention to the PHP Chinese website (m.sbmmt.com)!