如何为XML Feed添加分页?

时间:2011-07-19 22:09:51

标签: javascript jquery html ruby-on-rails ruby-on-rails-3

我正在使用javascript将XML转换为HTML。我遵循了这个指南:http://www.w3schools.com/xml/xml_to_html.asp

如何为XML Feed添加分页?

2 个答案:

答案 0 :(得分:1)

根据您在问题中提供的网址,以下是对数据进行分页的方法。

html内容:

<div id="content"></div>
<div id="pagination"></div>

Javascript代码:

var page = 1, perPage = 4, content = document.getElementById('content'),
pagination = document.getElementById('pagination'), records;

function paganation(page)
{
    var nextMaxItem = perPage * page;
    var fromItem = (page - 1) * perPage;
    var maxPages = records.length / perPage;

    var xmlContent = "<table border='1'>";
    for (var i = fromItem; i < nextMaxItem; i++) {
        xmlContent += "<tr><td>";
        xmlContent += records[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue;
        xmlContent += "</td><td>";
        xmlContent += records[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue;
        xmlContent += "</td></tr>";
    }
    xmlContent += "</table>";
    content.innerHTML = xmlContent;

    var paginationContent = "";
    var previous = page - 1;
    if (page > 1) {
        paginationContent += '<a href="javascript:paganation('+previous+');">Back</a>';
    } else {
        paginationContent += "Back";
    }

    for (var j = 1; j < Math.ceil(maxPages); j++) {
        paginationContent += " ";
        paginationContent += '<a href="javascript:paganation('+j+');">'+j+'</a>';
        paginationContent += " ";
    }

    var next = page + 1;
    if (next <= maxPages) {
        paginationContent += '<a href="javascript:paganation('+next+');">Next</a>';
    } else {
        paginationContent += "Next";
    }
    pagination.innerHTML = paginationContent;
}

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","cd_catalog.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 
records = xmlDoc.getElementsByTagName("CD");
paganation(1);

答案 1 :(得分:0)

一个选项是Ruby gem,will_paginatethis page解释了使用它的基础知识。)

如果你在Rails 3中进行开发,this blog post可能会很有用。

如果您需要对XML输出本身进行分页,无论您选择哪种解决方案,您仍然需要将其分成几部分,因此您将有一些基础将其分解为页面。换句话说,将XML数据中的每一行作为一个不同的记录处理,就像数据库处理它一样,并对其进行分页。