PHP - 消除XML结果集的结果

时间:2009-12-16 20:43:11

标签: php xpath

我认为这可能更准确地称为“分页”......不确定。我得到了一大块XML(比方说100个节点)然后我想在页面上一次只显示一定数量的XML。你是怎么做到的?

作为参考,在.NET中它将是这样的:

    // Get some results. These are an XPathExpression
    XPathNodeIterator iterate = nav.Select(results);
    int index = 0;
    // Iterate over them deleting excess results
    foreach (XPathNavigator node in iterate) {
        if ((index < beginIndex) || (index > finishIndex)) {
            node.DeleteSelf();
        }
        index++;
    }
    // Set iterate to be this new set of results
    iterate = nav.Select(results);
    // Write out my new result set
    foreach (XPathNavigator node in iterate) {
        Response.Write(node.OuterXml);
    }

这将从XML文档中获取XML的一个子集,通过它删除大于或小于我的beginIndex和finishIndex的所有节点(所以我会抓住,通过设置beginIndex = 0来说明前20个结果finishIndex = 19然后我可以抓住节点20-29等等。

简而言之,在PHP中,如何删除不需要的节点,如node.DeleteSelf那个位?我还能做的其他事情......只是不确定那个删除位。

2 个答案:

答案 0 :(得分:1)

PHP的SimpleXMLElement文档: http://php.net/manual/en/simplexmlelement.xpath.php

显示SimpleXmlElement :: xpath返回SimpleXMLElement对象的数组,因此您可以执行以下操作:

$result = $xml->xpath('string');
for ($i = $startIndex; $i < $startIndex + $pageSize; $i++){
    // also make sure that $result[$i] exists
    // Then handle printing $result[$i]
}

答案 1 :(得分:0)

您可以使用PHP迭代器类:http://php.net/manual/en/class.iterator.php