student.xml
<?xml version="1.0" encoding="UTF-8"?>
<StudentInfo>
<student>
<name>张三</name>
<sex>男</sex>
<lession>
<lessionName>Spring开发</lessionName>
<lessionScore>85</lessionScore>
</lession>
<lession>
<lessionName>eAjax开发</lessionName>
<lessionScore>95</lessionScore>
</lession>
<lession>
<lessionName>轻量级j2EE应用开发</lessionName>
<lessionScore>85</lessionScore>
</lession>
</student>
<student>
<name>王晓明</name>
<sex>女</sex>
<lession>
<lessionName>Word快速入门</lessionName>
<lessionScore>66</lessionScore>
<lession>
<lessionName>Excel应用</lessionName>
<lessionScore>90</lessionScore>
</lession>
<lession>
<lessionName>使用OutLock</lessionName>
<lessionScore>85</lessionScore>
</lession>
<lession>
<lessionName>Spring开发</lessionName>
<lessionScore>85</lessionScore>
</lession>
</lession>
</student>
</StudentInfo>
DOMParserTest.java
//注意导入的包,不要导错
import java.io.IOException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import com.sun.org.apache.xerces.internal.parsers.DOMParser;
public class DOMParserTest {
public static void main(String[] args){
DOMParserTest d =new DOMParserTest();
d.parseXMLFile("student.xml");
}
public void parseXMLFile(String fileName){
try{
//构造DOM接线器实例
DOMParser parser=new DOMParser();
try {
//开始解析文档,将XML文件转换为DOM树存入内存
parser.parse(fileName);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//getDocument()获取Document对象
Document doc=parser.getDocument();
//获取root节点
Element elmtInfo=doc.getDocumentElement();
//getElementsByTagName()根据标签名获取子节点的列表
NodeList niStudent=elmtInfo.getElementsByTagName("student");
System.out.println("XML文件解析开始");
System.out.println("---------------------------------------------------");
//循环输出每个学生成绩
for(int i=0;i<niStudent.getLength();i++){
//当前student元素
Element elmtStudent=(Element) niStudent.item(i);
NodeList niCurrent;
//利用父子关系获取子节点
niCurrent=elmtStudent.getElementsByTagName("name");
//读取到姓名节点的值
System.out.println("姓名:"+niCurrent.item(0).getFirstChild().getNodeValue());
//利用父子关系获取子节点
niCurrent=elmtStudent.getElementsByTagName("sex");
//读取到姓别节点的值
System.out.println("性别:"+niCurrent.item(0).getFirstChild().getNodeValue());
//获取多个课程节点
niCurrent=elmtStudent.getElementsByTagName("lession");
for(int j=0;j<niCurrent.getLength();j++){
Element elmtLession=(Element) niCurrent.item(j);
NodeList nlLession;
nlLession=elmtLession.getElementsByTagName("lessionName");
System.out.println("课程名:"+nlLession.item(0).getFirstChild().getNodeValue());
nlLession=elmtLession.getElementsByTagName("lessionScore");
System.out.println("成绩:"+nlLession.item(0).getFirstChild().getNodeValue());
}
System.out.println();
}
System.out.println("---------------------------------------------------");
System.out.println("XML解析结束");
}catch(IOException e){
e.printStackTrace();
}
}
}
解析结果:
XML文件解析开始
---------------------------------------------------
姓名:张三
性别:男
课程名:Spring开发
成绩:85
课程名:eAjax开发
成绩:95
课程名:轻量级j2EE应用开发
成绩:85
姓名:王晓明
性别:女
课程名:Word快速入门
成绩:66
课程名:Excel应用
成绩:90
课程名:使用OutLock
成绩:85
课程名:Spring开发
成绩:85
---------------------------------------------------
XML解析结束