我使用的Symfony履帶組件來解析HTML這樣的:由Symfony的履帶獲取第一級DOM元素
<div> //first level div
<div>1</div> //sub div
<div>2</div>
<div>
<div></div> // more levels and empty divs possible
</div>
</div>
<div>
<div>3</div>
<div>4</div>
</div>
值1 2 3 4可能會發生變化,或即使在空div不存在的,但也DIV可能包含subDivs等我被困在選擇第一級divs處理它們的階段。 Xpath的要求返回我第一個層次的div也細分值
$crawler = new Crawler($html);
foreach ($crawler->filterXPath('//div') as $domElement) {
var_dump($domElement->textContent);
}
回報
string(2) "12"
string(1) "1"
string(1) "2"
string(2) "34"
string(1) "3"
string(1) "4"
Xpath的請求應該看怎麼樣來防止子元素處理?
UPD:
實際困難DOM方案
<div> //first level div
<div>1</div> //sub div
<div>2</div>
</div>
<div>
<div>3</div>
<div>4
<div>5</div>
<a>6</a>
</div>
</div>
此DOM樹應該由第一級的div進行處理,並根據<a>
標籤的存在,使得一些邏輯。
你想要打印什麼? – drkthng
我需要爲它的內容處理每個firstLevel div,但我仍然從DOM樹中接收到所有DIV元素,包括subLevels。像「//div[./div]」這樣的解決方案是不適用的,因爲一些子div也可以有DIV。 – Tesmen
最後,我想將這個DOM轉換爲特定的數組,以進一步進行邏輯操作。 – Tesmen