Muszę przeanalizować źródło danych RSS (XML w wersji 2.0) i wyświetlić przeanalizowane szczegóły na stronie HTML.
javascript
html
rss
Thiru
źródło
źródło
Odpowiedzi:
Analizowanie kanału
Dzięki jQuery 's jFeed
(Nie polecaj tego, zobacz inne opcje).
Z wbudowaną obsługą XML jQuery
Dzięki jQuery i Google AJAX Feed API
Ale to oznacza, że jesteś ufny, że są online i osiągalni.
Budowanie treści
Po pomyślnym wyodrębnieniu potrzebnych informacji z kanału możesz utworzyć
DocumentFragment
s (document.createDocumentFragment()
zawierające elementy (utworzone za pomocądocument.createElement()
), które chcesz wstrzyknąć, aby wyświetlić swoje dane.Wstrzyknięcie zawartości
Wybierz element kontenera, który chcesz umieścić na stronie i dołącz do niego fragmenty dokumentu, a następnie po prostu użyj innerHTML, aby całkowicie zastąpić jego zawartość.
Coś jak:
lub:
Dane testowe
Korzystając z kanału tego pytania , który w chwili pisania tego tekstu podaje:
Egzekucje
Korzystanie z wbudowanej obsługi XML jQuery
Wzywając:
Wydruki:
Korzystanie z jQuery i interfejsów API Google AJAX
Wzywając:
Wydruki:
źródło
Kolejna przestarzała opcja (dzięki @daylight) i najłatwiejsza dla mnie (właśnie tego używam w SpokenToday.info ):
API Kanał Google bez użycia jQuery i tylko z 2 etapów:
Importuj bibliotekę:
Znajdź / Załaduj kanały ( dokumentacja ):
Aby przeanalizować dane, zapoznaj się z dokumentacją dotyczącą formatu odpowiedzi .
źródło
document.getElementById('image').style.backgroundImage = "url('" + src + "')";
Jeśli szukasz prostej i bezpłatnej alternatywy dla Google Feed API dla swojego widżetu rss, rss2json.com może być odpowiednim rozwiązaniem.
Możesz spróbować zobaczyć, jak to działa na przykładowym kodzie z dokumentacji API poniżej:
źródło
Dla każdego, kto to czyta (od 2019 r.), Niestety większość implementacji odczytu JS RSS teraz nie działa. Po pierwsze, interfejs API Google został zamknięty, więc nie jest to już możliwe, a ze względu na politykę bezpieczeństwa CORS generalnie nie można teraz żądać kanałów RSS między domenami.
Korzystając z przykładu z https://www.raymondcamden.com/2015/12/08/parsing-rss-feeds-in-javascript-options (2015) otrzymuję:
Access to XMLHttpRequest at 'https://feeds.feedburner.com/raymondcamdensblog?format=xml' from origin 'MYSITE' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Jest to poprawne i stanowi środek ostrożności ze strony końcowej witryny internetowej, ale teraz oznacza, że powyższe odpowiedzi prawdopodobnie nie zadziałają.
Moim obejściem będzie prawdopodobnie przeanalizowanie kanału RSS przez PHP i zezwolenie javascript na dostęp do mojego PHP, zamiast próbować uzyskać dostęp do samego kanału docelowego.
źródło
Jeśli chcesz użyć zwykłego interfejsu API javascript, dobry przykład znajduje się na https://github.com/hongkiat/js-rss-reader/
Pełny opis na https://www.hongkiat.com/blog/rss-reader-in-javascript/
Używa
fetch
metody jako metody globalnej, która asynchronicznie pobiera zasób. Poniżej znajduje się fragment kodu:źródło
Możesz użyć jquery-rss lub Vanilla RSS , który ma ładny szablon i jest bardzo łatwy w użyciu:
Zobacz http://jsfiddle.net/sdepold/ozq2dn9e/1/, aby zapoznać się z działającym przykładem.
źródło
Próbując znaleźć teraz dobre rozwiązanie, natknąłem się na wtyczkę FeedEk jQuery RSS / ATOM Feed , która świetnie radzi sobie z analizowaniem i wyświetlaniem kanałów RSS i Atom za pośrednictwem interfejsu API jQuery Feed . W przypadku podstawowego źródła RSS opartego na XML okazało się, że działa on jak urok i nie potrzebuje skryptów po stronie serwera ani innych obejść CORS, aby działał nawet lokalnie.
źródło
Byłem tak zirytowany wieloma mylącymi artykułami i odpowiedziami, że napisałem własny czytnik RSS: https://gouessej.wordpress.com/2020/06/28/comment-creer-un-lecteur-rss-en-javascript-how- to-create-a-rss-reader-in-javascript /
Możesz użyć żądań AJAX do pobrania plików RSS, ale zadziała to wtedy i tylko wtedy, gdy używasz proxy CORS. Spróbuję napisać własne proxy CORS, aby zapewnić bardziej niezawodne rozwiązanie. W międzyczasie to działa, wdrożyłem go na moim serwerze w systemie Debian Linux.
Moje rozwiązanie nie korzysta z JQuery, używam tylko zwykłych, standardowych interfejsów API Javascript bez bibliotek innych firm i powinno działać nawet z Microsoft Internet Explorer 11.
źródło