## # 第一步:根據文件名字找到文件所在文件的類路徑
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);
}
詳細解析
遍歷元素,獲取元素所在文件中的標簽的名字,然后對標簽里面的內容進行封裝成類對象。