标签:
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	
--------------------------------------------
 
标签:
原文地址:http://www.cnblogs.com/zds-orcale/p/Resolution.html