2015-01-05
同学用dom4j写的一个更改节点文本的方法爆出这样一个错误:
代码:
for(Iterator itr=root.elementIterator();itr.hasNext();){ Element ele=(Element)itr.next(); System.out.println((Element)ele.element("name")==null); if(ele.element("name").getText().equals(name)){ ele.element("age").setText(age); break; } }
xml:
<?xml version="1.0" encoding="gb2312"?> <Student> <name>张三</name> <age>20</age> <name>李四</name> <age>30</age> </Student>
分析:
再回顾他代码时首先exception处理有些问题
catch (IOException e) {
e.printStackTrace();
}
catch (DocumentException e) {
e.printStackTrace();
}以至于后面无法看到错误的关键!
代码片段是他在"student"的子节点循环的下查找“name”元素,这时候就变成"name"下查找"name",所以节点找不到。如果异常处理正常的话,应该提醒元素找不到
将for循环去掉,代码正常运行,得到想要的结果!