我有我需要使用JSoup解析(我的語言是Java)完全相同的結構的HTML列表。這裏有一個例子:使用JSoup解析HTML列表創建樹結構
<div class="ulist">
<ul>
<li><p>Healthy Food</p></li>
<div class="ulist">
<ul>
<li><p>Vegetables</p></li>
<div class="ulist">
<ul>
<li> <p>Carrots</p> </li>
<li> <p>Lettuce</p> </li>
<li> <p>Cucumbers</p> </li>
</ul>
</div> </li>
<li> <p>Fruits</p>
<div class="ulist">
<ul>
<li> <p>Apples</p> </li>
<li> <p>Bananas</p> </li>
<li> <p>Canned Fruits</p></li>
<div class="ulist">
<ul>
<li> <p>Peaches</p> </li>
<li> <p>Pears</p> </li>
</ul>
</div>
</ul>
</div>
</li>
</ul>
</div>
</ul>
</div>
由於該數據基本上是一個樹的數據結構,我希望能夠分析它,並創建一個從數據的樹。我在使用JSoup時遇到了困難,因爲看起來您無法像預期的那樣真正遍歷DOM。
例如,代碼如下所示:
Elements elList = doc.select("ul");
for (Element el: elList){
Elements subList = el.select("ul");
for (Element subEl : subList){
//do whatever you need to do
}
}
產生如下的結果,它顯示它不是「走」或「穿越」了,而是不斷從文檔中選擇同樣的事情:
什麼是將遍歷此列表並將其放置在樹結構中的代碼是什麼?
遍歷DOM的問題是什麼? – RealSkeptic 2015-01-20 18:59:56
我認爲問題在於我,我不知道如何正確使用JSoup來遍歷DOM。基本上問題是調用的結果像'Element list = doc.select(「ul」)。first();',如果我再次對結果調用相同的代碼'Element subList = list.select(「ul 「).first();',我得到了與第一次調用相同的結果。我想我期望圖書館只「消費」選定的部分。不知道這是否有道理。 – Monochrome 2015-01-20 19:10:53