0

SAXを使用して、ツリー内で最大の深さのノード名を表示するにはどうすればよいですか。アルゴリズムは私が概念を理解するのに良いでしょう。

たとえば、startelement、endelement、startdocument、enddocumentメソッドで何をすべきか、タスクを実行するためにどの変数が必要ですか?

ありがとうございました!

4

1 に答える 1

1

これは、よりアルゴリズム的な問題です。この問題を解決するために注意すべきことは、startelementイベントがあるたびに、1レベル下に移動し、endelementイベントがあるときに、1レベル上に移動するということです。アイデアは変数(レベル)を持ち、開始要素ごとにそれを増やし(レベル++)、終了要素ごとにそれを減らします(レベル-)。これは、ノードの終了要素を見つけるときに、レベル変数の値がノードの深さになることを意味します。次に、あなたがしなければならない唯一のことは、最大値を追跡することです。擬似コードバージョンは次のようになります。

 startdocument -> level=0;max=0;
 startelement  -> level++
 endelement    -> if (level>max) max=level; level--; 
 endocument    -> System.out.println(max)

それが役に立てば幸い。

于 2012-05-15T11:24:13.900 に答える