Xml解析

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

--------------------------------------------

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航