2011-08-28 50 views
0

我对使用JavaScript解析XML数据很陌生,所以请原谅我的问题是否有点简单。根据当前日期获取XML文件

我使用标准的xmlHTTPRequest解析来自JavaScript的XMl文件中的数据。我从中抽取XML数据的URL的格式如下所示:“http://example.com/abcyymmdd-data.xml”。 url的(yymmdd)部分表示日期,文件每天更新​​。我想在URL中插入一个javascript代码来代替yymmdd,以便每天都能分析一个新的XML文件。我怎么能做到这一点?

感谢, 卡洛斯

回答

2

您可以检索当前日期yymmdd格式,如:

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

感谢您的提示。我可以按照您的建议格式化日期,但当我将“date_string”var插入到xml url时,仍然无法检索xml数据。下面是我输入的内容:** bold ** var url =(location.toString().indexOf('file://')!= -1)? 'http://example.com/abc'+ date_string +“-data.xml'; ** bold **然后我用** bold来调用这个var ** xmlhttp.open(GET,url,true)** bold **不知道我哪里错了,但它可能是一个简单的错误在m语法。 – Carlos

+1

@Carlos:使用'alert(url)'或[FireBug](http://getfirebug.com/)查看你的'url'包含的内容。顺便说一句,你可以使用反引号\'在注释中引用代码。 – Andomar

+0

我终于得到它的工作。我必须使用单引号而不是双引号来插入'+ date_string +'变量......非常感谢您的帮助。这里是我的最终代码'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 = stateChange; \t \t xmlhttp.open('GET',url,true,);'code' – Carlos

3

第一,得到今天的日期,用途:

var today = new Date; 

要获得的组件,使用:

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

现在,你需要它的格式yymmdd。因此,您需要从年份中删除两个第一个数字,并且如果需要,可以在日期和月份前添加0

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 
} 

然后:

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 

然后,在你XHR,使用:

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

+1好解释 – Andomar

+0

@pimvbd:感谢您的快速响应。我试图插入您的代码,但我无法通过此方法检索xml数据。这很可能是我的错误,因为我不确定如何实现代码。我看到的唯一区别可能是导致问题是我使用“xmlhttp.open(GET,url,true)”,并且url是一个var(即“var url =(location.toString()。indexOf('file: //')!= -1)?'http://example.com/abc110828-data.xml':'abc110828-data.xml';“这个var是因为我可能想在本地存储xml,所以最后的下载是可以离线使用的。谢谢,Carlos。 – Carlos

+0

@Carlos:试着在':'前面'''试试removig,因为表达式还没有结束呢 – pimvdb