我认为这可能更准确地称为“分页”......不确定。我得到了一大块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
那个位?我还能做的其他事情......只是不确定那个删除位。
答案 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