2011-08-30 80 views
-7

這裏是一個代碼:DOM文檔:一些基本問題

<?php 
$html = <<< HTML 
    <div id="one"> 
<h1>header 1</h1> 
<h2>header 2</h2> 
<blockquote> 
    <p>paragraph1</p> 
    <p>paragraph2</p> 
</blockquote> 
    <b>bold text1</b> 
<b>bold text2</b> 
</div> 
HTML; 



$dom = new DOMDocument(); 
@$dom->loadHTML($html); 

/******************3rd part*************/ 
    echo $dom->childNodes->item(0)->nodeName."<br>"; 
echo $dom->childNodes->item(1)->nodeName."<br>"; 


    /**********1st part**********/ 
$tags = $dom->getElementsByTagName("blockquote"); 
foreach($tags as $tag) 
{ 
    $ps=$tag->getElementsByTagName("p"); 
    foreach($ps as $p) 
    { 
     echo $p->nodeValue."<br>"; 
    } 
} 

/************2nd part**********/ 
$tags = $dom->getElementById("one"); 
foreach($tags as $tag) 
{ 
    $hs=$tag->getElementsByTagName("h1"); 
    foreach($hs as $h) 
    { 
     echo $h->nodeValue."<br>"; 
    } 
} 

>

舉例請教教我?

  1. 什麼是firstNode和lastNode在$ HTML?如何在這些節點內打印文本?
  2. 爲什麼代碼的第二部分不打印任何東西?
  3. <h2>header 2</h2>這是一個單節點嗎?
  4. textContet和nodeValue有什麼區別?
  5. textContent,item()和childnodes的概念是什麼?
  6. div#one包含多少個子代?
  7. 哪些是$ dom的childNodes?我怎樣才能打印他們的名字?
  8. 這段代碼的第三部分有什麼錯誤?兩條線都顯示相同!

我已閱讀@ Gordon的答案here,但我需要一些清晰的例子。

+0

對於這類問題感到抱歉。如果我違反規則..請隨時刪除此帖子 – qmaruf

+1

@qmaruf嘗試一次提問一個問題 - 您可能會發現您的一些問題之前已經被提問/回答。 –

+2

您正在將一個無效的HTML片段加載到DOM中 - 它對解析的結構非常挑剔,並且用'@' - 錯誤的形式抑制了錯誤。 –

回答

1
  1. 都是<div id="one">請注意,所有的h1,h2和blockquote節點都是此節點的子節點。
  2. $dom->getElementById(0);會返回第一個元素。 $dom->getElementById(1);會返回第二個(如果存在)id是此標記中屬性的名稱<div id="one">
  3. 不理解該問題。單節點是什麼意思?
  4. textContent:childNodes中的所有文本(http://www.w3schools.com/dom/prop_element_textcontent.asp);的nodeValue:節點的值,取決於其類型http://www.w3schools.com/dom/prop_document_nodevalue.asp
  5. 閱讀...這http://www.w3schools.com/htmldom/default.asp

我離開了剩下的其他SO用戶。