2010-07-04 4 views
1

Я читаю из API, который возвращает разбитый на страницы XML. Основной формат вывода на API является:Как восстановить документ с разбивкой по страницам?

<candidates.list page="1" next_page="yes"> 
    <candidate /> 
    <candidate /> 
    <candidate /> 
</candidates.list> 

Мой код выглядит так:

while (TRUE) { 
    $xml_str = file_get_contents($dest) 
    $xml = new SimpleXMLElement($xml_str); 

    // What should I do to append subsequent pages to my first page's XML? 

    if ($xml['next_page'] == 'yes') { 
    $dest = $new_destination; // I figure out the next page's API query here 
    } 
    else { 
    break; 
    } 
} 

return $xml; 

С Днем 4 июля, и спасибо !!

+1

+1 для получения «Счастливого 4 июля» от лета! –

ответ

0

SimpleXML был неправильным инструментом для работы. SimpleXML не предназначен для добавления новых узлов или выполнения каких-либо манипуляций. Я переключился на использование DOMDocument и быстро смог создать решение, используя функцию appendChild.

0

Я бы добавил кандидатов следующей страницы в ваш $xml. Вы уже проанализировали XML в SimpleXMLElement. Или создайте собственный массив объектов-кандидатов SimpleXMLElement, если это все, о чем вы заботитесь.

В качестве примечания стороны, while(1) - плохая форма. Вы можете изменить свою логику или использовать цикл do/while().

Happy 4th back!

+0

Я думаю, вопрос в том, КАК я должен добавить кандидатов следующей страницы в $ xml? Если я что-то не хватает, SimpleXML, похоже, не имеет простого способа добавления новых узлов. – Summer

0

Да, вы должны использовать решения на основе DOM или строить другую структуру данных «на лету» с помощью (например) SAX-подхода. DOM недостаточно масштабируется для высокой пропускной способности (область памяти объекта очень тяжелая), поэтому, если это единственная манипуляция, которую вы делаете, вы можете захотеть рассмотреть SAX, если вам нужно масштабировать.

Смежные вопросы