Как я могу восстановить разбитый на страницы XML-документ? - PullRequest
1 голос
/ 04 июля 2010

Я читаю из 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 июля и спасибо !!

Ответы [ 3 ]

0 голосов
/ 04 июля 2010

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

0 голосов
/ 16 июля 2010

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

0 голосов
/ 04 июля 2010

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

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

Happy 4th back!

...