Meilleur auteur de réponses
Impossible d'importer un FLUX RSS

Question
-
Hello, je suis debutant et je commence avec ma premiere application Metro.
J'ai suivis ce tutoriel : http://msdn.microsoft.com/fr-FR/library/windows/apps/br211385.aspx mais a chaque fois que j'introduit mon flux RSS il m'indique que à cette ligne il y a une erreur :
// Get the blog title
feed.title = articleSyndication.selectSingleNode("/feed/title").text;Voici le lien du flux :
http://microsoftmag.eu/rss.xml
Merci de votre aide
Jeremy
From Spain- Déplacé Florin Ciuca vendredi 7 septembre 2012 10:08 (Origine :Développement d’applications de style Metro pour Windows 8)
Réponses
-
Bonjour,
L’erreur vous dit que la sélection de nœud ne retourne rien. C’est normal, vu que votre flux est construit d’une autre manière : plus précis il faut sélecter « /rss/channel/title » a place de « /feed/title », mais notez aussi que le node « /feed/entry/published » n’existe pas dans votre fichier XML et vous allez obtenir une autre erreur a la ligne suivante.
Donc vous avez deux possibilités : soit modifier le flux pour avoir le même format XML, soit modifié le code et les sélections faites pour accéder au nœud dont vous avez besoin.
Pour la deuxième variante, vous pouvez modifier les fonctions getBlogPosts et getItemsFromXML dans data.js avec :
function getBlogPosts() { // Walk the results to retrieve the blog posts getFeeds().then(function () { // Process each blog blogs.forEach(function (feed) { feed.dataPromise.then(function (articlesResponse) { var articleSyndication = articlesResponse.responseXML; // Get the blog title feed.title = articleSyndication.selectSingleNode("/rss/channel/generator").text; // Use the date of the latest post as the last updated date var ds = articleSyndication.selectSingleNode("/rss/channel/item/pubDate").text; feed.updated = "Last updated " + ds; // Get the blog posts getItemsFromXml(articleSyndication, blogPosts, feed); }); }); }); return blogPosts; } function getItemsFromXml(articleSyndication, blogPosts, feed) { // Get the info for each blog post var posts = articleSyndication.selectNodes("//item"); // Process each blog post for (var postIndex = 0; postIndex < posts.length; postIndex++) { var post = posts[postIndex]; // Get the title, author, and date published var postTitle = post.selectSingleNode("title").text; var postAuthor = post.selectSingleNode("dc:creator").text; var pds = post.selectSingleNode("pubDate").text; // Process the content so it displays nicely var staticContent = toStaticHTML(post.selectSingleNode("description").text); // Store the post info we care about in the array blogPosts.push({ group: feed, key: feed.title, title: postTitle, author: postAuthor, pubDate: pds, content: staticContent, backgroundImage: mediumGray }); } }
Et assurez-vous que vous affichez l’information correcte dans splitPage.html :
<div class="itemtemplate" data-win-control="WinJS.Binding.Template"> <img class="item-image" src="#" data-win-bind="src: backgroundImage; alt: title" /> <div class="item-info"> <h3 class="item-title win-type-ellipsis" data-win-bind="textContent: author"></h3> <h6 class="item-subtitle win-type-ellipsis" data-win-bind="textContent: title"></h6> <h4 class="item-description" data-win-bind="textContent: pubDate"></h4> </div> </div>
aussi que dans itemsPage.html :
<div class="itemtemplate" data-win-control="WinJS.Binding.Template"> <img class="item-image" src="#" data-win-bind="src: backgroundImage; alt: title" /> <div class="item-overlay"> <h4 class="item-title" data-win-bind="textContent: title"></h4> <h6 class="item-subtitle win-type-ellipsis" data-win-bind="textContent: updated"></h6> </div> </div>
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
- Marqué comme réponse Ciprian Duduiala jeudi 8 mars 2012 08:28
Toutes les réponses
-
Bonjour,
Pouvez-vous svp nous indiquer le message et le code d’erreur ?
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
-
Bonjour,
L’erreur vous dit que la sélection de nœud ne retourne rien. C’est normal, vu que votre flux est construit d’une autre manière : plus précis il faut sélecter « /rss/channel/title » a place de « /feed/title », mais notez aussi que le node « /feed/entry/published » n’existe pas dans votre fichier XML et vous allez obtenir une autre erreur a la ligne suivante.
Donc vous avez deux possibilités : soit modifier le flux pour avoir le même format XML, soit modifié le code et les sélections faites pour accéder au nœud dont vous avez besoin.
Pour la deuxième variante, vous pouvez modifier les fonctions getBlogPosts et getItemsFromXML dans data.js avec :
function getBlogPosts() { // Walk the results to retrieve the blog posts getFeeds().then(function () { // Process each blog blogs.forEach(function (feed) { feed.dataPromise.then(function (articlesResponse) { var articleSyndication = articlesResponse.responseXML; // Get the blog title feed.title = articleSyndication.selectSingleNode("/rss/channel/generator").text; // Use the date of the latest post as the last updated date var ds = articleSyndication.selectSingleNode("/rss/channel/item/pubDate").text; feed.updated = "Last updated " + ds; // Get the blog posts getItemsFromXml(articleSyndication, blogPosts, feed); }); }); }); return blogPosts; } function getItemsFromXml(articleSyndication, blogPosts, feed) { // Get the info for each blog post var posts = articleSyndication.selectNodes("//item"); // Process each blog post for (var postIndex = 0; postIndex < posts.length; postIndex++) { var post = posts[postIndex]; // Get the title, author, and date published var postTitle = post.selectSingleNode("title").text; var postAuthor = post.selectSingleNode("dc:creator").text; var pds = post.selectSingleNode("pubDate").text; // Process the content so it displays nicely var staticContent = toStaticHTML(post.selectSingleNode("description").text); // Store the post info we care about in the array blogPosts.push({ group: feed, key: feed.title, title: postTitle, author: postAuthor, pubDate: pds, content: staticContent, backgroundImage: mediumGray }); } }
Et assurez-vous que vous affichez l’information correcte dans splitPage.html :
<div class="itemtemplate" data-win-control="WinJS.Binding.Template"> <img class="item-image" src="#" data-win-bind="src: backgroundImage; alt: title" /> <div class="item-info"> <h3 class="item-title win-type-ellipsis" data-win-bind="textContent: author"></h3> <h6 class="item-subtitle win-type-ellipsis" data-win-bind="textContent: title"></h6> <h4 class="item-description" data-win-bind="textContent: pubDate"></h4> </div> </div>
aussi que dans itemsPage.html :
<div class="itemtemplate" data-win-control="WinJS.Binding.Template"> <img class="item-image" src="#" data-win-bind="src: backgroundImage; alt: title" /> <div class="item-overlay"> <h4 class="item-title" data-win-bind="textContent: title"></h4> <h6 class="item-subtitle win-type-ellipsis" data-win-bind="textContent: updated"></h6> </div> </div>
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
- Marqué comme réponse Ciprian Duduiala jeudi 8 mars 2012 08:28
-
-
Bonjour,
De rien J Svp n’oubliez pas utiliser l’option « Marquer comme réponse » pour le message qui vous a aidé résoudre votre problème pour clôturer le thread. Merci d’avance !
On vous attend avec autres questions sur les forums MSDN France.
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.