やあみんな、私は与えられたHTMLドキュメントが整形式であるかどうかを判断する必要があります。
JavaコアAPIクラスのみを使用する単純な実装が必要です。つまり、JTIDYなどのサードパーティのものは必要ありません。
実際に必要なのは、TAGのリストをスキャンするアルゴリズムです。オープンタグが見つかり、次のタグが対応するクローズタグではない場合は、別のオープンタグである必要があり、次のタグとしてクローズタグが必要です。そうでない場合は、別のオープンタグである必要があります。次に対応するクローズタグ、およびリスト上で次々に来る逆の順序で前のオープンタグのクローズタグ。リストがこの順序に準拠している場合は、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;
}