public static void checkFileContainContaintIncludeOrImport(File sourceFile, Set<String> fileNameSet, XSDContainType xsdContainType) throws Exception { FileInputStream inputStream = new FileInputStream(sourceFile); // 如果该文件已经被处理和分析过,就不再进行分析了。通过文件路径进行分析 if (fileNameSet.contains(sourceFile.getAbsolutePath())) { return; } else { fileNameSet.add(sourceFile.getAbsolutePath()); } // 解析引用的import文件的include文件 InputStream in = null; Reader reader = null; SAXReader saxReader = null; try { in = new FileInputStream(sourceFile); reader = new InputStreamReader(in, "utf-8"); // 注意编码问题 saxReader = new SAXReader(); Document doc = saxReader.read(reader); Element currentRoot = doc.getRootElement(); Element childNode = null; for (Iterator<Element> it = currentRoot.elements("import").iterator(); it.hasNext();) { xsdContainType.setImportFile(true); childNode = (Element) it.next(); String refPath = childNode.attributeValue("schemaLocation"); // 迭代与拷贝文件的处理是相同的,处理import File importFile = new File(sourceFile.getParent() + File.separatorChar + refPath); checkFileContainContaintIncludeOrImport(importFile, fileNameSet, xsdContainType); } for (Iterator<Element> it = currentRoot.elements("include").iterator(); it.hasNext();) { xsdContainType.setIncludeFile(true); childNode = (Element) it.next(); String refPath = childNode.attributeValue("schemaLocation"); // 迭代与拷贝文件的处理是相同的,处理import File importFile = new File(sourceFile.getParent() + File.separatorChar + refPath); checkFileContainContaintIncludeOrImport(importFile, fileNameSet, xsdContainType); } } finally { if (reader != null) { try { reader.close(); } catch (Exception e) { logger.error("", e); } } if (in != null) { try { in.close(); } catch (Exception e) { logger.error("", e); } } } }
相关推荐
KET test2 答案及听力原文
javaTest1javaTest1javaTest1
\ajaxtest2(表格javaEye).rar\ajaxtest2(表格javaEye).rar\ajaxtest2(表格javaEye).rar\ajaxtest2(表格javaEye).rar\ajaxtest2(表格javaEye).rar
test2.html
Test2.java
test2.java
Test2_2.scala
test2.m
test2.vue
Test2.cpp
test2.py
test2.c
test2_zhaoziqing2.sln