PHP DOM против SimpleXML для разбора ленты Atom GData - PullRequest
2 голосов
/ 24 мая 2010

Я создаю библиотеку для доступа к API экспорта данных Google Analytics.Все данные, к которым обращается библиотека, представлены в формате Atom и используют множество различных пространств имен.Мои эксперименты с API до сих пор использовали SimpleXML для синтаксического анализа, тем более что все, что я делал, - это доступ к данным, хранящимся в ленте.

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

Я читал, что модуль PHP DOM может быть лучшим выбором, если вам нужно построить XML DOM науправлять или модифицировать существующий, но я не совсем уверен, что в любом случае мне понадобится эта функциональность из-за характера API (например, без отправки данных на сервер).SimpleXML, конечно, проще в использовании, и я видел людей, которые говорили, что для ситуаций, доступных только для чтения, это все, что вам нужно.

По сути, вопрос в том, что бы вы использовали?Совместимость не будет проблемой, так как конфигурация сервера будет соответствовать требованиям приложения.Стоит ли строить библиотеку с учетом PHP DOM или я должен придерживаться SimpleXML сейчас?

Обновление: Вот два примера типа каналов, с которыми я буду иметь дело:

  1. Фид аккаунта
  2. Фид данных

Ответы [ 3 ]

5 голосов
/ 24 мая 2010

Мое мнение:

Профессионалы SimpleXML:

  • Simple
  • Полуинтуитивный невербальный код
  • Отлично подходит для чтения / анализа документов

Недостатки SimpleXML:

  • Ужасно для генерации XML.
  • Не хватает гибкости и мощности

DOM профи:

  • Чрезвычайно мощный
  • Отлично подходит для генерации документов
  • Будут знакомы, если вы делали какие-либо другие сценарии DOM (например: в Javascript)

Минусы DOM:

  • Многословный
  • Иногда излишне сложно.

Я бы лично все время придерживался DOM. Он доставит вас куда угодно. Документация более чем адекватна, и хотя ваши руки могут болеть от набора текста, вы никогда не будете разочарованы, думая: «Почему бы просто не сделать это ??»

Если все, что вам нужно сделать, это прочитать документ или выполнить простейшее редактирование, то, вероятно, используйте SimpleXML. Для меня, однако, я привык к библиотекам DOM, поэтому я просто использую это везде, и это здорово.

0 голосов
/ 24 мая 2010

Что ж, если вам нужно заново изобрести колесо, я бы, вероятно, использовал SimpleXML ... Или вы могли бы просто использовать Zend_Gdata (если вам нужно там) или расширить Zend_Feed_Atom если его нет. Любой из этих вариантов, вероятно, должен составлять половину объема работы, которую вам необходимо выполнить:)

0 голосов
/ 24 мая 2010

SimpleXML прекрасно справляется с пространствами имен. В вашем случае вам просто нужно перебрать записи, использовать getNameSpaces и передать аргумент методу children для запроса дочерних элементов с определенным пространством имен.

Тем не менее, вы можете использовать DOM, если хотите написать 3x код.

...