2011-08-28 58 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