在使用dom4j时遇到了一些不符合习惯的处理API,浪费了不少时间。在此进行罗列,以便查阅:
1、xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xhtml="http://www.w3.org/1999/xhtml">
<properties>
<property name="document_lang">zh-cn</property>
</properties>
<properties>
<property name="title">DocNew Test...</property>
</properties>
<newobjects/>
</document>
需求:取出title的值“DocNew Test...”;程序代码:
String title= "";
List lists= doc.selectNodes("/document/properties"); //doc为一Document对象
if(lists != null){
//for(int i=0; i<lists.size(); i++){
Element properties = (Element)list.get(list.size()-1);
Element property = properties.selectSingNodes("/document/properties/property");
if(list != null)
title = property.getText();
------
}
System.out.println(title);
以上程序输出的将是:zh-cn
String title= "";
List lists= doc.selectNodes("/document/properties/property"); //doc为一Document对象
if(lists != null){
for(int i=0; i<lists.size(); i++){
Element ele = (Element)list.get(i);
if(ele.attribute("name").getValue().equals("title"))
title = ele.getText();
}
}
System.out.println(title);
以上程序输出的将是:DocNew Test...
总结:第一段代码Element properties = (Element)list.get(list.size()-1);取的是第二个properties节点,程序到这里还没问题,但执行properties.selectSingNodes("/document/properties/property")与执行doc.selectSingNodes("/document/properties/property")都是从新编历搜索整个稳当, 结果是一样的,获得的都是节点<property name="document_lang">zh-cn</property>。