SimpleXML или XMLReader?

какой из двух более распространен? Я хочу зачитать номер версии из http://freshmeat.net/projects-xml/mysql/mysql.xml?branch_id=46519, но я хочу использовать тот, который есть у большего количества людей.

Если вы знаете другой способ получить номер последней стабильной версии от mysql, пожалуйста, сообщите мне;)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
7 479
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Для такого рода задач, вероятно, больше подходит чтение документа в DomDocument и использование DomXPath.

Чтобы ответить на ваш вопрос, обе библиотеки (а также DomDocument + DomXPath) входят в стандартную комплектацию PHP5, поэтому они будут одинаково хорошим выбором.

Я бы специально рекомендовал файловый метод LoadHTML в качестве хорошей отправной точки, поскольку он был разработан для работы с этим, и его не следует путать с вложенными тегами. us3.php.net/manual/en/domdocument.loadhtml.php

preinheimer 15.11.2008 23:08

Поскольку это XML, а не HTML, loadXml будет более подходящим: docs.php.net/manual/en/domdocument.loadxml.php

troelskn 15.11.2008 23:18

SimpleXML был представлен в PHP5, в то время как XmlReader был включен по умолчанию только в версию 5.1, поэтому первый вариант, вероятно, лучший вариант:

$struct = simplexml_load_string($xml);
$version = (string)$struct->project->latest_release->latest_release_version;

Однако, если вы не выполняете никакой другой обработки XML и хотите максимизировать совместимость, вы можете просто выполнить регулярное выражение XML:

if (preg_match('/<latest_release_version>(.*?)<\/latest_release_version>/', $xml, $matches)){
$version = $matches[1];
}

Это сложнее, чем правильная обработка XML, но, вероятно, быстрее и поддерживается почти всеми установками PHP.

Это должен быть SimpleXML. Он включен по умолчанию быстрее загружает XML-документы, чем методы Dom, занимает меньше места в памяти, чем методы Dom, и имеет гораздо более простой методы xpath, чем методы Dom:

$xml = simplexml_load_file(
    'http://freshmeat.net/projects-xml/mysql/mysql.xml?branch_id=46519'
    );
$result = $xml->xpath('//latest_release/latest_release_version'); 
// or '//latest_release/*' if you'd rather loop through all release information.

while(list( , $node) = each($result))
    echo $node, "\n";

Для больших файлов используйте XMLreader, simpleXML будет занимать всю память больших файлов.

Другие вопросы по теме