Document root element “beans”, must match DOCTYPE



Document root element “beans”, must match DOCTYPE

原文地址:Document root element “beans”, must match DOCTYPE作者:闪光

Document root element “beans”, must match DOCTYPE root “null”.的错误提示,网上很多人说要把applicationContex.xml文件中加上如下第二行的<!DOCTYPE/>标签,说明DTD,其实并不准确。

<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”>

<beans>

……

</beans>

实例中的配置文件时beans-config.xml:

<?xml version=”1.0″ encoding=”UTF-8″?>

<beans xmlns=”http://www.springframework.org/schema/beans”

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=”http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.0.xsd”>

 

<bean id=”helloBean”

class=”onlyfun.caterpillar.HelloBean”>

<property name=”helloWord”>

<value>Hello!Justin!</value>

</property>

</bean>

</beans>

很显然这是XML Schema的设置方式。我把它改为XML DTD的设置方式,如下:

<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN”

“http://www.springframework.org/dtd/spring-beans.dtd”>

<beans>


<bean id=”helloBean”

class=”onlyfun.caterpillar.HelloBean”>

<property name=”helloWord”>

<value>Hello!Justin!</value>

</property>

</bean>

</beans>

再次运行,OK,成功!后来在spring forum上发现了正解:

You have the wrong xml configuration for the version of spring.

 

1.x use DOCTYPE

2.x use schema

 

You must have 1.x in the classpath.

引自http://forum.springframework.org/showthread.php?t=37883

 

现在明白了,spring 1.x 使用DOCTYPE,而2.x是用schema,我的项目出错原因是由于前面的其他错误怀疑spring版本问题把spring2.0换成了spring1.2,而我使用的Spring IDE是以前配置的Spring1.x版本。改用配置文件为XML DTD解析方式就可以了,或者更新Spring IDE为2.x版本也可以解决问题。

文章出处:DIY部落(http://www.diybl.com/course/1_web/webjs/200855/114716.html)

 

 

 

 

 

总之,把<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN”

“http://www.springframework.org/dtd/spring-beans.dtd”>问题出在xml开头这一句,换换试试