jaxp dom 的 update/delete /save

package cn.ouc.xml.dom;

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 CUDTest {
	public static void main(String[] args) throws Exception{
		
		//将内存中的document,另存到books.jasp.xml文件中
		Document document = CUDTest.getDocument();
		
		//将document的内容修改:添加、删除、修改
		
		//添加
		/* 添加的内容
		 * <book id="b002">
				<title>Thinking in Java</title>
			 	<price>22000</price>
			</book>
		 * 给谁添加:根元素 books
		 */
		
		//获得books根元素
		Element rootElement = document.getDocumentElement();
		
		//创建book元素
		Element  newBook = document.createElement("book");
		//设置id属性
		newBook.setAttribute("id", "b003");
		
		//创建title元素
		Element titleElement = document.createElement("title");
		//将title元素,添加到新book元素中
		newBook.appendChild(titleElement);
		//给title添加值
		titleElement.setTextContent("凤姐写真");
		
		//将book元素添加到books根元素中
		
		rootElement.appendChild(newBook);
		//保存
		saveXml(document);
	}
	
	private void delete() throws Exception{
//将内存中的document,另存到books.jasp.xml文件中
		
		Document document = CUDTest.getDocument();
		
		
		//将document的内容修改:添加、删除、修改
		
		//删除   <book 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");
			//判断book id == b001
			if("b001".equals(id)){
				//删除 bookElement  当前节点,调用父节点,进行操作
				//获得父节点
				Node parent = bookElement.getParentNode();
				//操作
				parent.removeChild(bookElement);
			}
			
		}
		//保存
		saveXml(document);
	}
	private void update() throws Exception{
		//将内存中的document,另存到books.jasp.xml文件中
		
		Document document = CUDTest.getDocument();
		//将document的内容修改:添加、删除、修改
		//修改   <book id="b001"><title>Java 核心技术</title>   --》 Java Core
		//获得所有的书籍
		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");
			//判断book id == b001
			if("b001".equals(id)){
				//获得所有的title
				NodeList childList = bookElement.getElementsByTagName("title");
				//获得唯一一个title
				Node title = childList.item(0);
				//获得title
				System.out.println(title.getTextContent());
				//设置值
				title.setTextContent("Java Core");
			}
		}
		//保存
		saveXml(document);
	}

	private static void saveXml(Document document) throws Exception {
		//获得持久化对象实例工厂
		TransformerFactory factory = TransformerFactory.newInstance();
		//获得持久化对象
		Transformer transformer = factory.newTransformer();
		//将内存数据,保存到硬盘
		
		//源:document  将document封装到Source
		Source xmlSource = new DOMSource(document);
		//结果:books.jasp.xml  将“文件路径”封装到Result
		Result outputTarget = new StreamResult("books.jasp.xml");
		transformer.transform(xmlSource, outputTarget);
		
		System.out.println("done");
	}
	
	/**
	 * 获得document对象
	 * @return
	 */
	public static Document getDocument() throws Exception{
		//获得工厂实例
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//获得解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		//获得document
		Document document = builder.parse("books.xml");
		return document;
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值