1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
class Article {
constructor(title, link, description, pubDate, enclosureURL, guid){
Object.assign(this, {title, link, description, pubDate, enclosureURL});
}
toString(){ //Redéfinition de la méthode toString()
let str = "";
str += "Titre : " + this.title + "\n";
str += "Description : " + this.description + "\n";
str += "Url : " + this.link;
return str;
}
toHTML(){ //Définition d'une méthode toHTML() qui permet d'afficher l'article dans le HTML
let str = "";
//Titre et lien de l'article
str += "<a href =" + this.link + " target = _blank>" + this.title + "</a>";
//Description et date de publication de l'article
str += "<p class = date>Publié le " + days[this.pubDate.substring(0,3)] + " "
+ this.pubDate.substring(4,7) + " " + months[this.pubDate.substring(8,11)] + ", à " + this.pubDate.substring(17,19) + "h"
+ this.pubDate.substring(20,22) + "</p>";
//Image de l'article
str += "<img src =" + this.enclosureURL + " class = img_art>";
return str;
}
}
//Array qui contiendra les articles récupérés.
let arArticles = [];
//Array contenant les url des données XML à lire.
let arURL = ['https://www.lequipe.fr/rss/actu_rss_Football.xml', 'http://www.lemonde.fr/football/rss_full.xml', 'http://le10sport.com/fr/rss/football/'];
var init = function() {
document.getElementById("art").innerHTML = ""; //On rends la section vide.
//document.getElementById("b").onclick = alert('1');
for (var i = 0; i < arURL.length; i++) {
getArticleInfos(arURL[i]);
};
}
//Fonction qui parcours le XML et récupère les bonnes informations sur les articles.
function getArticleInfos(url) {
const xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onload = function() {
const
doc = xhr.responseXML,
items = Array.from(doc.querySelectorAll("item"));
magImg = doc.querySelector("image").querySelector("url").textContent; //On récupère le logo du magazine.
for (const item of items){
if ((item.querySelector("title").textContent.indexOf("PSG") != -1)) { //Séléction d'articles comportant 'PSG' dans le titre
let
ObjArticle = new Article(
item.querySelector("title").textContent,
item.querySelector("link").textContent,
item.querySelector("description").textContent,
item.querySelector("pubDate").textContent,
((item.querySelector("enclosure") != null) ? item.querySelector("enclosure").getAttribute("url") : "#"),
);
arArticles.push(ObjArticle);
};
}
const
elemMain = document.getElementById("art"),
elemArticle = document.createElement("article");
for (const obj of arArticles){
let article = elemArticle.cloneNode();
article.innerHTML = "<img src = " + magImg + " width = 119 height = 28> <br>" //On affiche le logo du magazine.
article.innerHTML += obj.toHTML(); //On affiche l'article.
elemMain.appendChild(article);
}
arArticles = [];
};
xhr.send(null);
}
window.onload = init; |
Partager