嘿,伙计们,我需要确定给定的 HTML 文档是否格式正确。
我只需要一个简单的实现,只使用 Java 核心 API 类,即没有 JTIDY 之类的第三方东西。
实际上,真正需要的是一种扫描 TAGS 列表的算法。如果它找到一个打开标签,而下一个标签不是它对应的关闭标签,那么它应该是另一个打开标签,而它又应该将其关闭标签作为下一个标签,如果没有,它应该是另一个打开标签,然后其对应的关闭标签下一个,并且前一个打开标签的关闭标签以相反的顺序在列表中一个接一个地出现。如果列表符合此顺序,则返回 true 或 false。我已经编写了将标签转换为关闭标签的方法。
这是我已经开始工作的框架代码。它不是太整洁,但它应该让你们对我正在尝试做的事情有一个基本的了解。
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;
}