dom4j解析xml
public static void main(String[] args) { ReaderMyXml reader = new ReaderMyXml(); HashMap<String, String> hm = new HashMap<String, String>(); String n = System.get
package org.cn.com;import java.io.File;import java.util.HashMap;import java.util.Iterator;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;/** * 遍歷整個XML文件,獲取所有節點的值與其屬性的值,并放入HashMap中 * @param filename String 待遍歷的XML文件(相對路徑或者絕對路徑) * @param hm HashMap 存放遍歷結果 */public class ReaderMyXml { /** * 使用Dom4j讀取XML文件 * @param fileName 文件的全名稱(路徑+名稱) * @param hm 哈希集合,用于存放XML讀取到的信息 */ @SuppressWarnings("unchecked") public void toReaderXml(String fileName,HashMap<String, String> hm){ //創建Dom4J的一個對象 SAXReader saxReader=new SAXReader(); //創建File類,xml是一個文件,所以要得到這個文件 File xmlFile=new File(fileName); int num=0; try { //裝載到Dom4J中 Document document=saxReader.read(xmlFile); //獲取xml的根節點,對我我們當前的XML文件,跟節點是:students Element root=document.getRootElement(); //獲取到根節點之后就可以根據根節點獲取其下所有的子節點 for (Iterator<Element> itera=root.elementIterator();itera.hasNext();) { //讀取二級節點 Element secondNode=itera.next(); num++; Attribute idAttr=secondNode.attribute("id"); if (idAttr!=null) { hm.put(idAttr.getName()+":"+num, idAttr.getValue()); } //System.out.println(idAttr.getName()+"、"+num+":" +idAttr.getValue()); for (Iterator<Element> iteraInner=secondNode.elementIterator();iteraInner.hasNext();) { //讀取三級節點 Element thirdNode=iteraInner.next(); //System.out.println(thirdNode.getText()); hm.put(thirdNode.getName()+":"+num, thirdNode.getText()); } //System.out.println("-----------------------------------------"); } } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
執行結果
35
--------------------------------------------
姓名 年齡 性別 電話
孫悟空 26 男 15989562589
牛魔王 28 男 13956892578
豬悟能 27 男 13856230589
嫦娥 22 女 18956877852
鐵扇公主 23 女 15802563215
白骨精 23 女 13756983698
女兒國王 21 女 18256892306
--------------------------------------------
新聞熱點
疑難解答