dom4j解析xml
public static void main(String[] args) { ReaderMyXml reader = new ReaderMyXml(); HashMap<String, String> hm = new HashMap<String, String>(); String n = System.getProperty("user.dir");// 获取当前工程真实路径 // System.out.println(n); String path = n + "\\src\\students.xml"; // System.out.println(path); reader.toReaderXml(path, hm); System.out.println(hm.size()); System.out.println("--------------------------------------------"); System.out.println("姓名\t年龄\t性别\t电话"); /* * for (int i = 0; i < hm.size()/4-1;i++ ) { * System.out.print(hm.get("stuname:"+(i+1))+"\t"); * System.out.print(hm.get("stuage:"+(i+1))+"\t"); * System.out.print(hm.get("sex:"+(i+1))+"\t"); * System.out.print(hm.get("phone:"+(i+1))+"\t"); System.out.println(); * } */ for (int i = 0; i < hm.size(); i += 5) { int its = i / 5 + 1; System.out.print(hm.get("stuname:" + (its)) + "\t"); System.out.print(hm.get("stuage:" + (its)) + "\t"); System.out.print(hm.get("sex:" + (its)) + "\t"); System.out.print(hm.get("phone:" + (its)) + "\t"); System.out.println(); } System.out.println("--------------------------------------------"); } }
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
--------------------------------------------