欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java DOM4J 讀取XML實(shí)例代碼

 更新時(shí)間:2013年09月09日 15:26:00   作者:  
最近學(xué)習(xí)Java,在處理XML文檔的時(shí)候,查閱相關(guān)資料,發(fā)現(xiàn)了DOM4J這個(gè)jre庫,相對(duì)C#的XML處理來說,功能還算是跟得

下面展示一篇我自己寫的一個(gè)XML讀取測(cè)試

復(fù)制代碼 代碼如下:

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("開始輸出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("沒有獲取到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里面沒有 hasChild這個(gè)屬性或者方法,所以要用nodeCount()這個(gè)方法來判斷時(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();
    }

}

相關(guān)文章

  • xxl-job的部署及springboot集成使用示例詳解

    xxl-job的部署及springboot集成使用示例詳解

    XXL-Job是一個(gè)分布式任務(wù)調(diào)度平臺(tái),可進(jìn)行任務(wù)調(diào)度、管理和監(jiān)控,并提供任務(wù)分片、失敗重試、動(dòng)態(tài)分配等功能,這篇文章主要介紹了xxl-job的部署及springboot集成使用,需要的朋友可以參考下
    2023-06-06
  • Java解決約瑟夫問題代碼實(shí)例

    Java解決約瑟夫問題代碼實(shí)例

    這篇文章主要介紹了Java解決約瑟夫(環(huán))問題的代碼實(shí)例,決約瑟問題貌似經(jīng)常出現(xiàn)在面試題中,需要的朋友可以參考下
    2014-03-03
  • JFinal使用ajaxfileupload實(shí)現(xiàn)圖片上傳及預(yù)覽

    JFinal使用ajaxfileupload實(shí)現(xiàn)圖片上傳及預(yù)覽

    這篇文章主要為大家詳細(xì)介紹了JFinal使用ajaxfileupload實(shí)現(xiàn)圖片上傳及預(yù)覽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 你知道Java的這些騷操作嗎?

    你知道Java的這些騷操作嗎?

    今天在看python相關(guān)的東西,看到各種騷操作,回頭想了下Java有沒有什么騷操作,整理下面幾種,一起看一下吧,需要的朋友可以參考下
    2021-05-05
  • 排序算法圖解之Java快速排序的分步刨析

    排序算法圖解之Java快速排序的分步刨析

    快速排序是通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割為獨(dú)立的兩個(gè)部分,一部分的所有數(shù)據(jù)比另外一部分的所有數(shù)據(jù)要小,然后按照此方法對(duì)這兩部分分別進(jìn)行快速排序,整個(gè)過程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。本文通過示例講解了快速排序的實(shí)現(xiàn),需要的可以參考一下
    2022-11-11
  • 通過weblogic API解析如何獲取weblogic中服務(wù)的IP和端口操作

    通過weblogic API解析如何獲取weblogic中服務(wù)的IP和端口操作

    這篇文章主要介紹了通過weblogic API解析如何獲取weblogic中服務(wù)的IP和端口操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 最新評(píng)論