Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-从XML结果集中消除结果_Php_Xpath - Fatal编程技术网

PHP-从XML结果集中消除结果

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

我认为这可能更准确地称为“分页”。。。不确定。我得到了一块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);
    }
//获取一些结果。这是一个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');