天天看點

JAVA 應用 DOM4J 及 JDOM 方式解析 XMLDOM4J方式JDOM方式

DOM4J方式

DOM4J及 JDOM 是非官方提供的,應用起來比較簡潔。

步驟

獲得dom4j解析器

SAXReader saxr = new SAXReader();           

利用dom4j解析器的read()方法解析xml,擷取docuemnt對象

Document docuemnt = saxr.read(new File("src/res/ProfessionalBooks.xml"));           

獲得xml檔案的根節點

Element rootelement = docuemnt.getRootElement();           

自己建立通用方法一層一層剝開xml檔案

具體代碼

import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class MyDOM4j {

    /*
     * 建立一個方法一層一成剝開xml檔案
     */
    public static void PeelXml(Element rootelement) {
        Iterator<Element> it = rootelement.elementIterator();

        while (it.hasNext()) {
            Element element = it.next();
//          System.out.println("........開始.........");
            System.out.println();
            System.out.print("節點名:"+element.getName()+" ");
            List<Attribute> ats = element.attributes();
            if (ats.size() > 0) {
                for (int i = 0; i < ats.size(); i++) {
                    System.out.print("屬性名:" + ats.get(i).getName() + "  " + "屬性值:" + ats.get(i).getValue()+" ");
                }
            }
            System.out.print("節點值:"+element.getTextTrim());
//          System.out.println("........結束.........");
            if(element.elementIterator().hasNext()){
                PeelXml(element);
            }
        }
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 獲得dom4j解析器
        SAXReader saxr = new SAXReader();
        // 利用dom4j解析器的read()方法解析xml,擷取docuemnt對象
        try {
            Document docuemnt = saxr.read(new File("src/res/ProfessionalBooks.xml"));
            // 獲得xml檔案的根節點
            Element rootelement = docuemnt.getRootElement();
            PeelXml(rootelement);
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}           

注意:獲得節點值時要用getTextTrim()避免輸出來有很多空格和換行

JDOM方式

步驟

建立JDOM的解析器,saxbuilder

SAXBuilder saxbuilder = new SAXBuilder();           

建立輸入流,輸入xml檔案

FileInputStream in;
in = new FileInputStream("src/res/ProfessionalBooks.xml");
InputStreamReader ins = new InputStreamReader(in, "UTF-8");           

通過saxBuilder的build方法,将輸入流加載到saxBuilder中獲得Document對象

Document doc = saxbuilder.build(ins);           

利用自己寫的方法,一層一層剝開xml檔案

具體代碼

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;

import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class MyJDOMTest {

    /*
     * 建立一個方法一層一成剝開xml檔案
     */
    public static void PeelXml(Element rootelement) {
        List<Element> Childrenelement = rootelement.getChildren();
        for (Element element : Childrenelement) {
            // System.out.println(".......開始.......");
            System.out.println();
            System.out.print("節點名:" + element.getName() + "   ");
            List<Attribute> atli = element.getAttributes();
            if (atli.size() != 0) {

                for (int i = 0; i < atli.size(); i++) {
                    System.out.print("屬性名:" + atli.get(i).getName() + "   " + "屬性值:" + atli.get(i).getValue() + "  ");

                }
            }

            String value = element.getTextTrim();
            // if (value.getBytes().length > 0) {

            System.out.print("節點值:" + value);

            // }

            // System.out.print(".......結束.......");
            if (element.getChildren().size() > 0) {
                PeelXml(element);
            }

        }
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 建立JDOM的解析器,saxbuilder

        SAXBuilder saxbuilder = new SAXBuilder();
        FileInputStream in;
        try {
            in = new FileInputStream("src/res/ProfessionalBooks.xml");
            InputStreamReader ins = new InputStreamReader(in, "UTF-8");
            // 通過saxBuilder的build方法,将輸入流加載到saxBuilder中
            Document doc = saxbuilder.build(ins);
            Element rootelement = doc.getRootElement();
            PeelXml(rootelement);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JDOMException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // 利用SAXBuilder的build()方法解析xml檔案

    }

}           

至于xml:http://blog.csdn.net/qq_23473123/article/details/51396153