zoukankan      html  css  js  c++  java
  • javaweb dom4j解析xml文档

    1.什么是dom4j

         dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件。

    更多详情》》》》》

    2.如何使用dom4j解析xml文档

    (1)在使用dom4j解析xml文档时,首先要到了dom4j的Jar包。

    在工作目录下新建一个lib文件夹,把dom4j-1.6.1.jar包拷贝到lib文件夹下,选中dom4j-1.6.1.jar然后build Path就加载好jar包了。

    具体操作:代码更直观

    需要解析的xml文件(book.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    
    <书架> 
      <书> 
        <书名>java程序设计</书名>  
        <作者>张三</作者>  
        <售价>309元</售价>  
        <售价>45元</售价>  
        <出版社>南京大学出版社</出版社> 
      </书>  
      <书> 
        <书名>C语言程序设计</书名>  
        <作者>李四</作者>  
        <售价>40元</售价>  
        <出版社>北京大学出版社</出版社> 
      </书> 
    </书架>
    
    package DOM4J;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.OutputStreamWriter;
    import java.util.List;
    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;
    
    public class Dom4jDemo {
    	@Test
    	//用dom4j读取xml文档
    	public void read() throws Exception {
    		//获得DOCUMENT对象
    		SAXReader reader = new SAXReader();
    		//获取需要解析文档的路径
    		Document document = reader.read(new File("src/book.xml"));
    		Element root = document.getRootElement();
    		List list = root.elements("书");
    		String bookname = ((Element) list.get(1)).element("书名").getText();
    		System.out.println(bookname);
    	}
    	@Test
    	//用dom4j添加节点
    	public void add() throws Exception {
    		//获得DOCUMENT对象
    		SAXReader reader = new SAXReader();
    		//获取需要解析文档的路径
    		Document document = reader.read(new File("src/book.xml"));
    		Element root = document.getRootElement();
    		List list = root.elements("书");
    		((Element) list.get(1)).addElement("出版社").setText("北京大学出版社");
    		//更新内存
    //		OutputFormat format=OutputFormat.createCompactFormat();//紧凑xml内容
    		OutputFormat format=OutputFormat.createPrettyPrint();//漂亮xml内容
    		format.setEncoding("UTF-8");
    		
    		XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
    		writer.write(document);
    		writer.close();
    	}
    	
    	@Test
    	//用dom4j在指点位置添加节点
    		public void add1() throws Exception {
    			//获得DOCUMENT对象
    			SAXReader reader = new SAXReader();
    			//获取需要解析文档的路径
    			Document document = reader.read(new File("src/book.xml"));
    			Element root = document.getRootElement().element("书");
    			List<Element> list =root.elements();
    			Element price=DocumentHelper.createElement("售价");
    			price.setText("309元");
    			list.add(2, price);
    			//更新内存
    //			OutputFormat format=OutputFormat.createCompactFormat();//紧凑xml内容
    			OutputFormat format=OutputFormat.createPrettyPrint();//漂亮xml内容
    			format.setEncoding("UTF-8");
    			//使用文件输入流
    			XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
    			writer.write(document);
    			writer.close();
    		}
    	@Test
    	//用dom4j在指点位置添加节点
    		public void delete() throws Exception {
    			//获得DOCUMENT对象
    			SAXReader reader = new SAXReader();
    			//获取需要解析文档的路径
    			Document document = reader.read(new File("src/book.xml"));
    			Element root = document.getRootElement().element("书");
    			List<Element> list =root.elements();
    			for (Element element : list) {
    				System.out.println(element.getName());
    				if(element.getName()=="出版社"){
    					element.getParent().remove(element);
    				}
    			}		
    			//更新内存
    //			OutputFormat format=OutputFormat.createCompactFormat();//紧凑xml内容
    			OutputFormat format=OutputFormat.createPrettyPrint();//漂亮xml内容
    			format.setEncoding("UTF-8");
    			//使用文件输入流
    			XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
    			writer.write(document);
    			writer.close();
    		}
    	
    	@Test
    	//用dom4j更新数据
    		public void update() throws Exception {
    			//获得DOCUMENT对象
    			SAXReader reader = new SAXReader();
    			//获取需要解析文档的路径
    			Document document = reader.read(new File("src/book.xml"));
    			Element root = document.getRootElement().element("书");
    			List<Element> list =root.elements();
    			for (Element element : list) {
    				if(element.getName()=="出版社"){
    					element.setText("南京大学出版社");
    				}
    			}		
    			//更新内存
    //			OutputFormat format=OutputFormat.createCompactFormat();//紧凑xml内容
    			OutputFormat format=OutputFormat.createPrettyPrint();//漂亮xml内容
    			format.setEncoding("UTF-8");
    			//使用文件输入流
    			XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
    			writer.write(document);
    			writer.close();
    		}
    }
    
  • 相关阅读:
    删除Openstack所有组件
    redis + twemproxy 分布式集群与部署
    Nginx 负载均衡动静分离配置
    【读书笔记】sklearn翻译
    【机器学习算法应用和学习_2_理论篇】2.2 聚类_kmeans
    【机器学习算法应用和学习_1_基础篇】1.2 pandas
    【python脚本】提供图片url,批量下载命名图片
    【机器学习算法应用和学习_3_代码API篇】3.2 M_分类_逻辑回归
    【机器学习算法应用和学习_2_理论篇】2.2 M_分类_逻辑回归
    【机器学习算法应用与学习_3_代码API篇】3.8分类模型封装
  • 原文地址:https://www.cnblogs.com/jiangxifanzhouyudu/p/6859980.html
Copyright © 2011-2022 走看看