2014-02-11 3 views
0

HTML5를 사용하는 JavaScript에서 작업 중이며 특정 측면이 있습니다. 나는 다음을 수행 할 :자바 스크립트 및 XML

  1. 는 (매우 쉽다) 자바 스크립트 온라인
  2. 테이블에 값을 입력 사용할 수있는 XML 파일에서
  3. 추출 정보를 사용하여 테이블을 작성

예 : linkhttp : //www.tfl.gov.uk/tfl/syndication/feeds/cycle-hire/livecyclehireupdates.xml에는 각 스테이션의주기 가용성에 대한 정보가 포함되어 있습니다. 1. 다음을 사용하여 테이블을 생성해야합니다. 두 개의 기둥. 하나는 'Station Name'이고 다른 하나는 'No of cycles available'입니다. 2. 위의 링크 만 입력으로 받아서 'Name'과 'nbEmptyDocks'의 값을 추출하는 코드를 작성해야합니다.

예 : <name> ABC,Surrey </name> <nbEmptyDocks> 10 </nbEmptyDocks>, ABC, Surrey 및 10 값을 어떻게 추출하여 각 열에 배치합니까?

<!DOCTYPE html> 
<html> 
<body> 
<script language= "JavaScript"> 
document.write('<br> <br><table width="50%" border="1">'); document.write('<th> Dock Station'); 
document.write('<th> Number of Cycles'); 
document.write('<br> <br><table width="50%" border="1">'); 
var Connect = new XMLHttpRequest(); 
Connect.open("GET", "http://www.tfl.gov.uk/tfl/syndication/feeds/cycle-hire/livecyclehireupdates.xml", false); 
Connect.setRequestHeader("Content-Type", "text/xml"); 
Connect.send(null); 
var TheDocument = Connect.responseXML; 
var station = TheDocument.childNodes[0]; 
for (var i = 0; i < 5; i++) 
{ 
var stations = station.children[i]; 
var name = stations.getElementsByTagName("name"); 
var avail = Customer.getElementsByTagName("nbEmptyDocks"); 
document.write("<tr><td>"); 
document.write(name[0].textContent.toString()); 
document.write("</td><td>"); 
document.write(avail[0].textContent.toString()); 
document.write("</td>"); 
document.write("</tr>"); 
} 
document.write (" </table>"); 
</script> 
</body></html> 

더 많은 내용을 읽으면서 위의 코드는 Chrome에서 작동하지 않을 수 있으며 Chrome에서 작동해야한다고 생각했습니다.

<html> 
<body> 
<script> 
var xmlDoc; 
var xmlloaded = false; 

function initLibrary() 
{ 
importXML("http:///www.somedomain.com/somesubdir/somefile.xml"); 
} 

function importXML(xmlfile) 
{ 
try 
{ 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET", xmlfile, false); 
} 
catch (Exception) 
{ 
var ie = (typeof window.ActiveXObject != 'undefined'); 
if (ie) 
{ 
xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
xmlDoc.async = false; 
while(xmlDoc.readyState != 4) {}; 
xmlDoc.load(xmlfile); 
readXML(); 
xmlloaded = true; 
} 
else 
{ 
xmlDoc = document.implementation.createDocument("", "", null); 
xmlDoc.onload = readXML; 
xmlDoc.load(xmlfile); 
xmlloaded = true; 
} 
} 

if (!xmlloaded) 
{ 
xmlhttp.setRequestHeader('Content-Type', 'text/xml') 
xmlhttp.send(""); 
xmlDoc = xmlhttp.responseXML; 
readXML(); 
xmlloaded = true; 
} 
} 
</script> 
</body> 
</html> 

하지만이 나던 중 하나

+2

그리고 얼마나 멀리 자바 스크립트를 사용 했습니까? 우리는 처음부터 당신을 위해 그것을 쓰지 않을 것입니다 – Johan

+1

[동일 출처 정책] (http : //en.wikipedia.) 때문에 사이트가 XML 파일을 호스트하지 않는 한 자바 스크립트만으로는 원하는 것을 할 수 없습니다. org/wiki/Same_origin_policy). – Danny

+0

@Johan 질문에 – user3297662

답변

0

내가 RSS를 잡아 페이지에 그것을 박살 구글의 API를 사용하는 것이 좋습니다 것입니다 작동하는 것 : 당신은 그들이 태그하지 말하는 것처럼 당신이 here.

0

을 시작할 수 있습니다 DOM 메소드를 통해 액세스하는 것은 매우 사소했습니다.

대신 각 <item><title> 및/또는 <description> 노드의 textContent을 가져와야합니다. 이 작업을 완료하면 간단한 문자열 처리가 필요할 것입니다. 그러나 문자열은 꽤 예측 가능합니다. 따라서 쉽게 알 수 있습니다 :

var text = "Max Temp: 8°C (46°F), Min Temp: 5°C (41°F), Wind Direction: SW, Wind Speed: 8mph, Visibility: good, Pressure: 1002mb, Humidity: 92%, Pollution: n/a, Sunrise: 08:13GMT, Sunset: 16:40GMT"; 

var pairs = text.split(", "), 
    info = {}; 
for (var i=0; i<pairs.length; i++) { 
    var pair = pairs[i].split(": "); 
    info[pair[0]] = pair[1]; 
} 
console.log(info) 
// {"Max Temp":"8°C (46°F)","Min Temp":"5°C (41°F)","Wind Direction":"SW","Wind Speed":"8mph","Visibility":"good","Pressure":"1002mb","Humidity":"92%","Pollution":"n/a","Sunrise":"08:13GMT","Sunset":"16:40GMT"} 
console.log(info["Max Temp"], info["Min Temp"]) 
// "8°C (46°F)", "5°C (41°F)" 
+0

완전히 이해했는지 확실하지 않습니다. 다시 의심을 설명해 보도록하겠습니다.
user3297662

+0

다시 의심을 설명해 드리겠습니다.
"Station Name"과 "Number of Bikes"라는 두 개의 열이있는 테이블을 생성해야한다고 가정합니다. XML은 link-eq : www.xyz.uk/update/source.xml에서 가져오고 예제 XML 파일은 ABC 12 7

(내 코드의 XML 파일을 포함하지 않고) 링크에 액세스한다 코드와 링크에서부터 (방송국 이름을 얻 태그 '이름') 자전거의 수 ('nb 자전거'태그에서)를 입력하고 표의 각 열에 입력하십시오 – user3297662