一些老的系统或者项目,使用了.xml格式的文件进行数据存取,有时候,可能在和某些单位合作的时候,需要获取他们系统的数据,这些数据都存放在.xml文件中,这时,我们就需要解析该文件了,J解析方式有很多,但是常用的是Dom4J,以下介绍Dom4J的解析方式
一、解析时用到的依赖
点击查看代码
dom4j dom4j 1.6.1
二、示例代码1.代码如下:
点击查看代码
package cn.itCast.manor.modules.test.xmljx;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import java.io.File;import java.util.Iterator;/** * @Classname Dom4JUtils * @Description: 解析xml文件中的相关数据 * @Date: 2022/12/14 0014 11:56 * @AUTHOR: 无泪之城 * @Version 1.0 */public class Dom4JUtils { public void jxXml(File file) throws DocumentException { SAXReader reader = null; Document document = null; //1.创建Reader对象 reader = new SAXReader(); //2.加载xml document = reader.read(file); //3.获取根节点 Element root = document.getRootElement(); //############################################################################################################ //############################################################################################################ System.out.println("#################################################" + "【档案相关信息】" + "##########################################"); //【一、获取档案相关信息】 //1.资料名称 String tm = root.element("TM").getText(); System.out.println("资料名称: " + tm); //2.行政区 获取省+市 Element xzq = root.element("XZQList"); String province = xzq.element("Province").getText(); String city = xzq.element("District").getText(); System.out.println("省:" + province); System.out.println("市:" + city); //3.工作程度 String gzcd = root.element("GZCD").getText(); System.out.println("工作程度:" + gzcd); //4.形成单位 String xcdw = root.element("XCDWMC").getText(); System.out.println("形成单位:" + xcdw); //5.作者 String zz = root.element("BZZ").getText(); System.out.println("作者:" + zz); //6.形成时间 String xcsj = root.element("XCSJ").getText(); System.out.println("形成时间:" + xcsj); //7.起始时间 String qssj = root.element("XMQSSJ").getText(); System.out.println("起始时间:" + qssj); //8.终止时间 String zzsj = root.element("XMZZSJ").getText(); System.out.println("终止时间:" + zzsj); //9.起始经度 String qsjd = root.element("QSJDLX").getText(); System.out.println("起始经度:" + qsjd); //10.终止经度 String zzjd = root.element("ZZJDLX").getText(); System.out.println("终止经度:" + zzjd); //11.起始纬度 String qswd = root.element("QSWDLX").getText(); System.out.println("起始纬度:" + qswd); //12.终止纬度 String zzwd = root.element("ZZWDLX").getText(); System.out.println("终止纬度:" + zzwd); //13.矿产 String kc = root.element("ZYKZ").getText(); System.out.println("矿产:" + kc); //14.内容摘要 String nrzy = root.element("NRTY").getText(); System.out.println("内容摘要:" + nrzy); //15.备注 String bz = root.element("SWXXBZ").getText(); System.out.println("备注:" + bz); //【档案号、图幅号、资料类别】手动添加 //TODO 这里进行档案数据入库操作(档案表) //############################################################################################################ //############################################################################################################ System.out.println("#################################################" + "【成果资料信息】" + "##########################################"); //【二、成果资料信息-多个】 //成果文件list Element cgList; Element cgxxList; for (Iterator i = root.elementIterator("CGWJCList"); i.hasNext(); ) { //拿到每个成果文件list cgList = (Element) i.next(); //遍历每个成果文件,获取一个成果文件中的每一个文件信息list for (Iterator j = cgList.elementIterator("CGWJXXList"); j.hasNext(); ) { //拿到每个成果文件信息list cgxxList = (Element) j.next(); //文件类型 String wjlx = cgxxList.element("WJLX").getText(); //文件名称 String wjbt = cgxxList.element("WJBT").getText(); //顺序号 String sxh = cgxxList.element("WJMC").getText(); //截取顺序号 boolean status = sxh.contains("."); if (status) { sxh = sxh.substring(0, sxh.indexOf(".")); } //涉密信息 String smxx = cgxxList.element("MJ").getText(); System.out.println("文件类型:" + wjlx); System.out.println("文件名称:" + wjbt); System.out.println("顺序号:" + sxh); System.out.println("涉密信息:" + smxx); //【比例尺、载体类型、附图类型】需要手动添加、【档案号】在修改档案信息时同步添加 //TODO 在这个循环里面进行入库操作(在成果资料表) } } //############################################################################################################ //############################################################################################################ System.out.println("#################################################" + "【实物资料信息】" + "##########################################"); //【三、实物资料信息】 //岩矿心(孔) String ykx = root.element("SWYKX").getText(); //总进尺 String zjc = root.element("SWZJC").getText(); //样品 String yp = root.element("SWYP").getText(); //岩屑 String yx = root.element("SWYX").getText(); //薄片 String bp = root.element("SWBP").getText(); //标本 String bb = root.element("SWBB").getText(); //取心 String qx = root.element("SWQX").getText(); //光片 String gp = root.element("SWGP").getText(); //大地构造位置 String ddgzwz = root.element("DDGZWZ").getText(); //成矿带 String ckd = root.element("CKD").getText(); //主要矿种 String zykz = root.element("ZYKZ").getText(); System.out.println("岩矿心(孔): " + ykx); System.out.println("总进尺: " + zjc); System.out.println("样品: " + yp); System.out.println("岩屑: " + yx); System.out.println("薄片: " + bp); System.out.println("标本: " + bb); System.out.println("取心: " + qx); System.out.println("光片: " + gp); System.out.println("大地构造位置: " + ddgzwz); System.out.println("成矿带: " + ckd); System.out.println("主要矿种: " + zykz); //【档案号】手动添加 //TODO 这里进行数据入库操作(实物资料表) //############################################################################################################ //############################################################################################################ System.out.println("#################################################" + "【原始资料信息】" + "##########################################"); //【四、原始资料信息】 Element ysList;//原始文件list Element ysxxList; //原始文件信息list for (Iterator i = root.elementIterator("YSWJMLList"); i.hasNext(); ) { //拿到每个原始文件list ysList = (Element) i.next(); //遍历每个原始文件,获取一个原始文件中的每一个文件信息list for (Iterator j = ysList.elementIterator("YSWJXXList"); j.hasNext(); ) { //拿到每个原始文件信息list ysxxList = (Element) j.next(); //文件类型 String wjlx = ysxxList.element("LBDZ").getText(); //文件名称 String wjbt = ysxxList.element("WJMC").getText(); //顺序号(需要截取一下) String sxh = ysxxList.element("DZWJM").getText(); //截取顺序号 boolean status = sxh.contains("."); if (status) { sxh = sxh.substring(0, sxh.indexOf(".")); } //载体类型 String ztlx = ysxxList.element("ZTXS").getText(); //涉密信息 String smxx = ysxxList.element("MJ").getText(); System.out.println("文件类型:" + wjlx); System.out.println("文件名称:" + wjbt); System.out.println("顺序号:" + sxh); System.out.println("载体类型:" + ztlx); System.out.println("涉密信息:" + smxx); //【档案号、比例尺】手动添加 // TODO 这里进行数据入库操作(实物资料表) } } }}
2.如果需要对数据进行进一步的操作的话,就根据代码中的注释处去添加相关代码即可,本次示例,没有写数据库相关的代码(很简单~)3.测试使用的【.xml】文件在这里
链接 | 密码 |
---|---|
下载:https://wwuh.lanzout.com/illCv0insjrg | hssp |
本文来自博客园,作者:青喺半掩眉砂,转载请注明原文链接:https://www.cnblogs.com/xiaoguo-java/p/16982308.html