package es.uniovi.asw.trivial.parser.impl; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; import es.uniovi.asw.trivial.model.Pregunta; import es.uniovi.asw.trivial.model.Respuesta; import es.uniovi.asw.trivial.parser.Parser; public class ParserXML extends Parser { private String inputFilePath; /** * Constructor de la clase ParserXML * @param inputFilePath Archivo de entrada con formato XML */ public ParserXML(String inputFilePath) { this.inputFilePath = inputFilePath; } /** * Parsea el archivo pasado por parametro al constructor y devuelve una lista con las preguntas */ @Override public List<Pregunta> parse() { List<Pregunta> preguntas = new ArrayList<Pregunta>(); SAXBuilder saxB = new SAXBuilder(); File xml = new File(inputFilePath); Document document = null; try { document = (Document) saxB.build(xml); } catch (JDOMException jdom) { System.out.println( jdom.getMessage() ); } catch (IOException e1) { System.out.println( e1.getMessage() ); } Element rootNode = document.getRootElement(); List<Element> elements = rootNode.getChildren(); for(int i=0; i< elements.size(); i++){ Element element = (Element) elements.get(i); List<Element> childrens = element.getChildren(); List<Respuesta> respuestas = new ArrayList<Respuesta>(); String enunciado=""; String categoria=""; for(int j=0; j< childrens.size(); j++){ Element e = (Element) childrens.get(j); if(e.getName() == "categoria"){ categoria = e.getText(); } else if(e.getName() == "enunciado"){ enunciado = e.getText(); } else if(e.getName() == "respuesta"){ Respuesta respuesta = new Respuesta(e.getText(), Boolean.parseBoolean(e.getAttributeValue("valor"))); respuestas.add(respuesta); } } Pregunta pregunta = new Pregunta(enunciado, categoria, respuestas); preguntas.add(pregunta); } return preguntas; } }