【问题标题】:How to add pagination to an XML feed?如何向 XML 提要添加分页?
【发布时间】:2011-07-19 22:09:50
【问题描述】:

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

如何向 XML 提要添加分页?

【问题讨论】:

  • 您是否在 Rails 中工作(从您的用户名可以看出)?我们需要了解您的目标环境才能有机会回答这个问题。

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


【解决方案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);

【讨论】:

    【解决方案2】:

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

    如果您使用 Rails 3 进行开发,this blog post 可能会很有用。

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

    【讨论】:

    • 如何将它与 XML 提要一起使用?我以前用过数据库内容
    • 那么,您想从您引用的示例页面中获取您创建的表格,并对表格进行分页,对吗?
    • 我已经更新了我的答案。您需要以一种或另一种方式将 XML 数据分解为“行”或数据库记录之类的东西 - 没有办法解决这个问题。不同表行的列表(来自数据库,或来自 XML 数据)是所有分页解决方案的基础,无论它们处理的数据如何。
    • 您的 XML 数据是否分成了行?如果是这样,将eat row 包装成单独的对象,然后根据XML 数据中“行”的总数进行分页。
    • 如果产品损坏 - 有一些产品“行”
    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2021-05-28
    • 2014-07-17
    • 2019-06-03
    • 2016-12-25
    相关资源
    最近更新 更多