2016-07-19 38 views
2

我一直在遍尋網絡搜索DOM樹的簡單解釋和理解父,子,兄弟關係,並沒有找到我可以遵循的簡單解釋。 我希望這裏有人能夠用簡單的語言。解釋HTML DOM樹>子節點概念簡單

比方說,我們有一個樹遵循

<div class='DOM> 
    <div class='DOM_A'> 
     <p class='DOM_A_1'>some text</p> 
    </div> 
    <div class='DOM_B' 
     <div class='DOM_B_1'> 
     <h1 class='DOM_B_1_1>some heading</h1> 
     <p class='DOM_B_1_2>some text</p> 
     </div> 
    </div> 
</div> 

問題

  • 什麼會DOM_B_1_2是(孩子)相對於DOM?
  • DOM_B_1_2與DOM_B有什麼關係?
  • 把它用微笑HTML DOM遍歷DOM樹的情況下,你會怎麼寫,因此使用該兒童或以下的childNodes:

問題

$DOM_B_1_2 = @$html->find('div.DOM', 0)->children(?)->plaintext; 
$DOM_B_1_2 = @$html->find('div.DOM_B', 0)->children(?)->plaintext; 
+0

爲什麼不'div.DOM div.DOM_B p.DOM_B_1_2'那麼你得到的元素,沒有更多的' - >兒()'方法使用 – Ghost

+0

感謝@Ghost,上述不是一個真正的例子不幸的是,我只是想了解兒童是如何工作的,因爲有些情況下我需要使用它們(即使正如你所說,在上面的例子中這樣做很奇怪) – Jacob

回答

2

我建議直接指向你想要的元素:

div.DOM div.DOM_B p.DOM_B_1_2 

所以你只是把它放在select或:

$DOM_B_1_2 = $html->find('div.DOM div.DOM_B p.DOM_B_1_2', 0); 
echo $DOM_B_1_2; 

你應該選擇->children()路線,您可以鏈接它來獲取該元素:

$e = $html->find('div.DOM', 0)->children(1)->children(0)->children(1); 
echo $e->innertext; 

拿筆記索引從零開始,因此第一個孩子掉進指數爲零。

這裏有一個例證:

<div class='DOM'> // parent div.DOM ---> A 
    <div class='DOM_A'> 
     <p class='DOM_A_1'>some text</p> 
    </div> 
    <div class='DOM_B'> // children(1) ---> B 
     <div class='DOM_B_1'> // children(0) ---> C 
     <h1 class='DOM_B_1_1'>some heading</h1> 
     <p class='DOM_B_1_2'>some text</p> // children(1) ---> D 
     </div> 
    </div> 
</div> 

    // A   // B  // C   // D 
('div.DOM', 0)->children(1)->children(0)->children(1) 
+0

謝謝那回答了我的問題 – Jacob