package lzh.xml.cn;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Xmltest3 {
public static void main(String[] args) throws Exception {
// step1: 获得Dom解析工厂实例
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
// step2: 获得Dom解析器
DocumentBuilder dbuilder = dbfactory.newDocumentBuilder();
// step3: 获取要解析的文件,缓存到内存中
Document document = dbuilder.parse("books.xml");
// UpdateXml(document);
// DeleteXml(document);
CreateXml(document);
SaveXml(document);
}
private static void DeleteXml(Document document) {
// 删除 id=b001节点
NodeList bookList = document.getElementsByTagName("book");
for (int n = 0; n < bookList.getLength(); n++) {
// 获得每一本书
Node bookNode = bookList.item(n);
// 获得id
Element bookElement = (Element) bookNode;
String id = bookElement.getAttribute("id");
// 判断id == b001
if ("b001".equals(id)) {
// 删除bookElement 当前节点,调用父节点,进行操作
// 获得父节点
Node parent = bookElement.getParentNode();
// 操作
parent.removeChild(bookElement);
}
}
}
private static void CreateXml(Document document) {
// 将document的内容修改,添加
// 添加
//获取root根节点
Element rootElement = document.getDocumentElement();
//创建book元素
Element newBook = document.createElement("book");
//设置id属性
newBook.setAttribute("id", "b003");
//创建子节点
Element titleNode = document.createElement("title");
Element priceNode = document.createElement("price");
titleNode.setTextContent("测试添加");
priceNode.setTextContent("99");
newBook.appendChild(titleNode);
newBook.appendChild(priceNode);
//将元素添加到
rootElement.appendChild(newBook);
}
private static void UpdateXml(Document document) {
// 将document的内容修改,添加、删除、修改
// 修改 <title>Java 核心技术</title> --》 Java123
NodeList bookList = document.getElementsByTagName("book");
for (int n = 0; n < bookList.getLength(); n++) {
// 获得每一本书
Node bookNode = bookList.item(n);
// 获得id
Element bookElement = (Element) bookNode;
String id = bookElement.getAttribute("id");
// 判断id == b001
if ("b001".equals(id)) {
// 获得所有子节点
NodeList childList = bookElement.getElementsByTagName("title");
Node title = childList.item(0);
// 设置更新值
title.setTextContent("Java123");
}
}
}
private static void SaveXml(Document document) throws Exception {
// 将内存中的document,另存为books.jasp.xml,持久化,写操作
// 获得持久化工厂实例
TransformerFactory tfactory = TransformerFactory.newInstance();
// 获得持久化对象
Transformer transformer = tfactory.newTransformer();
// 源: document,将document封装到Source
Source xmlSource = new DOMSource(document);
// 目标: books.jasp.xml
Result outputTarget = new StreamResult("books.jasp.xml");
transformer.transform(xmlSource, outputTarget);
System.out.println("写完成!!!dome!!!");
}
}