DOMXPath kullanarak HTML belgeden tüm bağlantıları almak için nasıl

2 Cevap php

Bu kodu vardır

  <?PHP
      $content = '<html>
      <head>
         <title></title>
      </head>
      <body>
         <ul>
            <li style="border:0px" class="list" id="list1111">
            <a href="http://www.example.com/" style="font-size:10px" class="mylinks">
            <img src="logo.gif" width="235" height="97" alt="logo example" border="0"/>
            </a>
            </li>

            <li style="border:0px" class="list" id="list2222">
            <a href="http://www.example.com/2222222" class="mylinks">
            second link
            </a>
            </li>                                 
          </ul>
        </body>
        </html> ';

    $doc = new DOMDocument;
    $doc->loadhtml($content);
    $xpath = new DOMXPath($doc);
    $hrefs = $xpath->evaluate("/html/body//a");
    for ($i = 0; $i < $hrefs->length; $i++) {
            $href = $hrefs->item($i);
            $url = $href->getAttribute('href');                
            echo $url ."<br />";
    }
    ?>

this code is very simple it just retrieve all anchor tags from an HTML document I found it here

ne istediğinizi daha karmaşık olduğunu :)

Her çapa etiketi için tüm etiketleri çapa + tüm çocuklar ve ebeveynler ve nitelikleri almak istiyorum

İlk çapa etiketi alınırken böyle bir şey olduğunda, örneğin ben istiyorum sonucudur

         1-html 
         2-body 
         3-ul 
         4-li(class:list,id:list1111,style:etc....) 
         5-a(href:www.example.com etc..) 
         6-img(width:257 etc)

Her çapa etiketi için en düşük seviyeye üst düzeyinden yineleme istiyorum ve ben her etiket için öznitelikleri almak mümkün olmak istiyorum

Çünkü "DOMXPath" Benim için çok zor: (ancak biraz sizin için kolay olabilir

Eğer herhangi bir soru var mı?

Bu sorunu çözmek için nasıl biliyor musunuz?

Şimdiden teşekkürler

2 Cevap

Eğer yinelemek gerekiyveya kalmaz XPaths bunu yapmak gerekir. Önemli özelliklerini çekin li gibi bir XPath'i kullanabilirsiniz:

//li/@class

veya

//li/@id

size kullanabileceğiniz bir iterable nesneyi vermelidir.

Here's some mveyae infveyamation on XPaths

Belki basit bir XSLT stil yazmak gerekir. <a> etiketi, ve sonra ataya :: Maç * tüm üst düğümleri, çocuk verecekti :: * size tüm çocuklara verecek - XSLT'DE aracılığıyla basit XPath sözdizimi kullanılarak çok daha fazla güce sahip olacaktır.