java DOM4J 讀取XML實(shí)例代碼
下面展示一篇我自己寫的一個(gè)XML讀取測(cè)試
import java.util.Iterator;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
public class XmlRead {
static StringBuilder sBuilder = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader bReader = new BufferedReader(new InputStreamReader(
System.in));
String path = null;
System.out.println("請(qǐng)輸入XML文件的絕對(duì)路徑以及文件名:\n");
path = bReader.readLine();
sBuilder.append("開(kāi)始輸出XML文件內(nèi)容\n");
Document document = null;
try {
document = read(path);
sBuilder.append(path + "\n");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
Element root = getRootElement(document);
if (root == null) {
System.out.print("沒(méi)有獲取到root節(jié)點(diǎn)");
return;
}
// 獲取XML文檔的編碼格式
String encString = document.getXMLEncoding();
sBuilder.append("<?xml version=\"1.0\" encoding=\"" + encString
+ "\">\n");
sBuilder.append(elementText(root, attText(root), 0));
System.out.println(getIterator(root, 0) + "</" + root.getName() + ">");
}
/**
* 遞歸節(jié)點(diǎn)
*
* @description
* @param element
* @param lvl
* 層級(jí)
* @return
*/
private static String getIterator(Element element, int lvl) {
lvl += 1;
for (Iterator i = element.elementIterator(); i.hasNext();) {
Element e = (Element) i.next();
sBuilder.append(elementText(e, attText(e), lvl));
getIterator(e, lvl);
int count = e.nodeCount();
if (count > 0) {
for (int j = 0; j < lvl; j++) {
sBuilder.append(" ");
}
}
sBuilder.append("</" + e.getName() + ">\n");
}
return sBuilder.toString();
}
/**
* 獲取當(dāng)前節(jié)點(diǎn)的屬性的值的字符串
*
* @description
* @param element
* 當(dāng)前節(jié)點(diǎn)
* @return
*/
private static String attText(Element element) {
String str = " ";
for (int i = 0; i < element.attributeCount(); i++) {
Attribute attribute = element.attribute(i);
str += attribute.getName() + "=\"" + attribute.getValue() + "\" ";
}
return str;
}
/**
* 獲取當(dāng)前Element的文本值
*
* @description
* @param element
* 當(dāng)前Element節(jié)點(diǎn)
* @param text
* 屬性值
* @param lvl
* 層級(jí)
* @return
*/
private static String elementText(Element element, String text, int lvl) {
String str = "";
for (int i = 0; i < lvl; i++) {
str += " ";
}
str += "<" + element.getName();
if (text != null && text != "") {
str += text;
}
//由于dom4j里面沒(méi)有 hasChild這個(gè)屬性或者方法,所以要用nodeCount()這個(gè)方法來(lái)判斷時(shí)候還有子節(jié)點(diǎn)
int count = element.nodeCount();
if (count == 0) {
return str += ">";
}
return str += ">\n";
}
/**
*
* @description 讀取XML文件
* @param file
* XML文件路徑,包含文件名
* @return Document 文檔
* @throws MalformedURLException
* @throws DocumentException
*/
public static Document read(String file) throws MalformedURLException,
DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(file));
return document;
}
/**
* 獲取Document文檔的root節(jié)點(diǎn)
*
* @param document
* @return
*/
public static Element getRootElement(Document document) {
return document.getRootElement();
}
}
- java中使用dom4j解析XML文件的方法教程
- Java DOM4J方式生成XML的方法
- Dom4j解析XML_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- java使用dom4j生成與解析xml文檔的方法示例
- java基于dom4j包實(shí)現(xiàn)對(duì)XML解析的方法
- java中利用Dom4j解析和生成XML文檔
- java使用xpath和dom4j解析xml
- java解析xml之dom4j解析xml示例分享
- java使用dom4j解析xml配置文件實(shí)現(xiàn)抽象工廠反射示例
- java dom4j解析xml用到的幾個(gè)方法
- java dom4j解析xml文件代碼實(shí)例分享
- java使用dom4j操作xml示例代碼
- 在java中使用dom4j解析xml(示例代碼)
- java操作(DOM、SAX、JDOM、DOM4J)xml方式的四種比較與詳解
- Java使用DOM4j實(shí)現(xiàn)讀寫XML文件的屬性和元素
相關(guān)文章
Java:com.netflix.client.ClientException錯(cuò)誤解決
本文主要介紹了Java:com.netflix.client.ClientException錯(cuò)誤解決,主要是指出客戶端?module-sso?試圖通過(guò)負(fù)載均衡器訪問(wèn)服務(wù)時(shí),負(fù)載均衡器沒(méi)有找到可用的服務(wù)器來(lái)處理請(qǐng)求,下面就來(lái)介紹一下解決方法2024-08-08
Struts2中validate數(shù)據(jù)校驗(yàn)的兩種方法詳解附Struts2常用校驗(yàn)器
這篇文章主要介紹了Struts2中validate數(shù)據(jù)校驗(yàn)的兩種方法及Struts2常用校驗(yàn)器,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-09-09
詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法
這篇文章主要介紹了詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法,講解了System.getEnv()和System.getProperties()這兩個(gè)核心方法的使用,需要的朋友可以參考下2016-05-05
jackson在springboot中的使用方式-自定義參數(shù)轉(zhuǎn)換器
這篇文章主要介紹了jackson在springboot中的使用方式-自定義參數(shù)轉(zhuǎn)換器,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
Java中Object.equals和String.equals的區(qū)別詳解
這篇文章主要給大家介紹了Java中Object.equals和String.equals的區(qū)別,文中通過(guò)一個(gè)小示例讓大家輕松的明白這兩者的區(qū)別,對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04
關(guān)于弱引用WeakReference所引用的對(duì)象的回收規(guī)則
這篇文章主要介紹了關(guān)于弱引用WeakReference所引用的對(duì)象的回收規(guī)則,如果一個(gè)弱引用實(shí)例的成員變量referent引用了一個(gè)對(duì)象obj,那么就稱這個(gè)弱引用實(shí)例對(duì)obj的引用是弱引用,被一個(gè)弱引用實(shí)例引用的對(duì)象,稱為弱引用對(duì)象,需要的朋友可以參考下2023-09-09
微信小程序+后端(java)實(shí)現(xiàn)開(kāi)發(fā)
這篇文章主要介紹了微信小程序+后端(java)實(shí)現(xiàn)開(kāi)發(fā),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Java實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04

