2012-03-20 4 views
0

Я пытаюсь использовать цикл for для итерации XML-документа и размещения данных на веб-странице. Я хочу, чтобы этот код выполнял первые четыре записи в XML и отображал их название, дату, время и описание. Код, который я сейчас просматриваю, выглядит следующим образом.Использование цикла for для итерации через xml

<script type="text/javascript"> 
     xmlhttp=new XMLHttpRequest(); 
     xmlhttp.open("GET","events.xml",false); 
     xmlhttp.send(); 
     xmlDoc=xmlhttp.responseXML; 
     var i = 0; 
     for(i = 0; i <4; i++){ 

     document.write("<div style=\"display:block;padding-left:5px;\">"); 
     document.write("<br/>"); 
     document.write("<strong>What:</strong> <span id=\"title\"> </span>"); 
     document.write("<br/>"); 
     document.write("<strong>When:</strong> <span id=\"date\"></span> @ <span id=\"time\"></span>"); 
     document.write("<br/>"); 
     document.write("<strong>Description:</strong> <span id=\"descr\"></span><br/></div>"); 

     document.getElementById("title").innerHTML = xmlDoc.getElementsByTagName("title")[i].childNodes[0].nodeValue; 
     document.getElementById("date").innerHTML = xmlDoc.getElementsByTagName("date")[i].childNodes[0].nodeValue; 
     document.getElementById("time").innerHTML =xmlDoc.getElementsByTagName("time")[i].childNodes[0].nodeValue; 
     document.getElementById("descr").innerHTML =xmlDoc.getElementsByTagName("descr")[i].childNodes[0].nodeValue;} 


    </script> 

И неправильный вывод выглядит следующим образом.

What: Relay for Life Bingo 
When: N/A @ N/A 
Description: N/A 

What: 
When: @ 
Description: 

What: 
When: @ 
Description: 

What: 
When: @ 
Description:

Первая запись неверна, поскольку она является четвертым элементом в файле XML, и, как вы можете видеть, остальное пустое. Я новичок в XML, поэтому это, вероятно, ошибка начинающих, но я был бы признателен за некоторые отзывы о том, как заставить это работать.

events.xml

<event> 
    <title>Relay for Life Wristband Sale</title> 
    <date>March 26 &amp; 28 </date> 
    <time>11 A.M - 3 P.M.</time> 
    <descr>N/A</descr> 
</event> 

<event> 
    <title>SHPE/SWE/EC/IEEE Dodgeball Event</title> 
    <date>April 1 </date> 
    <time>N/A</time> 
    <descr>N/A</descr> 
</event> 

<event> 
    <title>CH2MHILL Social/GBM</title> 
    <date>April 2</date> 
    <time>N/A</time> 
    <descr>N/A</descr> 
</event> 

<event> 
    <title>Relay for Life Bingo</title> 
    <date>N/A</date> 
    <time>N/A</time> 
    <descr>N/A</descr> 
</event> 

<event> 
    <title></title> 
    <date></date> 
    <time></time> 
    <descr></descr> 
</event> 

<event> 
    <title></title> 
    <date></date> 
    <time></time> 
    <descr></descr> 
</event> 

<event> 
    <title></title> 
    <date></date> 
    <time></time> 
    <descr></descr> 
</event> 

+0

добавьте events.xml также в этом вопросе –

+0

Проблема является 'id' каждого тега в коде вы заменяете первый набор значений, а каждый раз, когда итерация цикла. Вы выбираете элемент с именем 'title'' date 'и т. Д. Они одинаковы во всем элементе, они должны быть уникальными. – iDroid

ответ

1

Я считаю, что это должно быть, вы events.xml с родительским узлом событий.

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
<events> 
<event> 
<title>Relay for Life Wristband Sale</title> 
<date>March 26 &amp; 28 </date> 
<time>11 A.M - 3 P.M.</time> 
<descr>N/A</descr> 
</event> 
<event> 
<title>SHPE/SWE/EC/IEEE Dodgeball Event</title> 
<date>April 1 </date> 
<time>N/A</time> 
<descr>N/A</descr> 
</event> 
<event> 
<title>CH2MHILL Social/GBM</title> 
<date>April 2</date> 
<time>N/A</time> 
<descr>N/A</descr> 
</event> 
<event> 
<title>Relay for Life Bingo</title> 
<date>N/A</date> 
<time>N/A</time> 
<descr>N/A</descr> 
</event> 
<event> 
<title></title> 
<date></date> 
<time></time> 
<descr></descr> 
</event> 
<event> 
<title></title> 
<date></date> 
<time></time> 
<descr></descr> 
</event> 
<event> 
<title></title> 
<date></date> 
<time></time> 
<descr></descr> 
</event> 
</events> 

Use Jquery, see the below code with your XML. It will easy for you. 

<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
</head> 
<body> 
<script> 
$.get('events.xml', function(d){ 

$(d).find('event').each(function(){ 
    var $entry = $(this); 
    var title = $entry.find('title').text(); 
    alert(title); 
}) 
}); 
</script> 
</body> 
</html> 
+0

У меня были родительские узлы в исходном xml, который он просто не копировал правильно. –

+0

Вы все еще получаете проблемы с кодом выше, используя jquery ?? –

0

Проверить в events.xml, вы указали теги, такое название, дата ..

для синтаксического анализа XML с помощью XMLPullParser в Android, который является более эффективным и простым использовать.

How to use XMLPullParser

Смежные вопросы