Эй, ребята, мне нужно определить, правильно ли задан HTML-документ.
Мне просто нужна простая реализация, использующая только классы API ядра Java, то есть никаких сторонних программ, таких как JTIDY или что-то в этом роде. Благодаря.
На самом деле, что именно нужно, так это алгоритм, который сканирует список тегов. Если он находит открытый тег, а следующий тег не соответствует соответствующему тегу закрытия, то это должен быть другой открытый тег, который в свою очередь должен иметь свой закрывающий тег в качестве следующего тега, а если нет, то это должен быть другой открытый тег его соответствующий закрывающий тег next и закрывающие теги предыдущих открытых тегов в обратном порядке следуют далее по списку. Я уже написал методы для преобразования тега в закрывающий тег. Если список соответствует этому порядку, он возвращает истину или ложь.
Вот скелетный код того, над чем я уже начал работать. Это не слишком аккуратно, но это должно дать вам, ребята, основную идею о том, что я пытаюсь сделать.
public boolean validateHtml(){
ArrayList<String> tags = fetchTags();
//fetchTags returns this [<html>, <head>, <title>, </title>, </head>, <body>, <h1>, </h1>, </body>, </html>]
//I create another ArrayList to store tags that I haven't found its corresponding close tag yet
ArrayList<String> unclosedTags = new ArrayList<String>();
String temp;
for (int i = 0; i < tags.size(); i++) {
temp = tags.get(i);
if(!tags.get(i+1).equals(TagOperations.convertToCloseTag(tags.get(i)))){
unclosedTags.add(tags.get(i));
if(){
}
}else{
return true;//well formed html
}
}
return true;
}