DOMElement Of Parent Node belirleyin

4 Cevap php

Ben PHP içine bir YouTube video yorumlar için benim C # kodu tercüme ediyorum. Sırayla düzgün bir yuva comment cevaplar Ben XML düğümleri yeniden düzenlemek gerekiyor. PHP Ben DOMDocument ve yakından C # XmlDocument karşılık DOMXPath kullanıyorum. Benim çeviri oldukça uzak kazanılmış ettik ama şimdi bir DOMElement üst düğümüne getting şaşırıp. Bir DOMElement a parent_node () özelliği yok, sadece bir DOMNode bu özelliği sağlar.

Yorum "in-cevap-için" bir bağlantı elemanının, ben cevaben bir açıklama altında yuva onu amacıyla üst düğüm almak gerekiyor dize merkezli bir önceki yorumuna bir cevap olduğunu belirledikten sonra:

// Get the parent entry node of this link element
$importnode = $objReplyXML->importNode($link->parent_node(), true);

4 Cevap

DOMElement DOMNode bir alt sınıfıdır, bu yüzden parent_node özelliği var. Sadece $ DomNode> parentNode kullanın; ana düğüm bulmak için.

Bu belgeye ithal edilmiş, ve bu nedenle henüz bir ebeveyne sahip değildir çünkü örnekte, $ ImportNode bir üst düğüm, null. Bunu bir ebeveyni önce başka bir elemana eklemek gerekir.

Bu saçma gelebilir, ama neden ilk etapta bir DOMNode nesne almak ve DOMNode özelliğini kullanmayı deneyin değil mi? Nasıl bir DOMElement nesnesi ile sona mı?

Ben kodu nasıl çalıştığını tamamen emin değilim, ama sizin kodda küçük bir hata var gibi görünüyor. Eğer söz yayınlanmıştır on line size $ link-> parent_node () var, ama tüm kodu ile cevap size $ link var pasajı ** s ** -> parent_node (). Ben s olması gerektiğini düşünmüyorum. Ayrıca, ben $ linki-> parentNode değil, $ link-> parent_node () kullanmak gerektiğini düşünüyorum.

Ben DOMElement nesnesi test etmek gerekir, çünkü "in-cevap-to" dizesi, öznitelik değerlerinin birinde. Ile çalışmak için bir XML yapısı çok zor yapmak için Google'a suçlama. Şimdi ben sadece DOMNodeList geçerli DOMNode gerektiğini düşünüyorum ve ben onun üst alabilirim?

$links = $domXPath->query('//tns:entry//tns:link');

// $links is a DOMNodeList. $link is a DomElement.
foreach ($links as $link)
{
    foreach ($link->attributes as $attrName => $attrNode) 
    {
        if (ereg("in-reply-to", $attrNode->nodeValue)) 
        {
            $intReplyCount = $intReplyCount + 1;
            echo $link->attributes->getNamedItem("href")->nodeValue . "\n";

            // STEP 1 - copy this reply node to a XmlDocument
            $objReplyXML->load('empty.xml');
            $temp = $objReplyXML->getElementsByTagName('feed')->item(0);

            // Get the parent entry node of this link element
            $importnode = $objReplyXML->importNode($links->parent_node(), true);
            $temp->appendChild($importnode);
        }
    }
}