2014-11-23 100 views
0

我試圖將API生成的XML文件與(當前)靜態網頁連接起來,該網頁可以在oliverpwilson.github.io/tubular處找到。我大致結構,像這樣一個HTML文件:使用JavaScript將HTML內容替換爲來自外部XML文件的內容?

<div> 
    <span id="content">No Content Yet</span> 
</div> 

和一些JavaScript在<header>以確定<span>發生的事情:

<script> 
     function myFunction() { 
     document.getElementById("content").innerHTML = "Some Content Now!"; 
</script> 

<body onload="myFunction">因此觸發負載。

這一切正常。

我想要做的是使用通過API(Transport for London API,準確而言)生成的外部XML文件,以URI http://cloud.tfl.gov.uk/TrackerNet/LineStatus託管,使用javascript解析信息並使用該信息進行更新什麼我

document.getElementById("content").innerHTML = "Some Content Now!";

顯示引號內,即替換「有些內容現在!」無論XML文件生成的內容是否存在於某個標記內,例如<Status Description="Good Service">,其中「Some Content Now!」將被「良好的服務」所取代。

我希望廣義上有道理。我不知道如何去做這個,所以任何幫助將不勝感激。

+0

請參見https://developer.mozilla.org/en-US/docs/Web/Guide/Parsing_and_serializing_XML – 2014-11-23 17:32:56

+0

切線方面,如果您的輸入/輸出變得複雜,XSLT可能會有事要看。 – 2014-11-23 17:53:10

回答

1

我看了你的網站你發佈了什麼。在那裏,你有這樣的元素,這些元素具有以下結構:

div xxx-line 
|--- div details 
     |--- div status 
     |--- div details 

有了這些,你有你的JavaScript想什麼直接的選項的機會。 你可以通過'status'或'details'中的id來調用它,或者你可以通過類'div xxx-line'來感覺自由。

你可以用下面的代碼讀取XML:

if (window.DOMParser) 
{ 
    parser=new DOMParser(); 
    xmlDoc=parser.parseFromString(txt,"text/xml"); 
} 
else // Internet Explorer 
{ 
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async=false; 
    xmlDoc.loadXML(txt); 
} 

有了這個,你從節點的信息:與變量狀態或細節,你可以更換

//Get status 
var status = xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue; 

//Get details 
var details = xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue; 

div的內容