通过jQuery,嵌套循环解析XML

时间:2009-12-18 16:07:19

标签: jquery xml parsing

我正在使用jQuery使用$.ajax()在我的页面上解析XML。我的代码块在下面,我可以让它显示在XML文件上显示每个结果,但是我遇到了麻烦,因为每个部分可以有多于一个<course>并且我试图打印属于ONE的所有成绩学生。这是XML的一个例子。

<student num="505">
    <name gender="male">Al Einstein</name>
    <course cid="1">60</course>
    <course cid="2">60</course>
    <course cid="3">40</course>
    <course cid="4">55</course>
    <comments>Lucky if he makes it to lab, hopeless.</comments>
</student>

在哪里看到<course>我试图在每门课程中打印结果以打印每位学生的成绩。关于我会做什么的任何想法?

$.ajax({
            type: "GET",
            url: "final_exam.xml",
            dataType: "xml",
            success: function(xml) {
                var student_list = $('#student-list');
                $(xml).find('student').each(function(){
                    $(xml).find('course').each(function(){
                        gradeArray = $(this).text();
                        console.log(gradeArray);
                    });
                    var name = $(this).find("name").text();
                    var grade = $(this).find("course").text();
                    var cid = $(this).find("course").attr("cid");

                    //console.log(cid);
                    student_list.append("<tr><td>"+name+"</td><td>"+cid+"</td><td>"+grade+"</td></tr>");
                });
            }
        });

2 个答案:

答案 0 :(得分:1)

在这一行:$(xml).find('course').each(function(){

您的意思是find xml还是$(this).find

答案 1 :(得分:0)

很确定你在寻找这个。我所做的只是在数组中捕获成绩,并在最后通过逗号加入它们。我也没有测试(邪恶)。

$.ajax({
    type: "GET",
    url: "final_exam.xml",
    dataType: "xml",
    success: function(xml) {
        var student_list = $('#student-list');
        $(xml).find("student").each(function(){

            var name = $(this).find("name").text();
            var grades = [];
            var cid = $(this).find("course").attr("cid");

            $(this).find('course').each(function(){
                var grade = $(this).text();
                console.log(gradeArray);
                grades[ grades.length ] = grade
            });

            //console.log(cid);

            student_list.append("<tr><td>"+name+"</td><td>"+cid+"</td><td>"+grades.join(', ')+"</td></tr>");
        });
    }
});