Bir RSS beslemesi doğrulanıyor

3 Cevap php

Kullanıcıların kendi RSS türlü basit bir okuyucu beslemelerini eklemek için izin veren bir uygulama üzerinde çalışıyorum. Şu anda, çözümleyici olarak xml_domit_rss kullanıyorum ama aslında ayrıştırma önce URL doğrulayarak eğer ben emin değilim. Pasif ayrıştırma gelen, ya bir hizmeti (feedvalidator.org) veya başka bir yöntemi (parse_url ()) kullanılarak ayrı sanki çevrimiçi kimden ne toplayabilir görünüyor.

Herkes XML_domit_rss doğrular ya nasıl içine bazı fikir ya ben ayrıştırıcı URL'yi göndermeden önce doğrulamak hangi bir yöntem var mı?

Şimdiden teşekkürler ...

3 Cevap

Bir RelaxNG şema ile RSS doğrulamak olabilir. Tüm farklı besleme biçimlerinin için şemalar çevrimiçi mevcut olmalıdır ...

(Değerlerini kodlamak için XML kullanmak ve dolayısıyla RSS / Atom beslemelerini) XML dosyalarının bağlamında doğrulanıyor elemanlar hangi çocuk elemanları, ne nitelikleri olabilir olabilir XML dosyasının beklenen yapısını (açıklayan bir belge şema kullanmak anlamına gelir Mevcut olduğunda, vb.)

Şemaya uymayan XML dosyaları - Şimdi bazı XML ayrıştırıcılar bir şema ve Bork (ayrıştırmak reddediyorum bu teknik bir terim olduğunu :-)) gerektirir. Şimdi keyfi RSS ayrıştırma nasıl görüyor, muhtemelen doğrulayarak atlayın ve RSS beslemesi ayrıştırma iyi çabayı en iyisidir. Ayrıca, (yeni bir yem eklediğinizde Google Reader bunu nasıl benzer) kullanıcıya ayrıştırma sonuçlarını göstermek ve sonuç ok görünüyor ise onu hakim izin verebilir.

Ne yazık ki the XML parser bu kod tarafından kullanılan maalesef ölmüş gibi görünüyor ve ben onun ayrıştırma ne kadar sıkı veya gevşek herhangi bir detay bulamıyorum ...

Bu benzer koşullar altında benim için çalıştı benim hızlı ve kirli bir çözümdür

foreach($sources as $source) {
    if(!$source["url"]) {
        continue;
    }

    $rss = curl_request($source["url"]);
    $rss = str_replace('&', '&', $rss);

    $parser = xml_parser_create();
    if(xml_parse($parser, $rss)) {
        $xmle = new SimpleXMLElement($rss);
    }
    else {
        $xmle = null;
        continue;
    }

    //other stuff here
}

I &, o yapmıyor SimpleXMLElement çözümleyici ve gibi kuruluşlar ile sorunlara neden olabilir, çünkü • veya — ile ve işaretleri değiştirmek için emin olun

xml_parse başarı 1 döndürür, böylece düz bir if deyimi ile kontrol edebilirsiniz. Sonra RSS beslemesi çapraz SimpleXMLElement kullanarak şeyler güzel ve kolay hale getirir.