Xml spring配置文件验证
我在处理spring配置文件时注意到了这种行为。Xml spring配置文件验证,xml,spring,validation,configuration-files,Xml,Spring,Validation,Configuration Files,我在处理spring配置文件时注意到了这种行为。 我的配置文件中有2个错误: 一个语法(井格式)错误,例如错误的结束标记(尝试使用“html”标记) “名称空间”(验证)错误(尝试到安全名称空间的错误路径) 由于xml无效,我认为运行时环境返回的第一个错误是验证错误。 事实并非如此(Spring3.0.2和security 3.0.2) 它首先返回: 匹配的通配符是严格的,但找不到元素“http”的声明 然后,当我修复第一个错误时,我得到了(我第一次期望得到的): 元素类型“http”必须由
我的配置文件中有2个错误:
- 一个语法(井格式)错误,例如错误的结束标记(尝试使用“html”标记)
- “名称空间”(验证)错误(尝试到安全名称空间的错误路径)
事实并非如此(Spring3.0.2和security 3.0.2) 它首先返回: 匹配的通配符是严格的,但找不到元素“http”的声明 然后,当我修复第一个错误时,我得到了(我第一次期望得到的): 元素类型“http”必须由匹配的结束标记“”终止 那么关于语法检查可以说些什么呢?语法检查的过程似乎不是作为初始步骤执行的,而是“交错”进行检查和验证的。首先检查每个标签,然后进行验证。是这样吗?它是否依赖于实现?
PS:我的错误xml(注意模式位置和http结束标记中的两个错误):
您是对的,“语法检查”和验证不是两个单独的步骤。Spring使用流式XML解析器来提高效率。这种解析器通常在错误到达有问题的元素时准确地识别错误,而不是在错误之前或之后
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="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-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsdFIRSTERROR">
<http>
<form-login />
<http-basic />
<logout />
<intercept-url pattern="/**" access="ROLE_USER" />
</SECONDERRORhttp>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="myuser" password="mysecret" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>