DOMDocument:一些基本问题

时间:2011-08-30 15:32:10

标签: php domdocument

这是一个代码:

<?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>";
    }
}

&GT;

请以示例教我:

  1. $ html中的firstNode和lastNode是什么?如何在这些节点内打印文本?
  2. 为什么代码的第二部分什么都不打印?
  3. <h2>header 2</h2>这是一个单一的节点吗?
  4. textContet和nodeValue有什么区别?
  5. textContent,item()和childnodes是什么意思?
  6. div#one包含多少个孩子颂歌?
  7. $ dom的childNodes是哪个?我怎样才能打印他们的名字?
  8. 此代码第3部分的错误是什么?两条线都显示相同!
  9. 我已经从here阅读了@ Gordon的回答,但我需要一些明确的例子。

1 个答案:

答案 0 :(得分:1)

  1. 两者都是<div id="one">注意所有h1,h2和blockquote节点都是这个节点的子节点。
  2. $dom->getElementById(0);将返回第一个元素。 $dom->getElementById(1);将返回第二个(如果存在)id是此标记中<div id="one">
  3. 的属性名称
  4. 不明白这个问题。单节点是什么意思?
  5. textContent:childNodes中的所有文本(http://www.w3schools.com/dom/prop_element_textcontent.asp); nodeValue:节点的值,具体取决于其类型http://www.w3schools.com/dom/prop_document_nodevalue.asp
  6. 继续阅读... http://www.w3schools.com/htmldom/default.asp
  7. 我把剩下的留给其他SO用户。