|
@ -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; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |