分页过滤的XML文件 [英] Pagination Filtered XML file

查看:84
本文介绍了分页过滤的XML文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想对xml文件中的以下过滤结果进行分页:

I want to paginate the following filtered results from xml file:

<?php

//load up the XML file as the variable $xml (which is now an array)

$xml = simplexml_load_file('inventory.xml');

//create the function xmlfilter, and tell it which arguments it will be handling

function xmlfilter ($xml, $color, $weight, $maxprice)
{
    $res = array();
    foreach ($xml->widget as $w)
    {
        //initially keep all elements in the array by setting keep to 1
        $keep = 1;
        //now start checking to see if these variables have been set
        if ($color!='')
        {
        //if color has been set, and the element's color does not match, don't keep this element
            if ((string)$w->color != $color) $keep = 0;
        }
        //if the max weight has been set, ensure the elements weight is less, or don't keep this element
        if ($weight)
        {
            if ((int)$w->weight > $weight) $keep = 0;
        }
        //same goes for max price
        if ($maxprice)
        {
            if ((int)$w->price > $maxprice) $keep = 0;
        }
        if ($keep) $res[] = $w;
    }
    return $res;
}

//check to see if the form was submitted (the url will have '?sub=Submit' at the end)
if (isset($_GET['sub']))
{
    //$color will equal whatever value was chosen in the form (url will show '?color=Blue')
    $color = isset($_GET['color'])? $_GET['color'] : '';
    //same goes for these fellas
    $weight = $_GET['weight'];
    $price = $_GET['price'];

    //now pass all the variables through the filter and create a new array called $filtered
    $filtered = xmlfilter($xml ,$color, $weight, $price);
    //finally, echo out each element from $filtered, along with its properties in neat little spans
    foreach ($filtered as $widget) {
        echo "<div class='widget'>";
        echo "<span class='name'>" . $widget->name . "</span>";
        echo "<span class='color'>" . $widget->color . "</span>";
        echo "<span class='weight'>" . $widget->weight . "</span>";
        echo "<span class='price'>" . $widget->price . "</span>";
        echo "</div>";
    }
}

其中$xml->widget代表以下xml:

<hotels xmlns="">
    <hotels>
        <hotel>
            <noofrooms>10</noofrooms>
            <website></website>
            <imageref>oias-sunset-2.jpg|villas-agios-nikolaos-1.jpg|villas-agios-nikolaos-24​.jpg|villas-agios-nikolaos-41.jpg</imageref>
            <descr>blah blah blah</descr>
            <hotelid>119</hotelid>
        </hotel>
    </hotels>
</hotels>

有什么好主意吗?

推荐答案

老实说,如果您已经在使用XML并想进行分页,请使用XSL.它将允许格式化结果并轻松进行分页. PHP具有内置的XSL转换器iirc

Honestly if you're already using XML and want to do Pagination then use XSL. It'll allow for formatting of the results and for pagination with ease. PHP has a built in XSL transformer iirc

请参见 http://www.codeproject.com/Articles/11277/Pagination -using-XSL 作为一个不错的例子.

See http://www.codeproject.com/Articles/11277/Pagination-using-XSL for a decent example.

这篇关于分页过滤的XML文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆