一、解析xml文件的dom代码 package com.dom; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; /** * Created by yp-tc-m-2935 on 18/9/29. * dom编码 * 思路:先获取大节点元素,遍历该节点元素,得到每个子节点元素,再次遍历该子节点元素 * 之至到莫节点元素,获取该元素的textcontent值 */ public class dom { public static void main(String [] args) throws ParserConfigurationException, IOException, SAXException { //1 创建JAXPDOM 解析器工厂(没有具体的实现类,需newinstance一个) DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2 根据工厂获取解析器 DocumentBuilder builder = factory.newDocumentBuilder(); //3 使用解析器解析文档得到Document对象 Document document = builder.parse(new File("/Users/yp-tc-m-2935/Documents/mavenProject/servletTest/src/main/java/com/dom/student.xml")); //拿到所有的学生并打印学生信息 //1 获得所有student元素对象 NodeList students = document.getElementsByTagName("student"); //2 遍历这些对象,取得number属性 for(int i=0;i<students.getLength();i++){ // if(students.item(i) instanceof Element){ // Element student =(Element)students.item(i); //是一个一个的student元素 // } if(students.item(i).getNodeType()== Node.ELEMENT_NODE){ //如果是一个student元素 Element student =(Element)students.item(i); String number =student.getAttribute("number"); //3取得子元素,遍历子元素 NodeList list = student.getChildNodes(); for(int x=0;x<list.getLength();x++){ if(list.item(x).getNodeType() == Node.ELEMENT_NODE){ //获取的可能是name age sex Element info = (Element)list.item(x); if(info.getNodeName().equals("name")){ System.out.print(info.getTextContent()+","); //获取name的文本值 }else if(info.getNodeName().equals("sex")){ System.out.print(info.getTextContent()+","); }else if(info.getNodeName().equals("age")){ System.out.println(info.getTextContent()); } } } } } } }
2、xml文件内容
<?xml version="1.0" encoding="UTF-8"?> <students> <student number="IDTEST01"> <name>tom</name> <sex>男</sex> <age>10</age> </student> <student number="IDTEST02"> <name>Jennery</name> <sex>女</sex> <age>10</age> </student> </students>