dom4j 常见异常
1:org.dom4j.IllegalAddException:?No?such?namespace?prefix:?
这个异常是说:要添加的这个元素的前缀,没有声明!这主要是在添加元素时直接用上级元素的allElement方法时出现的。例:
Element ns1 = rootTarget.addElement("SOAP-ENV:Body");???????????????????????????????????????????
?
有两种解决方式:
A:新建一个Element,加上前缀声名后再添加到父元素上去。
Element ns1 = org.log4j.documentHelper.createElement("ns1:aaa");
???????ns1.add(new Namespace("ns1","urn:HyrjService");
???????rootTarget.add(ns1);?????
B:直接在根上声名:然后就可以用addElement方法去添加结点了!
rootTarget.add(new Namespace("ns1","http://www.w3.org/2001/XMLSchema"));
?
2:Nested ? exception: ??缺少文件根组件。
这是因为xml解析器的问题,以前一直在web环境下跑程序,用的是xerces解析器,就不会报上面的错误。
但是独立运行的程序如果用jdk1.4.2和dom4j1.6.1时就回有上面的错误,因为用的是jdk自带的解析器crimson。
解决办法就是:
a:用xerces解析器,可以从tomcat中找到xercesImpl.jar和xml-api.jar放到工程中就可以了。
b:换jdk1.5,jdk1.5下面也没有这个问题,应该是jdk1.5自带的解析器解决了这个问题了。