Каково различие между другим XML парсинг библиотек в PHP5?

Одно из решений:

...
override func rightMouseDown(with event: NSEvent) {
        NSMenu.popUpContextMenu(contextMenu, with: event, for: self.view)
}
...
8
задан Daniel Daranas 30 August 2013 в 07:38
поделиться

7 ответов

Только разрешить беспорядок здесь. PHP имеет много библиотек XML, потому что php4 не имел очень хороших вариантов в том направлении. От PHP5 у Вас есть выбор между SimpleXml, DOM и основанным на саксофоне эмигрантским синтаксическим анализатором. Последний также существовал в php4. php4 также имел расширение DOM, которое не является тем же как php5.

DOM и SimpleXml являются альтернативами той же проблемной области; Они læoad документ в память и позволяют Вам получить доступ к нему как к древовидной структуре. DOM является довольно большим API, но это также очень последовательно, и он реализован на многих языках, означая, что можно снова использовать знание через языки (В JavaScript, например). SimpleXml может быть легче первоначально.

Синтаксический анализатор SAX является другим зверем. Это рассматривает xml документ как поток тегов. Это полезно, если Вы имеете дело с очень большими документами, так как Вы не должны держать все это в памяти.

Для Вашего использования я, вероятно, использовал бы API DOM.

4
ответ дан 5 December 2019 в 11:28
поделиться

Вы могли использовать SimpleXML, который включен в установку PHP по умолчанию. Это расширения предлагает легкий объектно-ориентированный доступ к структурам XML.

Существует также DOM XML. "Оборотная сторона" к этому расширению - то, что немного более трудно использовать и что это не включено по умолчанию.

6
ответ дан 5 December 2019 в 11:28
поделиться

Я предпочитаю SimpleXMLElement, поскольку это довольно просто в использовании для сокращения через элементы.

Править: Это говорит, что никакая доступная информация о версии, но это доступно в PHP5, по крайней мере 5.2.5, но вероятно ранее.

Это - действительно личный выбор хотя, существует много расширений XML.

Примите во внимание, что много синтаксических анализаторов XML уклонятся, если у Вас будет недопустимая разметка - XHTML должен быть XML, но не всегда!

1
ответ дан 5 December 2019 в 11:28
поделиться

Это было долгое время (2 года или больше), так как я работал с XML, анализирующим в PHP, но у меня всегда были хорошие, применимые результаты Грушевого пакета XML_Parser. Однако у меня было минимальное воздействие PHP5, таким образом, я действительно не знаю, существуют ли лучшие, встроенные альтернативы в эти дни.

0
ответ дан 5 December 2019 в 11:28
поделиться

Я сделал определенные XML, анализирующие в PHP5 в прошлом году, и решил использовать комбинацию SimpleXML.

DOM немного более полезен, если Вы хотите создать новое дерево XML или добавить к существующему, его немного более гибкому.

0
ответ дан 5 December 2019 в 11:28
поделиться
  • DOM - это стандартный, независимый от языка API для иерархических данных, таких как XML, который был стандартизирован W3C. Это богатый API с большим количеством функций. Он основан на объектах, так как каждый узел является объектом.

    DOM хорош, когда вы не только хотите читать или писать, но вы хотите много манипулировать узлами существующего документа, например вставлять узлы между ними. другие, меняющие структуру и т. д.

  • SimpleXML является специфичным для PHP API, который также основан на объектах, но должен быть гораздо менее «кратким», чем DOM: простые задачи, такие как поиск значения узла или нахождение его дочерних элементов, требуют намного меньше кода. Его API не так богат, как DOM, но он по-прежнему включает в себя такие функции, как поиск в XPath, и базовую способность работать с документами с несколькими пространствами имен. И, что важно, он по-прежнему сохраняет все функции вашего документа, такие как разделы XML CDATA и комментарии, даже при том, что он не включает в себя функции для их манипулирования.

    SimpleXML очень хорош только для чтения: если все, что вы хотите сделать читать документ XML и преобразовать его в другую форму, тогда это сэкономит вам много кода. Это также довольно хорошо, когда вы хотите сгенерировать документ, или выполнять базовые манипуляции, такие как добавление или изменение дочерних элементов или атрибутов, но может оказаться сложным (но не невозможным) сделать много манипуляций с существующими документами. Например, нелегко добавить дочерний элемент между двумя другими; addChild только вставляет после других элементов. SimpleXML также не может выполнять преобразования XSLT. У него нет таких вещей, как 'getElementsByTagName' или getElementById ', но если вы знаете XPath, вы все равно можете делать такие вещи с SimpleXML.

    Объект SimpleXMLElement несколько «магический». Свойства, которые он предоставляет, если вы var_dump / printr / var_export не соответствуют его полному внутреннему представлению. Он предоставляет некоторые из своих дочерних элементов, как если бы они были свойствами, доступ к которым можно получить с помощью оператора ->, но все же сохраняет полный документ внутренне, и вы можете делать такие вещи, как доступ к дочернему элементу, имя которого является зарезервированным словом, с помощью оператора [], как если бы это был ассоциативный массив.

Вам не нужно полностью фиксировать один или другой, потому что PHP реализует функции:

  • simplexml_import_dom (DOMNode)
  • dom_import_simplexml (SimpleXMLElement)

Это полезно, если вы используете SimpleXML и вам нужно работать с кодом, который ожидает узел DOM или наоборот.

PHP также предлагает третью библиотеку XML:

  • Анализатор XML (реализация SAX , независимого от языка интерфейса, но не упоминаемого этим именем в руководстве) является намного более низкая библиотека уровня, которая служит совсем другой цели. Он не строит объекты для вас. Это в основном просто облегчает написание вашего собственного парсера XML, потому что он выполняет работу по переходу на следующий токен и выясняет тип токена, например, какое имя тега и является ли он открывающим или закрывающим тегом. Затем вы должны написать обратные вызовы, которые должны запускаться при каждом обнаружении токена. Все задачи, такие как представление документа в виде объектов / массивов в дереве, манипулирование документом и т. Д., Должны быть реализованы отдельно, поскольку все, что вы можете сделать с помощью синтаксического анализатора XML, - это написать синтаксический анализатор низкого уровня.

    Функции анализатора XML все еще весьма полезны, если у вас есть определенные требования к памяти или скорости. С его помощью можно написать синтаксический анализатор, который может анализировать очень длинный XML-документ без одновременного хранения всего его содержимого в памяти. Кроме того, если вы не заинтересованы во всех данных и не нуждаетесь или не хотите, чтобы они помещались в дерево или набор объектов PHP, тогда это может быть быстрее. Например, если вы хотите отсканировать документ XHTML и найти все ссылки, а вам не нужна структура.

4
ответ дан 5 December 2019 в 11:28
поделиться

Это действительно зависит от того, что Вы пытаетесь выполнить. Для получения по запросу довольно больших объемов данных, Т.Е. многих записей говорят, информация о продукте с веб-сайта хранилища, я, вероятно, использовал бы Эмигранта, с тех пор его, предположительно, немного быстрее... Лично, я имею, имеет XML's, достаточно большой для создания значимого повышения производительности. В тех количествах Вы могли бы также использовать SQL.

Я рекомендую использовать SimpleXML. Это довольно интуитивно, легко использовать/писать. Кроме того, работает отлично с XPath.

Никогда действительно добрался для использования DOM очень, но если Вы используете Синтаксический анализатор XML для чего-то столь большого, как Вы описываете Вас, мог бы хотеть использовать его, так как это немного более функционально, чем SimpleXML.

Можно читать обо всех трех в Школах W3C:

http://www.w3schools.com/php/php_xml_parser_expat.asp

http://www.w3schools.com/php/php_xml_simplexml.asp

http://www.w3schools.com/php/php_xml_dom.asp

0
ответ дан 5 December 2019 в 11:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: