package com.yeshi.buwan.util;
|
|
import com.yeshi.buwan.vo.baidu.BaiDuCPUTypeVO;
|
import org.xml.sax.Attributes;
|
import org.xml.sax.SAXException;
|
import org.xml.sax.helpers.DefaultHandler;
|
|
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.SAXParser;
|
import javax.xml.parsers.SAXParserFactory;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class BaiDuCPUUtil {
|
|
/**
|
* 获取咨询的所有类型
|
*
|
* @return
|
*/
|
public static List<BaiDuCPUTypeVO> getNewsTotalTypes() {
|
InputStream inputStream = BaiDuCPUUtil.class.getClassLoader().getResourceAsStream("baidu/news.xml");
|
return parse(inputStream, "total");
|
}
|
|
/**
|
* 获取咨询安全类型
|
*
|
* @return
|
*/
|
public static List<BaiDuCPUTypeVO> getNewsSafeTypes() {
|
|
InputStream inputStream = BaiDuCPUUtil.class.getClassLoader().getResourceAsStream("baidu/news.xml");
|
return parse(inputStream, "safe");
|
}
|
|
/**
|
* 获取视频的所有类型
|
*
|
* @return
|
*/
|
public static List<BaiDuCPUTypeVO> getVideosTotalTypes() {
|
InputStream inputStream = BaiDuCPUUtil.class.getClassLoader().getResourceAsStream("baidu/videos.xml");
|
return parse(inputStream, "total");
|
}
|
|
/**
|
* 获取视频安全类型
|
*
|
* @return
|
*/
|
public static List<BaiDuCPUTypeVO> getVideoSafeTypes() {
|
|
InputStream inputStream = BaiDuCPUUtil.class.getClassLoader().getResourceAsStream("baidu/videos.xml");
|
return parse(inputStream, "safe");
|
}
|
|
private static List<BaiDuCPUTypeVO> parse(InputStream inputStream, String startKey) {
|
List<BaiDuCPUTypeVO> typeVOList = new ArrayList<>();
|
SAXParserFactory factory = SAXParserFactory.newInstance();
|
SAXParser saxParser = null;
|
try {
|
saxParser = factory.newSAXParser();
|
|
saxParser.parse(inputStream, new DefaultHandler() {
|
|
String tagName = "";
|
BaiDuCPUTypeVO vo = null;
|
boolean start = false;
|
|
@Override
|
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
|
tagName = qName;
|
if (qName.equalsIgnoreCase(startKey)) {
|
typeVOList.clear();
|
start = true;
|
} else if (qName.equalsIgnoreCase("name")) {
|
|
} else if (qName.equalsIgnoreCase("id")) {
|
|
} else if (qName.equalsIgnoreCase("item")) {
|
vo = new BaiDuCPUTypeVO();
|
}
|
}
|
|
@Override
|
public void endElement(String uri, String localName, String qName) throws SAXException {
|
super.endElement(uri, localName, qName);
|
tagName = "";
|
if (qName.equalsIgnoreCase(startKey)) {
|
start = false;
|
} else if (qName.equalsIgnoreCase("item") && vo != null) {
|
if (start)
|
typeVOList.add(vo);
|
}
|
}
|
|
@Override
|
public void characters(char[] ch, int start, int length) throws SAXException {
|
super.characters(ch, start, length);
|
String str = new String(ch, start, length);
|
if (tagName.equalsIgnoreCase("name")) {
|
vo.setName(str);
|
} else if (tagName.equalsIgnoreCase("id")) {
|
vo.setId(Integer.parseInt(str));
|
}
|
}
|
});
|
|
} catch (ParserConfigurationException e) {
|
e.printStackTrace();
|
} catch (SAXException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return typeVOList;
|
}
|
|
|
}
|