一些老的系統或者項目,使用了.xml格式的文件進行數據存取,有時候,可能在和某些單位合作的時候,需要獲取他們系統的數據,這些數據都存放在.xml文件中,這時,我們就需要解析該文件了,J解析方式有很多,但是常用的是Dom4J,以下介紹Dom4J的解析方式 一、解析時用到的依賴 點擊查看代碼 <!-- ...
一些老的系統或者項目,使用了.xml格式的文件進行數據存取,有時候,可能在和某些單位合作的時候,需要獲取他們系統的數據,這些數據都存放在.xml文件中,這時,我們就需要解析該文件了,J解析方式有很多,但是常用的是Dom4J,以下介紹Dom4J的解析方式
一、解析時用到的依賴
點擊查看代碼
<!-- dom4j 解析xml文件 -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
二、示例代碼
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