0

我正在使用 DOM 解析器我正在尝试设置验证。根据 DOMBuilderFactory 的javadoc如果我将 setValidating 设置为 true 我无法理解它将验证什么?有人可以帮助我理解这一点吗?

javax.xml.parsers.DocumentBuilderFactory: factory.setValidating(true);
4

1 回答 1

1

它将根据给定的模式或 DTD 进行验证。

给定以下示例:

<?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-3.2.xsd">
   <foo></foo>
 </beans>

这是一个格式良好的 XML,如果您不将 validate 设置为 true,则将解析文档。

但是,如果您将 validate 设置为 true,则文档结构将针对 spring-beans-3.2.xsd不允许该foo元素的架构进行验证。在这种情况下,解析器(文档生成器)将抛出 a SAXParseException

XML 模式描述了文档中允许的元素和属性、数据类型、元素的顺序、出现次数等。例如,该模式允许bean元素嵌套在内部beans

于 2013-04-19T09:14:06.927 回答