dom4j解析xml
publicstaticvoidmain(String[] args) {
ReaderMyXml reader=newReaderMyXml();
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("--------------------------------------------");
}
}
packageorg.cn.com;importjava.io.File;importjava.util.HashMap;importjava.util.Iterator;importorg.dom4j.Attribute;importorg.dom4j.Document;importorg.dom4j.DocumentException;importorg.dom4j.Element;importorg.dom4j.io.SAXReader;/*** 遍历整个XML文件,获取所有节点的值与其属性的值,并放入HashMap中
*@paramfilename String 待遍历的XML文件(相对路径或者绝对路径)
*@paramhm HashMap 存放遍历结果*/publicclassReaderMyXml {/*** 使用Dom4j读取XML文件
*@paramfileName 文件的全名称(路径+名称)
*@paramhm 哈希集合,用于存放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
--------------------------------------------