2016-08-19 1 views
0

Suche zu analysieren dieses .xml DokumentWie ein XML-Dokument

<instances> 
    <courseInstance id="147209" instanceCode="ENGLISH" 
      courseInstanceID="ENGLISH_147209" courseCode="ENGLISH" 
      courseDescription="ENGLISH Program" courseYear="1" 
      startDate="2014-06-01" session="2014" modeOfStudyCode="FULL_TIME" 
      modeOfStudyDescription="Full Time" courseStreamCode="A" 
      courseStreamDescription="Stream A" courseFee="0" waitlist="0" 
      waitlistPlacesLeft="0" instanceStatusCode="PROGRAM_OPEN" 
      instanceStatusDescription="Program Open"> 
     <service cis="147249" serviceCode="ONLINE_REG" 
       serviceName="Enroll and Pay" startDate="2016-08-04" 
       active="1" url="https://xxxx-xxx.xxxx.com/app/xxx/f?p=PV_ONLINE_REG:101:::::APP_COURSE_INSTANCE:147209"/> 
    </courseInstance> 
<instances> 

Ich möchte es sich um eine HTML der Seite anzuzeigen, wo ich jede eine Liste Attributliste analysieren.

Dies ist der Code, den ich habe

<h2>Demo</h2>        
<div id='show_LIVE_LINK'></div> 

<script> 
    displayCourses(0); 

    function displayCourses(i) { 
     var xmlhttp = new XMLHttpRequest(); 

     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       myFunction(xmlhttp, i); 
      } 
     }; 

     xmlhttp.open("GET", "solar.qll_web.common.xml", true); 
     xmlhttp.send(); 
    } 

    function myFunction(xml, i) { 
     var xmlDoc = xml.responseXML; 
     x = xmlDoc.getElementsByTagName("instances"); 

     document.getElementById("show_LIVE_LINK").innerHTML = "courseInstance: " + x[i].getElementsByTagName("courseInstance") 
    } 
</script> 

Wie kann Ich mag die Attribute einer nach dem anderen senkrecht nach unten gehen?

+0

Können Sie Ihre Frage klären? Ich verstehe es nicht. –

+0

Ich habe XML, die ich analysieren und in HTML einfügen möchte. Ich muss eine Funktion in meinem HTML erstellen, die durch den XML-Baum geht, aber ich weiß nicht, wie man die Funktion erstellt, die alle Attribute wie id in einer Liste auf der Seite extrahieren kann. – george1912

Antwort

0

Element-Knoten haben eine attributes Sammlung:

var xml = `<instances> 
 
    <courseInstance id="147209" instanceCode="ENGLISH" 
 
      courseInstanceID="ENGLISH_147209" courseCode="ENGLISH" 
 
      courseDescription="ENGLISH Program" courseYear="1" 
 
      startDate="2014-06-01" session="2014" modeOfStudyCode="FULL_TIME" 
 
      modeOfStudyDescription="Full Time" courseStreamCode="A" 
 
      courseStreamDescription="Stream A" courseFee="0" waitlist="0" 
 
      waitlistPlacesLeft="0" instanceStatusCode="PROGRAM_OPEN" 
 
      instanceStatusDescription="Program Open"/> 
 
</instances>`; 
 

 
var xmlDoc = new DOMParser().parseFromString(xml, 'application/xml'); 
 

 
function display(xmlDoc, index, targetEl) { 
 
    targetEl.textContent = ''; 
 
    var ul = document.createElement('ul'); 
 
    [].forEach.call(xmlDoc.getElementsByTagName('courseInstance')[index].attributes, function(att) { 
 
    var li = document.createElement('li'); 
 
    li.textContent = att.name + ' : ' + att.value; 
 
    ul.appendChild(li); 
 
    }); 
 
    targetEl.appendChild(ul); 
 
} 
 

 
display(xmlDoc, 0, document.getElementById('result'));
<div id="result"></div>

Offensichtlich statt eine Reihe von XML mit DOMParser Parsen Sie die responseXML eines XMLHttpRequest verwenden möchten, aber sobald Sie haben, dass Sie Lesen Sie die Attribute eines Elements wie gezeigt aus.