dom4j 常见异常

1org.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"));

 

2Nested   exception:   缺少文件根组件。

这是因为xml解析器的问题,以前一直在web环境下跑程序,用的是xerces解析器,就不会报上面的错误。
但是独立运行的程序如果用jdk1.4.2dom4j1.6.1时就回有上面的错误,因为用的是jdk自带的解析器crimson

解决办法就是:
a
:用xerces解析器,可以从tomcat中找到xercesImpl.jarxml-api.jar放到工程中就可以了。
b
:换jdk1.5jdk1.5下面也没有这个问题,应该是jdk1.5自带的解析器解决了这个问题了。

你可能感兴趣的:(dom4j)