目录
一、DOM定义
DOM:Document Object Model,文档对象模型,DOM解析方式把整个文档看成是一个倒挂的树形结构来进行解析。有助于更好的理解、且代码容易编写。解析过程中,树结构保存在内存中,方便修改。主要使用的包是java的org.w3c.dom包。
二、DOM代码实现
1、注意:我们应当认识到,DOM一切皆节点。
2、XML文件代码
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- 全部是节点,而非键值对k-v -->
<department>
<student id="110">
<name>小丑</name>
<age>100</age>
</student>
<student id="220">
<name>卡牌</name>
<age>15</age>
</student>
<student id="110">
<name>德玛西亚</name>
<age>60</age>
</student>
<student id="220">
<name>卡特</name>
<age>20</age>
</student>
</department>
3、DOM解析XML的过程
1.通过单例模式获取document解析工厂对象
2.通过文档解析工厂对象 去获取解析对象
3.通过文档解析器获取文档对象
代码实现:
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;//导包要注意一定要导org.w3c.dom相关的
import org.xml.sax.SAXException;
public class XMLTests {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//创建一个DocumentBuilderFactory的对象
DocumentBuilder builder = factory.newDocumentBuilder();//创建一个DocumentBuilder对象
Document doc = builder.parse("D:\\Program Files\\Java\\JavaStudent\\Xmls\\src\\com\\DJX\\xmlparse\\department.xml");
//需要解析XML文件的地址(注意文件名称中不能存在中文否则会报错)
}
}
4.获取根节点、student节点、name节点
代码实现:
Element root = doc.getDocumentElement();//获取根节点
Node student = root.getFirstChild().getNextSibling();// 获取student节点
Node name = student.getFirstChild().getNextSibling();// 获取name的节点
Node age = name.getNextSibling().getNextSibling();//获取age的节点
System.out.println("节点的名称:"+name.getNodeName()+"节点的文本:"+name.getTextContent());
//getFirstChild()是获取第一个子节点
//getNextSibling()是获取兄弟节点
注意:root节点与student节点之间的空格也是一个节点,所以根节点的第一个子节点应该是空格,空格的兄弟节点才是student。