Olmadan döngü Erişim SimpleXMLElement özellikleri

0 Cevap php

Ben SimpleXMLElement XPath yaklaşımı yanı sıra DOMDocument XPath yaklaşımı hem de denedim, ama düz iki şekilde şeyler almak için görünmüyor olabilir, ama en azından SimpleXMLElement rota ile, aslında sonuçları VAR yazdırmak ve neler görebiliyordu. (Aşağıda Sonuçları gör)

Ben sonuçları döngü kalmadan XPath querys kullanmak istiyorum. Ben sadece bir dizi gibi sonuçlara erişmek istiyorum, ama sanırım sorun bu diziyi sonuçları içinde SimpleXMLElement nesneler geçmiş almak gibi görünüyor.

Ben belirli bir sınıfa div bir HTML pasajını sorgulama ediyorum. Orada bu özel sınıfın birkaç divs olsa, bu yüzden hepsi ince olduğu, iade ediliyor. İşte istediğim bu. Ama şimdi sadece çoğu çocuk divs var, her erişmek ve kendi değerlerini almak istiyorum.

Burada XPath sorgusu çalıştırmak için kullanıyorum çizgi:

$stats = $xml->xpath("//div[contains(@class,'line-item')]");

İşte sonuçları print_r () çıktısı:

// Output of $stats
Array
(
    [0] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [class] => line-item
                )
            [div] => Array
                (
                    [0] => Total items shipped
                    [1] => 50
                )
        )
    [1] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [class] => line-item-total
                )
            [div] => Array
                (
                    [0] => TOTAL EARNINGS *
                    [1] => $267.23
                )
        )
    [2] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [class] => line-item-links
                )
            [a] => View full report
        )
    [3] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [class] => line-item
                )
            [div] => Array
                (
                    [0] => Ordered items
                    [1] => 42
                )
        )
    [4] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [class] => line-item
                )
            [div] => Array
                (
                    [0] => Clicks
                    [1] => 428
                )

        )
    [5] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [class] => line-item
                )
            [div] => Array
                (
                    [0] => Conversion
                    [1] => 9.81%
                )
        )
    [6] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [class] => line-item-links
                )
            [a] => View full report
        )
)

Ben her değer nerede olduğunu beri Şimdi, ben sadece bu yüzden gibi onlara erişmek düşündüm:

$y['clicks'] = "{$stats[4]['div'][0]}: {$stats[5]['div'][1]}\n";
$y['ordered'] = "{$stats[3]['div'][0]}: {$stats[4]['div'][1]}\n";
$y['shipped'] = "{$stats[0]['div'][0]}: {$stats[0]['div'][1]}\n";
$y['conversion'] = "{$stats[5]['div'][0]}: {$stats[6]['div'][1]}\n"; // Doesn't work
$y['rate'] = "{$stats[1]['div'][0]}: {$stats[4]['div'][1]}\n"; // Neither encased in {}
$y['total'] = 'Yesterday\'s Earnings: '.$stats[1]['div'][1]."\n"; // Nor as concatenated

Belirgin sorun SimpleXMLElement nesnesi $ istatistiklerini dizisindeki öğeler arasında sıkışmış olan ve alt kalemlerinin değerleri ben bu SimpleXMLElement nesnelerin arkasına saklanıyor, hangi sonra ben ['div'] dizidir.

Peki nasıl $ istatistiklerini dizi döngü olmadan, SimpleXMLElement nesnelerin ötesinde bu değerleri almak istiyorsunuz? Zaten yukarıda denedim ne benzer bir şey?

0 Cevap