1. 在上一篇文章分析了guzz初始化的大体流程,这里继续分析,主要分析在initFromMainConfig的方法中解析guzz.xml的过程
2. 首先在initFromMainConfig中找到下面的代码:
GuzzConfigFileBuilder builder = GuzzConfigFileBuilder.build(this,config,"UTF-8") ; if(log.isInfoEnabled()){ log.info("Loading guzz config file:" + config) ; }这里出现了一个类GuzzConfigFileBuilder,这也是一个重要的类,后面也会使用到,这里只看build方法,传入了config(就是guzz.xml)文件,一路跟踪找到:
protected void setupMainConfigDocument(GuzzContext gf,Resource r,String encoding) throws DocumentException,IOException,SAXException{ rootDoc = loadFullConfigFile(r,encoding).getRootElement() ; this.mainConfigResource = r ; }出现了loadFullConfigFile方法,返回了一个guzz.xml的document对象.
3. 跟踪进入到loadFullConfigFile方法中:使用了dom4j的SAXReader来解析的guzz.xml,
final Element root = document.getRootElement(); List list = document.selectNodes("//import");获取到根节点,寻找import节点,把找的到import放入到list中,然后进入for循环
for(int i = 0 ; i < list.size() ; i++){ Element n = (Element ) list.get(i) ; String file = n.attribute("resource").getValue() ; //load included xml file. FileResource fr = new FileResource(resource,file) ; Document includedDoc = null ; try{ includedDoc = loadFullConfigFile(fr,encoding) ; }finally{ CloseUtil.close(fr) ; } List content = root.content() ; int indexOfPos = content.indexOf(n) ; content.remove(indexOfPos) ; //appends included docs Element ie = includedDoc.getRootElement() ; List ie_children = ie.content() ; for(int k = ie_children.size() - 1 ; k >=0 ; k--){ content.add(indexOfPos,ie_children.get(k)) ; } }有出现了loadFullConfigFile方法,也就是递归的解析了使用import导入进来的文件,然后把文件加入到document后面,最好返回整个xml文档对象,保存到了rootDoc
4. 到此guzz完成guzz.xml文件的解析
原文地址:https://www.jb51.cc/xml/299290.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。