import java.io.FileInputStream;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* 演示使用DOM技术如何解析指定XML
*
* @version 1.0
*
*
*/
public class DOMParseXML {
public static void main(String[] args) {
// 通过DocumentBuilderFactory抽象类的工厂方法newInstance()创建DOM解析器的工厂实例
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
// 通过DocumentBuilderFactory实例的静态方法newDocument()得到DOM解析器
DocumentBuilder buider = factory.newDocumentBuilder();
// 把需要解析的XML文档转化为输入流,以便DOM解析器能够进行解析
InputStream is = new FileInputStream("E://examGrade.xml");
// 解析XML文档的输入流,得到一个Document
Document doc = buider.parse(is);
// 通过Document得到XMl文档的根节点
Element root = doc.getDocumentElement();
// DOM技术采用NodeList存放Node的所有子节点,所以我们可以使用循环的方式得到节点下的所有子节点
NodeList exams = root.getChildNodes();
if (exams != null) {
System.out.println("解析结果为:\n");
System.out.println("\t 课程\t学生姓名\t 成绩");
// 使用DOM技术解析XMl文档-遍历子节点
System.out.println(exams.getLength()+"\t");
for (int i = 0; i < exams.getLength(); i++) {
Node exam = exams.item(i);
if (exam.getNodeType() == Node.ELEMENT_NODE) {
String courseName = exam.getNodeName();
// 输出课程名
//记得转义字符"/n"也算字节点
System.out.print(courseName + "\t");
for (Node node = exam.getFirstChild(); node != null; node = node
.getNextSibling()) {
if (node.getNodeType() == Node.ELEMENT_NODE) {
if (node.getNodeName().equals("examineeName")) {
String stuName = node.getFirstChild()
.getNodeValue();
// 输出学生姓名
System.out.print(stuName + "\t");
}
if (node.getNodeName().equals("grade")) {
String grade = node.getFirstChild()
.getNodeValue();
// 输出学生成绩
System.out.println(grade + "\t");
}
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* 演示使用DOM技术如何解析指定XML
*
* @version 1.0
*
*
*/
public class DOMParseXML {
public static void main(String[] args) {
// 通过DocumentBuilderFactory抽象类的工厂方法newInstance()创建DOM解析器的工厂实例
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
// 通过DocumentBuilderFactory实例的静态方法newDocument()得到DOM解析器
DocumentBuilder buider = factory.newDocumentBuilder();
// 把需要解析的XML文档转化为输入流,以便DOM解析器能够进行解析
InputStream is = new FileInputStream("E://examGrade.xml");
// 解析XML文档的输入流,得到一个Document
Document doc = buider.parse(is);
// 通过Document得到XMl文档的根节点
Element root = doc.getDocumentElement();
// DOM技术采用NodeList存放Node的所有子节点,所以我们可以使用循环的方式得到节点下的所有子节点
NodeList exams = root.getChildNodes();
if (exams != null) {
System.out.println("解析结果为:\n");
System.out.println("\t 课程\t学生姓名\t 成绩");
// 使用DOM技术解析XMl文档-遍历子节点
System.out.println(exams.getLength()+"\t");
for (int i = 0; i < exams.getLength(); i++) {
Node exam = exams.item(i);
if (exam.getNodeType() == Node.ELEMENT_NODE) {
String courseName = exam.getNodeName();
// 输出课程名
//记得转义字符"/n"也算字节点
System.out.print(courseName + "\t");
for (Node node = exam.getFirstChild(); node != null; node = node
.getNextSibling()) {
if (node.getNodeType() == Node.ELEMENT_NODE) {
if (node.getNodeName().equals("examineeName")) {
String stuName = node.getFirstChild()
.getNodeValue();
// 输出学生姓名
System.out.print(stuName + "\t");
}
if (node.getNodeName().equals("grade")) {
String grade = node.getFirstChild()
.getNodeValue();
// 输出学生成绩
System.out.println(grade + "\t");
}
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}