用Dom4j来解析XML文件

Dom4j jar包地址:https://pan.baidu.com/s/1eNExExlFHIecfW_6YkXpvw 提取码:w5om

首先解压Dom4j jar包,解压后如下
在这里插入图片描述
然后把 dom4j-1.6.1.jar 复制放到工程目录下(集成开发工具是myeclipse)
在myeclipse工程下直接右键dom4j-1.6.1.jar,点击Build Path → Add to Build Path
myeclipse自动导入jar包,然后就可以使用jar包提供的接口了。
我们创建一个book.xml文件放到src目录下
在这里插入图片描述

book.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<书架> 
  <> 
    <书名>时间简史</书名> 
    <作者>霍金</作者> 
    <售价>60</售价> 
  </> 
  <> 
         <书名>广义相对论</书名> 
    <作者>爱因斯坦</作者> 
    <售价>65</售价> 
  </> 
</书架>

Dom4j_parseXML.java编写解析代码

需要导入的包:

import java.io.FileOutputStream;
import java.util.List;


import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

注意:除了FileOutputStream和List不是dom4j包的,其他的都是

创建解析器

//创建dom4j解析器
SAXReader reader = new SAXReader();
//加载document对象
Document document = reader.read("src/book.xml");

得到某个节点的内容

//拿到根节点
Element root = document.getRootElement();
//拿到所有的书节点
List<Element> list = root.elements("书");
//拿到第二本书
Element bookE1 = list.get(1);
//获取售价文本
System.out.println(bookE1.elementText("售价"));

遍历所有元素节点

public static void ergodic(Document document) {
  treeWalk( document.getRootElement() );
}

public static void treeWalk(Element element) {
  for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
    Node node = element.node(i);
    if ( node instanceof Element ) {
      System.out.println(node.getName());
      treeWalk( (Element) node );
    } 
  }
}

修改某个元素节点的主体内容

//获取根节点
Element root = document.getRootElement();
//拿到第二种书节点
Element bookEL = (Element) root.elements("书").get(1);
//拿到售价节点
Element priceE1 = bookEL.element("售价");
//改变主体内容
priceE1.setText("55");

//将结果保存到硬盘上

XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();

向指定元素节点中添加子元素节点

  //获取根节点
    Element root = document.getRootElement();
    //拿到第一种书节点
    Element bookEL = (Element) root.elements("书").get(0);
    //拿到售价节点
    Element priceE1 = bookEL.element("售价");
    
    //添加子节点
    priceE1.addElement("内部价").setText("50");
    
    //将结果保存到硬盘上
    
    XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
    writer.write(document);
    writer.close();

向指定元素节点上增加同级元素节点

   //获取根节点
    Element root = document.getRootElement();
    //拿到第一种书节点
    Element bookEL = (Element) root.elements("书").get(0);
    
    //给书节点添加子节点
    bookEL.addElement("批发价").setText("30");
    
    //将结果保存到硬盘上
    
    XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
    writer.write(document);
    writer.close();

删除指定的元素节点

  Element root = document.getRootElement();
    Element bookEL = (Element) root.elements("书").get(0);
    Element insideprice = bookEL.element("售价").element("内部价");
    //删除
    insideprice.getParent().remove(insideprice);
    
    //将结果保存到硬盘上
    
    XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
    writer.write(document);
    writer.close();

操作文件的属性

//获取根节点
Element root = document.getRootElement();
//拿到第一种书节点
Element bookEL = (Element) root.elements("书").get(0);

//增加一个属性
bookEL.addAttribute("类", "科普");

//将结果保存到硬盘上

XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();

以上就是用dom4j来解析XML文件的几种方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值