80,490
社区成员
发帖
与我相关
我的任务
分享public class TaskSaxParser {
public List<Task> parse(InputStream is) throws ParserConfigurationException, SAXException, IOException {
SAXParserFactory spFactory = SAXParserFactory.newInstance();
SAXParser parser = spFactory.newSAXParser();
TaskHandler handler = new TaskHandler();
parser.parse(is,handler);
return handler.getTasks();
}
class TaskHandler extends DefaultHandler{
boolean isRequirement = false;
List<Task> tasks ;
Task task;
StringBuilder sb;
public List<Task> getTasks(){
return tasks;
}
@Override
public void startDocument() throws SAXException {
super.startDocument();
tasks = new ArrayList<Task>();
sb = new StringBuilder();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
if(localName.equals("Task")){
task = new Task();
}
if(localName.equals("requirement")){
isRequirement = true;
}
if(localName.equals("Steps")){
isRequirement = false;
}
sb.setLength(0);
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if(localName.equals("priority")){
task.setPriority(Integer.parseInt(sb.toString()));
}
else if(localName.equals("taskName")){
task.setTaskName(sb.toString());
}
else if(localName.equals("service") && isRequirement){
task.getRequirement().add(sb.toString());
}
else if(localName.equals("service") && !isRequirement){
task.getSteps().add(sb.toString());
}
else if (localName.equals("Task")) {
tasks.add(task);
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
sb.append(ch,start,length);
}
}
}
public class Task {
private int priority;
private String taskName;
private List<String> requirement = new ArrayList<>();
private List<String> steps = new ArrayList<>();
public List<String> getRequirement() {
return requirement;
}
public void setRequirement(List<String> requirement) {
this.requirement = requirement;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public String getTaskName() {
return taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName;
}
public List<String> getSteps() {
return steps;
}
public void setSteps(List<String> steps) {
this.steps = steps;
}
public String toString(){
String requirementStr = "";
for(String str:requirement){
requirementStr = requirementStr + "**" +str;
}
return "priority:"+priority +" taskName:" +taskName + "requirementStr:" +requirementStr;
}
}