dom4j解析XML--异常总结

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自带的解析器解决了这个问题了。

 

根本原因是xml含有bom头导致,就是EF BB BF。

 

3:Malformed UTF-8 char -- is an XML encoding declaration missing?”(行号可能太小)。

解决:XML文件一定要是UTF-8格式的!

你可能感兴趣的:(dom4j)