DOM方法读取XML文件
有这样一个XML文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE goods[
<!ELEMENT goods (good+)>
<!ELEMENT good (name,model,inventory)>
<!ATTLIST good id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT model (#PCDATA)>
<!ELEMENT inventory (#PCDATA)>
]>
<goods>
<good id="170001">
<name>李宁运动鞋</name>
<model>01</model>
<inventory>50</inventory>
</good>
<good id="170002">
<name>乔丹运动鞋</name>
<model>002</model>
<inventory>78</inventory>
</good>
<good id="170003">
<name>耐克运动鞋</name>
<model>01</model>
<inventory>510</inventory>
</good>
<good id="170004">
<name>老北京布鞋</name>
<model>00</model>
<inventory>200</inventory>
</good>
</goods>
我们用DOM方法读取这个文件
package com.sxt.lx;
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;
public class Lx1 {
public static void main(String[] args) throws Exception {
// 1.创建解析器工厂对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 2.由解析器工厂对象创建解析器对象
DocumentBuilder db = dbf.newDocumentBuilder();
// 3.由解析器对象对指定XML文档进行解析,构建相应的DOM树,创建Document对象
Document doc = db.parse("Goods.xml");
// 4.以Document对象为起点对DOM树的节点进行增删改查操作。解析DOM树,获取文档内容(元素、属性、文本)
// 4.1获取根元素students
NodeList studentsList = doc.getElementsByTagName("goods");
Node studentNode = studentsList.item(0);
// 4.2获取students中所有子元素(student)
NodeList studentList = studentNode.getChildNodes();
// 4.3遍历student
for (int i = 0; i < studentList.getLength(); i++) {
// 4.3.1获取单个节点
Node stuNode = studentList.item(i);
// 4.3.2
if (stuNode.getNodeType() == Node.ELEMENT_NODE) {
Element se = (Element) stuNode;
String value = se.getAttribute("id");
System.out.println("id=" +value);
// 4.3.3 获取每个学生的name age score
NodeList nl = stuNode.getChildNodes();
for (int j = 0; j < nl.getLength(); j++) {
Node nasNode = nl.item(j);
if (nasNode.getNodeType() == Node.ELEMENT_NODE) {
Element el = (Element) nasNode;
String name = el.getNodeName();
String content = el.getTextContent();
System.out.println(name + ":" + content);
}
}
}
}
}
}
运行结果:
DOM方法需要创建解析器工厂对象再创建解析器对象,指定XML文件,创建 DOM数,再创建Document对象,所以解析起来很麻烦相比较于dom4j方法。
——SpringAndI