解析xml文件数据

        //user.home:用户主目录
        //os.name:操作系统名称
        //file.separator 文件目录分隔符的符号,例如'd:\test\test.java'。 对于 Windows,默认值为 '\',对于 Unix / Mac,默认值为'/' 。
        //user.dir:当前用户程序所在目录
        String userHome = System.getProperty("user.home");
        String osName = System.getProperty("os.name");
        String fileSeparator = System.getProperty("file.separator");
        String userDir = System.getProperty("user.dir");
        /*
            操作系统的名称:Windows 11
            用户的主目录:C:\Users\lds
            文件目录分隔符的符号:\
            用户的当前工作目录:D:\java84\xml_parse
         */
        System.out.println("操作系统的名称:" + osName);
        System.out.println("用户的主目录:" + userHome);
        System.out.println("文件目录分隔符的符号:" + fileSeparator);
        System.out.println("用户的当前工作目录:" + userDir);

        System.out.println("---------------------华丽分割线---------------------------");
        //电影xml文件绝对物理路径
        //File filmPath = new File(userDir,"doc" + File.separator + "movies.xml");
        String filmPath = userDir + File.separator + "doc" + File.separator + "movies.xml";
        //创建文件对象,并关联上物理
        File filmFile = new File(filmPath);
        //创建xml读取器对象
        SAXReader reader = new SAXReader();//依赖dom4j.jar包
        try {
            //将movies.xml文件加载到内存中,并返回文档对象(Document接口引用doc在内存中表示一个XML文件)
            Document doc = reader.read(filmFile);
            //获取movies.xml文件的根节点对象,Element接口引用表示单个元素节点对象
            Element root = doc.getRootElement();
            //获取根节点的名称
            String rootName = root.getName();
            System.out.println("根节点名称:" + rootName);
            //获取根节点下的所有子节点(movie子节点)
            List<Element> movieList =  root.elements("movie");
            //循环遍历movie节点
            movieList.forEach(m->{
                //Attribute接口引用表示某个元素的单属性节点对象
                //Attribute attrId = m.attribute("id");
                //String id = attrId.getValue();
                //获取id编号
                String id = m.attributeValue("id");
                //根据当前节点对象.elementTextTrim("子节点名称");
                String name = m.elementTextTrim("name");
                String type = m.elementTextTrim("type");
                String period = m.elementTextTrim("period");
                String price = m.elementTextTrim("price");
                String releaseDate = m.elementTextTrim("releaseDate");
                String director = m.elementTextTrim("director");
                System.out.println("电影编号:" + id);
                System.out.println("电影名字:" + name);
                System.out.println("电影剧情:" + type);
                System.out.println("电影片长:" + period);
                System.out.println("电影售价:" + price);
                System.out.println("电影上映日期:" + releaseDate);
                System.out.println("电影导演:" + director);
                System.out.println("----------------华丽分割线--------------------");
                // 第二种方法:使用循环迭代器 获取根节点下的所有子节点
                /*Iterator<Element> it = m.elementIterator();
                while (it.hasNext()) {
                    Element ele = it.next();
                    switch (ele.getName()) {
                        case "name" -> {
                            String name = ele.getTextTrim();
                            System.out.println("电影名:" + name);
                        }
                        case "type" -> {
                            String type = ele.getTextTrim();
                            System.out.println("电影类型:" + type);
                        }
                    }
                }*/
            });
        } catch (DocumentException e) {
            throw new RuntimeException(e);
        }

    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值