2016-07-19 2 views
2

Я искал всю сеть, чтобы получить простое объяснение дерева DOM и понять родительское, дочернее, родственные отношения и не нашел простого объяснения, которое я могу выполнить. Я надеюсь, что кто-то здесь сможет выразить это простым языком.Объяснение дерева 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?
  • Собирает в контексте обхода дерева DOM с помощью HTML 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 

Итак, вы просто положили его в выбранный или:

$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

thanks который ответил на мой вопрос – Jacob

Смежные вопросы