2011-08-28 3 views
0

Je suis très nouveau dans l'analyse des données XML avec javascript, alors excusez-moi si ma question est un peu simple.Obtenir le fichier XML, basé sur la date actuelle

Je suis en train d'analyser des données à partir d'un fichier XMl avec javascript en utilisant un xmlHTTPRequest standard. Le format de l'URL que je tire les données XML est quelque chose comme: "http://example.com/abcyymmdd-data.xml". La partie (yymmdd) de l'URL représente la date et les fichiers sont mis à jour quotidiennement. Je voudrais insérer un code javascript dans l'url à la place de yymmdd afin qu'un nouveau fichier XML soit analysé chaque jour. Comment pourrais-je y parvenir?

Merci, Carlos

Répondre

2

Vous pouvez récupérer la date actuelle dans yymmdd format comme:

var d = new Date(); 
var date_string = 
    d.getFullYear().toString().substring(2) + 
    (d.getMonth() < 9 ? "0" : "") + (d.getMonth() + 1) + 
    (d.getDate() < 10 ? "0" : "") + d.getDate(); 

Example at JS Fiddle.

+0

Merci pour le conseil. Je suis capable de mettre en forme la date comme vous l'avez suggéré, mais je ne peux toujours pas récupérer les données xml lorsque je branche la variable "date_string" à l'URL xml. Voici comment je l'ai entré: ** gras ** var url = (location.toString() .indexOf ('file: //')!= -1)? 'http://example.com/abc "+ date_string +" -data.xml'; ** gras ** J'ai ensuite appelé cette variable avec ** bold ** xmlhttp.open (GET, url, true) ** gras ** Je ne sais pas où je vais mal, mais c'est probablement une erreur simple dans la syntaxe m. – Carlos

+1

@Carlos: Utilisez 'alert (url)' ou [FireBug] (http://getfirebug.com/) pour voir ce que votre 'url' contient. Btw, vous pouvez utiliser backticks \ 'pour citer le code dans les commentaires. – Andomar

+0

J'ai finalement réussi à le faire fonctionner. J'ai dû utiliser des guillemets simples au lieu de guillemets pour insérer la variable '+ date_string +' ... merci beaucoup pour votre aide. Voici un exemple de mon code final 'code'var url = (location.toString() .indexOf ('file: //')! = -1)? 'http://example.com/abc'+date_string+'-data.xml': 'fcx' + date_string + '- data.xml'; \t xmlhttp = new XMLHttpRequest(); \t if (xmlhttp! = Null) { \t \t xmlhttp.onreadystatechange = étatChangement; \t \t xmlhttp.open ('GET', url, true,); 'code' – Carlos

3

En premier lieu, pour obtenir la date d'aujourd'hui, utilisez:

var today = new Date; 

Pour obtenir les composants, utilisez:

var date = today.getDate(); 
var month = today.getMonth() + 1; // caveat, starts at 0 
var year = today.getFullYear(); // 4 numbers (e.g. 2011) 

Maintenant, vous avez besoin dans le format yymmdd. Vous devez donc supprimer les deux premiers chiffres de l'année et ajouter un 0 à la date et au mois, si nécessaire.

function zeropad(number) { 
    var str = number.toString(); // number to string 

    return str.length === 1 // if length is 1 
      ? '0' + str  // prepend a 0 
      : str;   // otherwise return string without modification 
} 

Et puis:

var formatted = year.toString().substring(2) // only the string from the first two numbers and on 
       + zeropad(month)   // month with 0 prepended 
       + zeropad(date);   // date with 0 prepended 

Ensuite, dans votre XHR, utilisez:

xhr.open("GET", "http://example.com/abc" + formatted + "-data.xml", true); 
+0

+1 bien expliqué – Andomar

+0

@pimvbd: Merci pour la réponse rapide. J'ai essayé d'insérer votre code, mais je suis incapable de récupérer des données XML via cette méthode. C'est probablement une erreur de ma part, car je ne suis pas sûr de la façon de mettre en œuvre le code. La seule différence que je vois peut causer des problèmes est que j'utilise "xmlhttp.open (GET, url, true)" et l'URL est un var (ie "var url = (emplacement.toString(). IndexOf ('fichier: // ')! = -1)?' Http://example.com/abc110828-data.xml ':' abc110828-data.xml '; "Cette var est parce que je peux vouloir stocker le xml localement afin que le le dernier téléchargement est disponible pour une utilisation hors ligne Merci, Carlos – Carlos

+0

@Carlos: Essayez de supprimer que ';' avant ':' car l'expression ne s'y est pas encore terminée – pimvdb

Questions connexes