2.7获取Document
XmlBeanDefinitionReader protected Document doLoadDocument(InputSource inputSource, Resource resource) throws Exception { return this.documentLoader.loadDocument(inputSource, getEntityResolver(), this.errorHandler, getValidationModeForResource(resource), isNamespaceAware()); } DefaultDocumentLoader implement DocumentLoader public Document loadDocument(InputSource inputSource, EntityResolver entityResolver, ErrorHandler errorHandler, int validationMode, boolean namespaceAware) throws Exception { DocumentBuilderFactory factory = createDocumentBuilderFactory(validationMode, namespaceAware); if (logger.isTraceEnabled()) { logger.trace("Using JAXP provider [" + factory.getClass().getName() + "]"); } DocumentBuilder builder = createDocumentBuilder(factory, entityResolver, errorHandler); return builder.parse(inputSource); }
XmlBeanReader将读取Document委托给DocumentLoader接口的实现类DefaultDocumentLoader。使用SAX解析XMl,首先创建DocumentBuilderFactory,再通过DocumentBuildFactory创建DocumentBuilder,通过DocumentBuilder解析inputSource来返回Document。
2.7.1EntityResolver用法
EntityResolver:对于解析一个XMl,SAX首先读取XMl文档上的声明,然后根据声明寻找DTD定义,以便对文档进行一个验证。默认是通过网络来下载DTD声明。EntityResolver作用就是提供一个如何寻找DTD声明的方法。

浙公网安备 33010602011771号