## # 第一步:根据文件名字找到文件所在文件的类路径
private String getFile(String fileName){
String path = null;
try{
path = this.getClass().getClassLoader().getResource(fileName).getPath();
logger.info("parse success");
}catch (Exception e){
logger.error("parse error");
}
return path;
}
## 第二步:解析文件方法指定的容器内
public static void parse(File file,List<Bean> contaier)throws Exception{
if(file.isDirectory()){
SAXReader reader = new SAXReader();
File[] listFiles =file.listFiles();
for(int i = 0;i < listFiles.length;i++){
if(listFiles[i].getName().endsWith(".xml")) {
Document document = reader.read(listFiles[i]);
parseXmlDatas(document.getRootElement().elements(), contaier, "user-permission-grade");
}else{
continue;
}
}
}
}
详细解析
首先判断该文件传入过来是否是文件夹,如果是文件夹,建立解析器,通过文件夹获取到下面的文件,然后遍历文件(首先判断该文件的后缀名是否已.xml),如果是已.xml结束,解析文件里面的内容 通过文档对象拉到文档对象(其实文档对象就是xml里面的内容),然后解析文件里面的内容
## 第三步:解析文件里面的内容
public static void parseXmlDatas(List<Element> elementList,List container,String firstElements){
for(Element dataElement: elementList){
if(dataElement.getName().equals(firstElements)){
List<Element> dataList = dataElement.elements();
parseXmlData(dataElement.elements(),container);
}
}
}
详细解析
拿到文件对象,第一步遍历标签,判断该根元素是否已指定的元素开始,如果是解析根元素下面的子元素,然后解析数据
public static void parseXmlData(List<Element> elementsList,List<Bean> container){
Bean bean = new Bean();
for(Element data:elementsList){
String name = data.getName();
if("name".equalsIgnoreCase(name)){
bean.setName((String)data.getData());
}else if("value".equalsIgnoreCase(name)){
System.out.println(name);
bean.setValue(Integer.parseInt((String)data.getData()));
} //获取属性 //data.attgit ributeValue("id")
}
container.add(bean);
}
详细解析
遍历元素,获取元素所在文件中的标签的名字,然后对标签里面的内容进行封装成类对象。