1.要解析的XML文件如下:
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet href="student.xsl" type="text/xsl"?>
<StudentInfo>
<student>
<name>达内</name>
<sex>男</sex>
<lesson>
<lessonName>Java初级</lessonName>
<lessonScore>85</lessonScore>
</lesson>
<lesson>
<lessonName>Oracle数据库</lessonName>
<lessonScore>95</lessonScore>
</lesson>
<lesson>
<lessonName>Java中级</lessonName>
<lessonScore>80</lessonScore>
</lesson>
<lesson>
<lessonName>Java高级</lessonName>
<lessonScore>100</lessonScore>
</lesson>
</student>
<breakLine />
<student>
<name>花木兰</name>
<sex>女</sex>
<lesson>
<lessonName>射箭</lessonName>
<lessonScore>100</lessonScore>
</lesson>
<lesson>
<lessonName>柔道</lessonName>
<lessonScore>95</lessonScore>
</lesson>
<lesson>
<lessonName>国学</lessonName>
<lessonScore>80</lessonScore>
</lesson>
<lesson>
<lessonName>烹饪</lessonName>
<lessonScore>60</lessonScore>
</lesson>
<lesson>
<lessonName>游泳</lessonName>
<lessonScore>70</lessonScore>
</lesson>
</student>
<breakLine />
</StudentInfo>
2.对应的java类
package com.yeg.xml;
import java.io.IOException;
import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class TestDOMParser {
public static void main(String[] args) {
TestDOMParser tp = new TestDOMParser();
tp.parseXMLFile("com//yeg//xml//student.xml");
}
/********
*
*利用W3C提供的方法进行解析XML,读XML内容
*
*************/
public void parseXMLFile(String fileName) {
try {
DOMParser parser = new DOMParser();//解析器类
//解析文件名传入
parser.parse(fileName);
//获得Documet,与xml建立对象匹配
Document doc = parser.getDocument();
//获得根节点StudentInfo
Element elmtInfo = doc.getDocumentElement();
//得到所有student节点,节点集合
NodeList nlStudent = elmtInfo.getElementsByTagName("student");
System.out.println("XML文件开始解析");
//循环输出每一个学生成绩
for (int i = 0; i < nlStudent.getLength(); i++) {
//当前student元素
Element elmtStudent = (Element) nlStudent.item(i);
//Name/sex/lesson节点清单
NodeList nlCurrent = elmtStudent.getElementsByTagName("name");
System.out.println("姓名:" +nlCurrent.item(0).getFirstChild().getNodeValue());
nlCurrent = elmtStudent.getElementsByTagName("sex");
System.out.println("性别:" + nlCurrent.item(0).getFirstChild().getNodeValue());
//取得Lesson节点,不是一个,需要循环
nlCurrent = elmtStudent.getElementsByTagName("lesson");
for (int j = 0; j < nlCurrent.getLength(); j++) {
//Lesson这个元素的对应
Element elmtLesson = (Element) nlCurrent.item(j);
NodeList nlLesson = elmtLesson.getElementsByTagName("lessonName");
System.out.print(nlLesson.item(0).getFirstChild().
getNodeValue());
System.out.print(":");
nlLesson = elmtLesson.getElementsByTagName("lessonScore");
System.out.print(nlLesson.item(0).getFirstChild().
getNodeValue());
System.out.println();
}
System.out.println("------------------------------------");
}
System.out.println("XML文件解析结束");
}
catch (IOException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
}