java 遍历xml所有节点_解析xml文件,遍历输出xml文件中的所有节点, 最终模仿实现struts2框架自动封装参数的功能...

packageorg.frame;importjava.io.File;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importorg.dom4j.Attribute;importorg.dom4j.Document;importorg.dom4j.Element;importorg.dom4j.io.SAXReader;importorg.junit.Test;importorg.node.Action;importorg.node.Actions;importorg.node.Result;//本类完成对xml文件的解析工作 返回解析到的list集合

public classAnalyze {

@Testpublic void print() throwsException {

List listActions =analyzeRoot();

Iterator i =listActions.iterator();while(i.hasNext()) {

Actions actions=i.next();

System.out.println("actions[Name]:" + actions.getName() + ",actions[namespace]:" +actions.getNamespace());//获得action集合

Iterator i2 =actions.getActionList().iterator();while(i2.hasNext()) {

Action action=i2.next();

System.out.println("action[Name]:" + action.getName() + ",action[class]:" +action.getClassname());//遍历result集合

Iterator i3 =action.getResultList().iterator();while(i3.hasNext()) {

Result result=i3.next();

System.out.println("result[Name]:" + result.getName() + ",result[redirect]:" +result.isRedirect()+ ",result[content]:" +result.getContent());

}

}

}

}//解析根节点的方法 最终返回actions下的所有节点集合

public List analyzeRoot() throwsException {//用于封装节点数据的集合

List listActions = new ArrayList();//创建文件

File file = new File("src/mystruts.xml");

SAXReader sax= newSAXReader();//获得dom结构

Document read =sax.read(file);//获取根节点

Element elementRoot =read.getRootElement();//一层层遍历根节点下的节点

Iterator iterator =elementRoot.elementIterator();

Actions actions= null;while(iterator.hasNext()) {

actions= newActions();//获得actions节点

Element elementActions =iterator.next();//获得actions标签的基本属性

Attribute attribute1 = elementActions.attribute("name");

Attribute attribute2= elementActions.attribute("namespace");//设置基本属性到actions对象中

actions.setName(attribute1.getValue());

actions.setNamespace(attribute2.getValue());//调用方法 返回的集合是action节点的集合

List listAction =analyzeActions(elementActions);//把action节点集合加入到actions的集合对象中

actions.setActionList(listAction);//把封装好的actions对象加入到actions集合中 返回给用户

listActions.add(actions);

}returnlistActions;

}//解析actions节点的方法 参数actions节点 最终返回的是action节点集合

public List analyzeActions(Element elementActions) throwsException {

List listAction = new ArrayList();//遍历actions节点 得到action节点

Iterator iterator =elementActions.elementIterator();

Action action= null;while(iterator.hasNext()) {

action= newAction();//得到每个action节点对象

Element elementAction =iterator.next();//获取该节点的基本属性

Attribute attribute1 = elementAction.attribute("name");

Attribute attribute2= elementAction.attribute("class");

action.setName(attribute1.getValue());

action.setClassname(attribute2.getValue());//继续调用方法 返回的是action下的result节点的集合

List listResult =analyzeAction(elementAction);//把集合封装进action中的集合属性中

action.setResultList(listResult);//最后把每个action对象 封装进上边准备的listAction集合中

listAction.add(action);

}returnlistAction;

}//解析action节点的方法 参数action节点 最终返回的是result节点集合

public List analyzeAction(Element elementAction) throwsException {

List listResult = new ArrayList();//遍历action节点 得到result节点

Iterator iterator =elementAction.elementIterator();

Result result= null;while(iterator.hasNext()) {

result= newResult();//得到每个result对象

Element elementResult =iterator.next();//得打属性对象

Attribute attribute1 = elementResult.attribute("name");

Attribute attribute2= elementResult.attribute("redirect");//进行封装

result.setName(attribute1.getValue());//但是需要注意的是 redirect属性可能获取不到 如果获取不到 设置默认值为true

String redirect = "";try {//没有异常 表示可以获取到

redirect =attribute2.getValue();

result.setRedirect(Boolean.parseBoolean(redirect));

}catch(Exception e) {//表示没有redirect属性 设置默认值

result.setRedirect(true);

}//设置文本属性

result.setContent(elementResult.getTextTrim());

listResult.add(result);

}returnlistResult;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值