php xpath tablo ayrıştırma soru

0 Cevap php

Ben php XPath kullanarak ayrıştırma olduğum bir tablo içinde yuvalanmış bir kaç tablo var.

Ben birkaç yöntem çağrıları karşısında kavramsal birimler halinde kodunu ayrılıyorum ve bu yapı iç içe tablolar olmadan diğer senaryolarda mükemmel bir çalışma olmuştur çünkü ben XPaths bir dizi kullanıyorum.

İşte kod:

// create a host DOM document
$dom = new DOMDocument();

// load the html string into the dom
$dom->loadHTML($html_string);

// make an xpath object out of the dom
$xpath = new DOMXpath($dom);

// run query to extract the rows from the master table
$context_nodes = $xpath->query('//table[@id="id1"]/tr[position()>1]');

// parse data from the individual tables nested in each master table row
foreach($context_nodes as $context_node){
    $interesting_nodes[] = $xpath->query('table[2]/tr[td[2]]', $context_node);
}

Oluşan $ interesting_nodes dizisi boş DOMNodeLists içerir.

$ Context_nodes DOMNodeList geçerli veriler içeriyor. Her $ context_node html içeriği bu gibi görünüyor:

<td>
    <table></table>
    <table>
        <tr>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
        </tr>
    </table>
</td>

Ben aşağıdaki basitleştirilmiş $ intesting_nodes herhangi bir tabloyu maç için sorgu çalıştı:

$intesting_nodes[] = $xpath->query('table', $context_node);

Ama yine aynı boş DOMNodeLists üretir.

And now the interesting part

Ben çalışırken bir $ interesting_nodes şöyle sorgulamak:

$interesting_nodes[] = $xpath->query('*[2]/*[*[2]]', $context_node);

Sonra her şey çalışıyor {[(0)];} Ben gelen "masa", "tr", ya da "td" etiketleri ile any "*" yerine eğer, o zaman sorgu bir kez daha kırılır.

Başkasının bu davranış ve php göreli XPath sorguları deneyimi var mı?

Ben çok daha kesin bir sorgu kullanmak mümkün olmak istiyorum, ve oldukça mutlak yapma daha gibi sorgu göreli tutmak mümkün olmayı tercih ederim.

0 Cevap