0
如何使用SAX顯示樹中最大深度的節點名稱。 這個算法對我來說很好理解這個概念。SAX查找最大深度處的節點
例如我應該如何處理startelement,endelement,startdocument,enddocument方法以及我需要執行該任務的變量?
謝謝!
如何使用SAX顯示樹中最大深度的節點名稱。 這個算法對我來說很好理解這個概念。SAX查找最大深度處的節點
例如我應該如何處理startelement,endelement,startdocument,enddocument方法以及我需要執行該任務的變量?
謝謝!
這是更多的算法問題。爲了解決這個問題,需要注意的是每次你有一個起始元素事件,你已經下降了一級,當你有一個特殊事件時,你已經上了一級。這個想法是有一個變量(級別),併爲每個startelement增加它(level ++),併爲每個deslement降低它(level--)。這意味着當找到一個節點的命令時,等級變量的值將是該節點的深度。那麼你唯一需要做的就是跟蹤最大值。僞代碼版本將如下所示:
startdocument -> level=0;max=0;
startelement -> level++
endelement -> if (level>max) max=level; level--;
endocument -> System.out.println(max)
希望它有幫助。
謝謝,這真的很有幫助。但是這會將最大深度打印爲一個數字。顯示最深的節點。我想我可以有一個2d數組或哈希列表,並將節點名稱和級別存儲在命令中,然後用結束文檔中的節點名稱選擇最大級別。您認爲它是正確的嗎? – Ataman
似乎是一個很好的計劃。如果我是你,我不會跟蹤節點和層次,我會首先找到最大深度,然後使用sax解析器和層次變量再次通過xml,並在level == max處打印節點。 – Mircea
保留在最大深度處找到的一組節點名。當您發現新的最大值(級別>最大值)時,請清除該集合,然後添加此節點的名稱。當您找到與max(level = max)相同深度的新節點時,請將該節點的名稱添加到該集合中。 –