| 
																	
																	
																	
																 | 
																@ -0,0 +1,114 @@ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																package net.jrtechs.www; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																import java.util.ArrayList; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																import java.util.List; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																/** | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * Method for recursively defining HTML | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * @author Jeffery Russell 5-24-18 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																public class HtmlElement | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    /** Curses, I can't name it class **/ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    private List<String> clas; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    private List<String> id; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    private List<HtmlElement> elements; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    private String tag; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    private String contents; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    public HtmlElement(String html) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        clas = new ArrayList<>(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        id = new ArrayList<>(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        elements = new ArrayList<>(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        ArrayList<String> tags = this.parseIntoTags(html); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        this.pruneTags(tags); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if(tags.size() > 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    private ArrayList<String> parseIntoTags(String html) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        html = html.replace("\n", ""); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        html = html.replace("\t", ""); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        ArrayList<String> tags = new ArrayList<>(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        String temp = ""; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        for(int i = 0; i < html.length(); i++) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if(html.substring(i, i+1).equals("<")) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if(temp.length() > 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    tags.add(temp); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                temp = "<"; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            else if (html.substring(i, i+1).equals(">")) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                temp += html.substring(i, i+ 1); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                tags.add(temp); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                temp = ""; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            else | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                temp+= html.substring(i, i+ 1); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if(temp.length() > 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            tags.add(temp); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        return tags; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    private void pruneTags(List<String> tags) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        List<String> badStuff = new ArrayList<>(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        badStuff.add("<br>"); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        badStuff.add("<!--"); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        badStuff.add("-->"); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        badStuff.add("<!"); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        tags.forEach(t -> badStuff.forEach(b -> | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if(t.contains(b)) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                tags.remove(t); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        })); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    public List<HtmlElement> getElementsWithClass(String clas) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        List<HtmlElement> elems = new ArrayList<>(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        this.clas.stream().filter(s-> s.equals(clas)).forEach(s2->elems.add(this)); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        this.elements.forEach(e -> elems.addAll(e.getElementsWithClass(clas))); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        return elems; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    public List<HtmlElement> getElementsWithID(String ids) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        List<HtmlElement> elems = new ArrayList<>(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        this.id.stream().filter(s-> s.equals(ids)).forEach(s2->elems.add(this)); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        this.elements.forEach(e -> elems.addAll(e.getElementsWithID(ids))); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        return elems; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    public List<HtmlElement> getElementsWithTag(String tag) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        List<HtmlElement> elems = new ArrayList<>(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if(this.tag.equals(tag)) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            elems.add(this); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        this.elements.forEach(e -> elems.addAll(e.getElementsWithID(tag))); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        return elems; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																} |