zoukankan      html  css  js  c++  java
  • xml解析之使用dom4j的api对xml文件进行CRUD(二)

    在使用dom4j的api对xml文件进行CRUD(一)见博客http://blog.csdn.net/qq_32059827/article/details/51524330的基础上,再对做一次练习。

    package gz.itcast.a_dom4j_write;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.Iterator;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    import org.junit.Test;
    
    /**
     *  课堂练习: 
     * 1.使用dom4j的api来生成以下的xml文件
    <Students>
    <Student id="1">
    	<name>张三</name>
    	<gender>男</gender>
    	<grade>计算机1班</grade>
    	<address>广州天河</address>
    </Student>
    <Student id="2">
    	<name>李四</name>
    	<gender>女</gender>
    	<grade>计算机2班</grade>
    	<address>广州越秀</address>
    </Student>
    </Students>
    
    2.修改id为2的学生的姓名,改为“王丽”
    
    3.删除id为2的学生
     * @author APPle
     *
     */
    public class Demo4 {
    
    	/**
    	 * 1.生成指定xml文档
    	 * @throws Exception
    	 */
    	@Test
    	public void test1() throws Exception{
    		//1.内存创建xml文档
    		Document doc = DocumentHelper.createDocument();
    		
    		//2.写入内容,第一个写入的就是根标签
    		Element rootElem = doc.addElement("Students");
    		
    		//2.1 增加标签
    		Element studentElem1 = rootElem.addElement("Student");
    		//2.2 增加属性
    		studentElem1.addAttribute("id", "1");
    		//2.3 增加标签,【同时】设置文本
    		studentElem1.addElement("name").setText("张三");
    		studentElem1.addElement("gender").setText("男");
    		studentElem1.addElement("grade").setText("计算机1班");
    		studentElem1.addElement("address").setText("广州天河");
    		
    		//2.1 增加标签
    		Element studentElem2 = rootElem.addElement("Student");
    		//2.2 增加属性
    		studentElem2.addAttribute("id", "2");
    		//2.3 增加标签,同时设置文本
    		studentElem2.addElement("name").setText("李四");
    		studentElem2.addElement("gender").setText("女");
    		studentElem2.addElement("grade").setText("计算机2班");
    		studentElem2.addElement("address").setText("广州越秀");
    		
    		
    		//3.只要对doc做了修改,都要做一次写出。内容写出到xml文件
    		//3.1 输出位置
    		FileOutputStream out = new FileOutputStream("d:/student.xml");
    		//3.2 指定格式
    		OutputFormat format = OutputFormat.createPrettyPrint();
    		// 设置编码
    		format.setEncoding("utf-8");
    		XMLWriter writer = new XMLWriter(out,format);
    		//3.3 写出内容
    		writer.write(doc);
    		//3.4关闭资源
    		writer.close();
    		
    	}
    	
    	/**
    	 * 2.修改id为2的学生姓名
    	 * @throws Exception
    	 */
    	@Test
    	public void test2() throws Exception{
    		//1.查询到id为2的学生
    		Document doc = new SAXReader().read(new File("d:/student.xml"));
    		//1.1 找到所有的Student标签
    		Iterator<Element> it = doc.getRootElement().elementIterator("Student");
    		while(it.hasNext()){
    			Element stuElem = it.next();//Student标签
    			//1.2 查询id为id的学生标签
    			if(stuElem.attributeValue("id").equals("2")){
    				stuElem.element("name").setText("王丽");//覆盖式
    				break;
    			}
    		}
    	
    		
    		//3.1 输出位置
    		FileOutputStream out = new FileOutputStream("d:/student.xml");
    		//3.2 指定格式
    		OutputFormat format = OutputFormat.createPrettyPrint();
    		// 设置编码
    		format.setEncoding("utf-8");
    		XMLWriter writer = new XMLWriter(out,format);
    		//3.3 写出内容
    		writer.write(doc);
    		//3.4关闭资源
    		writer.close();
    	}
    	
    	/**
    	 * 3.删除id为2的学生
    	 * @throws Exception
    	 */
    	@Test
    	public void test3() throws Exception{
    		//1.查询到id为2的学生
    		Document doc = new SAXReader().read(new File("e:/student.xml"));
    		//1.1 找到所有的Student标签
    		Iterator<Element> it = doc.getRootElement().elementIterator("Student");
    		while(it.hasNext()){
    			Element stuElem = it.next();
    			//1.2 查询id为id的学生标签
    			if(stuElem.attributeValue("id").equals("2")){
    				//1.3 删除该学生标签
    				stuElem.detach();//自杀式
    				break;
    			}
    		}
    	
    		
    		//3.1 输出位置
    		FileOutputStream out = new FileOutputStream("e:/student.xml");
    		//3.2 指定格式
    		OutputFormat format = OutputFormat.createPrettyPrint();
    		// 设置编码
    		format.setEncoding("utf-8");
    		XMLWriter writer = new XMLWriter(out,format);
    		//3.3 写出内容
    		writer.write(doc);
    		//3.4关闭资源
    		writer.close();
    	}
    }
    


  • 相关阅读:
    Web基础了解版09-Cookie-Session
    Mysql基础04-查询
    Web基础了解版08-JSTL-Core标签库
    Web基础了解版07-EL表达式-运算符-11个隐式对象
    Web基础了解版06-Jsp-指令、标签-九大隐式对象-四个域对象
    Java语法进阶15-反射及API
    Spark原理概述
    Apache Kafka系列(六)客制化Serializer和Deserializer
    Azkaban时区问题导致调度差1天
    impala jdbc驱动执行impala sql的一个坑(不支持多行sql)
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299722.html
Copyright © 2011-2022 走看看