Document Object Model 文档对象模型,由W3C制定 标准规范 与具体语言无关 随机访问XML文档 重复读
DOM的编程API:
Node:节点
Document :根节点 表示整个文档
NodeList:节点的集合
NamedNodeMap:一般用于存储属性
Element:
编程思路:
1.获得DocumentBuilderFactory的实例
2.通过工厂获得DocumentBuilder的解析器
3.parse(File)======>Document
DOM 创建文档
---------------Create.java---------
import javax.xml.parsers.*;
import java.io.*;
import org.w3c.dom.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
public class Create{
public static void main(String args[])throws Exception{
//1.获得工厂实例
DocumentBuilderFactory f=DocumentBuilderFactory.newInstance();
//2.得到解析器
DocumentBuilder builder=f.newDocumentBuilder();
//3.builder.newDocument();
Document doc=builder.newDocument();
//创建元素
Element root=doc.createElement("emps");
Element emp1=doc.createElement("emp");
Element name1=doc.createElement("name");
name1.setTextContent("etoak");
Element email1=doc.createElement("email");
email1.setTextContent("email1");
Element emp2=doc.createElement("emp");
Element name2=doc.createElement("name");
name2.setTextContent("etoak1");
Element email2=doc.createElement("email");
email2.setTextContent("email1");
//组装 appendChild() Node
doc.appendChild(root);
root.appendChild(emp1);
root.appendChild(emp2);
emp1.appendChild(name1);
emp1.appendChild(email1);
emp2.appendChild(name2);
emp2.appendChild(email2);
//将DOcument实例 持久化到磁盘上
//1.TransformerFactory 实例 newInstance();
TransformerFactory factory=TransformerFactory.newInstance();
//2.factory实例得到 Transformer 实例
Transformer former=factory.newTransformer();
former.setOutputProperty(OutputKeys.INDENT,"yes");
//构造源
DOMSource source=new DOMSource(doc);
//构造结果 类型stream
StreamResult result=new StreamResult(new File("emp.xml"));
former.transform(source,result);
}
}