PHP-从XML结果集中消除结果
我认为这可能更准确地称为“分页”。。。不确定。我得到了一块XML(比如100个节点),然后我希望在一个页面上一次只显示一组XML。你是怎么做到的 作为参考,在.NET中应该是这样的:PHP-从XML结果集中消除结果,php,xpath,Php,Xpath,我认为这可能更准确地称为“分页”。。。不确定。我得到了一块XML(比如100个节点),然后我希望在一个页面上一次只显示一组XML。你是怎么做到的 作为参考,在.NET中应该是这样的: // Get some results. These are an XPathExpression XPathNodeIterator iterate = nav.Select(results); int index = 0; // Iterate over them deletin
// 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);
}
//获取一些结果。这是一个XPathExpression
XPathNodeIterator iterate=nav.Select(结果);
int指数=0;
//迭代删除多余的结果
foreach(迭代中的XPathNavigator节点){
如果((索引finishIndex)){
node.DeleteSelf();
}
索引++;
}
//将iterate设置为这组新结果
迭代=导航选择(结果);
//写出我的新结果集
foreach(迭代中的XPathNavigator节点){
Write(node.OuterXml);
}
这将从XML文档中获取XML的一个子集,在整个文档中删除大于或小于我的beginIndex和finishIndex的所有节点(因此,我将通过设置beginIndex=0
和finishIndex=19
来获取前20个结果,然后下一次通过我可以获取节点20-29,依此类推)
简而言之,在PHP中,如何删除不需要的节点,比如说
node.DeleteSelf
?我能做的一切。。。只是不确定删除位。您可以使用PHP迭代器类:PHP的SimpleXMLElement文档:
显示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]
}
$result=$xml->xpath('string');
对于($i=$startIndex;$i<$startIndex+$pageSize;$i++){
//还要确保$result[$i]存在
//然后处理打印$result[$i]
}
您在PHP中使用什么来迭代或以其他方式处理XML?xpath。我使用simplexml获得结果,然后使用xpath获取我想要的集合,比如:$result=$xml->xpath('/employees/mechanics');