SAXを使用して、ツリー内で最大の深さのノード名を表示するにはどうすればよいですか。アルゴリズムは私が概念を理解するのに良いでしょう。
たとえば、startelement、endelement、startdocument、enddocumentメソッドで何をすべきか、タスクを実行するためにどの変数が必要ですか?
ありがとうございました!
これは、よりアルゴリズム的な問題です。この問題を解決するために注意すべきことは、startelementイベントがあるたびに、1レベル下に移動し、endelementイベントがあるときに、1レベル上に移動するということです。アイデアは変数(レベル)を持ち、開始要素ごとにそれを増やし(レベル++)、終了要素ごとにそれを減らします(レベル-)。これは、ノードの終了要素を見つけるときに、レベル変数の値がノードの深さになることを意味します。次に、あなたがしなければならない唯一のことは、最大値を追跡することです。擬似コードバージョンは次のようになります。
startdocument -> level=0;max=0;
startelement -> level++
endelement -> if (level>max) max=level; level--;
endocument -> System.out.println(max)
それが役に立てば幸い。