먼저 xml 파일을 직접 생성하세요: 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>
파싱된 결과는 다음과 같습니다:
소스 코드를 분석해 보겠습니다.
/** * 用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 parsing xml 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!