package jalview.io; import jalview.datamodel.Sequence; import java.io.IOException; import java.util.Iterator; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class HtmlFile extends AlignFile { public static final String FILE_EXT = "html"; public static final String FILE_DESC = "HTML"; public HtmlFile() { super(); } public HtmlFile(FileParse source) throws IOException { super(source); } public HtmlFile(String inFile, String type) throws IOException { super(inFile, type); } @SuppressWarnings("unchecked") @Override public void parse() throws IOException { try { StringBuilder htmlData = new StringBuilder(); String currentLine; while ((currentLine = nextLine()) != null) { htmlData.append(currentLine); } Document doc = Jsoup.parse(htmlData.toString()); Element content = doc.getElementById("seqData"); String alignmentJsonString = "{\"seqs\":" + content.val() + "}"; JSONParser jsonParser = new JSONParser(); JSONObject alignmentJsonObj = (JSONObject) jsonParser.parse(alignmentJsonString); JSONArray seqJsonArray = (JSONArray) alignmentJsonObj.get("seqs"); for (Iterator sequenceIter = seqJsonArray.iterator(); sequenceIter.hasNext();) { JSONObject sequence = sequenceIter.next(); System.out.println(sequence.get("id").toString() + " " + sequence.get("name")); String sequcenceString = sequence.get("seq").toString(); Sequence seq = new Sequence(sequence.get("name").toString(), sequcenceString, 0, sequcenceString.length()); seqs.add(seq); } } catch (Exception e) { e.printStackTrace(); } } @Override public String print() { throw new UnsupportedOperationException("Print method of HtmlFile not yet supported!"); } }