java案例-读取xml文件

需求

导入依赖

xml 复制代码
<dependencies>
    <!--   dom4j     -->
    <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency>
</dependencies>

代码

  • SAXReader saxReader = new SAXReader(); 获取读取器
  • Document document = saxReader.read(file); 获取文档对象
  • Element rootElement = document.getRootElement(); 获取文档根元素
  • List elements = rootElement.elements(); 获取根元素下面的子元素
java 复制代码
//1. 定义一个集合
List<Order> orderList = new ArrayList<>();

//2. 获取xml
SAXReader saxReader = new SAXReader();
//3. 获取文件对象 获取同一目录下的order.xml文件
File file = new File("demo/src/main/java/com/ruoyi/demo1/order.xml");
if (!file.exists()) {
   System.out.println("文件不存在");
   return;
}
//4. 解析xml
try{
   // 5. 获取Document对象
   Document document = saxReader.read(file);
   // 6. 获取根节点
   Element rootElement = document.getRootElement();
   // 7. 获取根节点下的所有子节点
   List<Element> elements = rootElement.elements();
   // 8. 遍历子节点
   for (Element element : elements) {
       // 9. 获取子节点的属性值
       int id = Integer.parseInt(element.attributeValue("id"));
       String name = element.elementText("name");
       DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
       LocalDateTime time = LocalDateTime.parse(element.elementText("time"), formatter);
       double price = Double.parseDouble(element.elementText("price"));
       // 10. 创建Order对象
       Order order = new Order(id, name, time, price);
       // 11. 添加到集合中
       orderList.add(order);
   }


}catch (Exception e){
   e.printStackTrace();
}

// 12. 按照时间排序
ArrayList<Order> timeDesc = orderList.stream().sorted((o1, o2) -> o1.getTime().compareTo(o2.getTime())).
       collect(Collectors.toCollection(ArrayList::new));
// 13. 输出
timeDesc.forEach(System.out::println);


//  使用stream流获取价格排序第低的订单
List<Order> priceDesc = orderList.stream().sorted((o1, o2) -> Double.compare(o1.getPrice(), o2.getPrice())).limit(1).collect(Collectors.toList());
System.out.println("价格最低的订单是:" + priceDesc.get(0));
相关推荐
m0_6138562936 分钟前
mysql如何利用事务隔离级别解决特定业务冲突_mysql隔离方案选型
jvm·数据库·python
abcnull1 小时前
用javaparser做精准测试
java·ast·静态代码分析·精准测试·javaparser
叶小鸡1 小时前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
我的xiaodoujiao1 小时前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
juniperhan1 小时前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink
ID_180079054731 小时前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
c++之路2 小时前
C++23概述
java·c++·c++23
时空系2 小时前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程
专注API从业者3 小时前
Open Claw 京东商品监控选品实战:一键抓取、实时监控、高效选品
java·服务器·数据库