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声明的方法。





posted @ 2021-01-13 16:51  _Shing  阅读(188)  评论(0)    收藏  举报