另一方面,xml文件格式以P3C扫描结果为例) ) ) )。
二、示例代码import org.w3c.dom.*; import org.xml.sax.SAXException; import javax.XML.parsers.document builder; import javax.XML.parsers.documentbuilderfactory; import javax.XML.parsers.parserconfigurationexception; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/* * @ authorshtq.001 */public class xmltest2publicstaticvoidmain string [ ] args ) stringdirectory=’f3360 ) ) 文件文件=new file 目录; iffile.isdirectory ) ) { File[] files=file.listFiles ); 列表映射字符串,对象结果列表=new ArrayList ; forintI=0; i files.length; I ) if ! files[i].exists ) ) system.out.println’XML文件不存在。 请确认! ‘ ); } else { ListMapString,object templist=parse XML files [ I ]; iftemplist!=nulltemplist.size0) resultlist.addall ) templist ); } } system.err.println result list.size ); for 映射,对象映射:结果列表) system.err.println )映射; }/* * * *分析XML文件* * @ paramfile * @ return */publicstaticlistmapstring,objectparsexml 文件文件) )/XML分析工厂documml的try { builder=factory.newdocumentbuilder ; //根节点element root=document.getdocumentelemement -创建要分析其//XML的文档实例document document=builder.parse file ) 列表映射字符串,对象结果列表=new ArrayList ; 结果列表=parse element 根,结果列表; } catch parserconfigurationexceptione ) { e.printStackTrace ); }catchioexceptione ) { e.printStackTrace ); }catchsaxexceptione ) { e.printStackTrace ); }返回结果列表; }公共静态列表映射
<String, Object>> parseElementElement element, List<Map<String, Object>> resultList){ NodeList nodeList = element.getChildNodes); for int i = 0; i < nodeList.getLength); i++) { Node node = nodeList.itemi); Map<String, Object> map = new HashMap<>16); if node.getNodeType) == Node.ELEMENT_NODE) { if”problem”.equalsnode.getNodeName))){ NodeList nodeList1 = node.getChildNodes); for int j = 0; j < nodeList1.getLength); j++) { Node childNode = nodeList1.itemj); if”file”.equalschildNode.getNodeName))){ map.put”file”, childNode.getTextContent)); } else if”line”.equalschildNode.getNodeName))){ map.put”line”, childNode.getTextContent)); } else if”problem_class”.equalschildNode.getNodeName))){ map.put”problem”, childNode.getTextContent)); NamedNodeMap namedNodeMap = childNode.getAttributes); for int k = 0; k < namedNodeMap.getLength); k++) { Attr attr = Attr) namedNodeMap.itemk); if”severity”.equalsattr.getName))){ map.put”severity”, attr.getValue)); } } } else if”description”.equalschildNode.getNodeName))){ map.put”suggestion”, childNode.getTextContent)); } else if”entry_point”.equalschildNode.getNodeName))){ NamedNodeMap namedNodeMap = childNode.getAttributes); for int m = 0; m < namedNodeMap.getLength); m++) { Attr attr = Attr) namedNodeMap.itemm); if”FQNAME”.equalsattr.getName))){ map.put”functionName”, attr.getValue)); } } } } resultList.addmap); } } } return resultList; }} 三、运行结果 {severity=BLOCKER, file=file://$PROJECT_DIR$/src/main/java/basicstudy/thread/ExecutorsTest.java, problem=线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。, functionName=basicstudy.thread.ExecutorsTest void newSingleThreadTest), line=26, suggestion=手动创建线程池,效果会更好哦。 line 26)}{severity=BLOCKER, file=file://$PROJECT_DIR$/src/main/java/basicstudy/thread/ExecutorsTest.java, problem=线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。, functionName=basicstudy.thread.ExecutorsTest void newCachedThreadPoolTest), line=75, suggestion=手动创建线程池,效果会更好哦。 line 75)}{severity=BLOCKER, file=file://$PROJECT_DIR$/src/main/java/basicstudy/thread/ExecutorsTest.java, problem=线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。, functionName=basicstudy.thread.ExecutorsTest void newFixedThreadPoolTest), line=49, suggestion=手动创建线程池,效果会更好哦。 line 49)}
四、说明
代码写的简单粗暴,没有经过优化,大家如有意见,欢迎评论,谢谢。