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