PHP - исключить результаты из набора результатов XML - PullRequest
0 голосов
/ 16 декабря 2009

Я думаю, что это может быть более точно названо "подкачкой" ... не уверен. Я получаю кусок XML (скажем, 100 узлов), а затем я хочу отображать только определенное количество их одновременно на странице. Как ты это делаешь?

Для справки, в .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 (так что я бы взял, скажем, первые 20 результатов, установив beginIndex = 0 и finishIndex = 19 и при следующем проходе я смогу захватить узлы 20-29 и т. д.)

В двух словах, в PHP, как вы удаляете ненужные узлы, такие как этот бит, который говорит node.DeleteSelf? Все остальное, что я могу сделать ... просто не уверен насчет этого бита удаления.

Ответы [ 2 ]

1 голос
/ 17 декабря 2009

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]
}
0 голосов
/ 16 декабря 2009

Вы можете использовать класс итераторов PHP: http://php.net/manual/en/class.iterator.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...