Выполните XQuery с PHP

Как выполнить XQuery в PHP? Можно ли дать мне пример?

Спасибо.

11
задан abernier 6 February 2010 в 02:43
поделиться

4 ответа

пакет груши: http://www.pecl.php.net/package/Zorba (ссылка на ошибку 404)

НОВИНКА (2011 г.): http://www.zorba-xquery.com/html/entry/2011/12/27/PHP_Meets_XQuery

документация zorba: http: //www.zorba-xquery. com /

zorba docs предоставляет простой пример:

//Include for the Object-Oriented API
require ‘zorba_api.php’;

//Initialization of Zorba store
$store = InMemoryStore::getInstance();
//Initialization of Zorba
$zorba = Zorba::getInstance($store);

$xquery = <<< EOT
let $message := ‘Hello World!’
return
<results>
   <message>{$message}</message>
</results>
EOT;

//Compile the query
$lQuery = $zorba->compileQuery($xquery);
//Run the query…
echo $lQuery->execute();
//…and destroy it
$lQuery->destroy();

//Shutdown of Zorba
$zorba->shutdown();
//Shutdown of Zorba store
InMemoryStore::shutdown($store);
6
ответ дан 3 December 2019 в 07:12
поделиться

PHP не имеет собственных или распространенных анализаторов XML, поддерживающих XQuery (если я ошибаюсь, дайте мне знать). Однако у него есть два довольно стандартных расширения, которые обрабатывают запросы XPath.

Лично я считаю, что simplexml лучше из двух. Вы могли бы просто использовать:

$xml = new simplexml($some_xml_string);
$xpath_results = $xml -> Xpath("//a/b");

И затем просмотреть результаты.

Расширенный класс DOM также поддерживает запросы Xpath. Насколько я понимаю, единственным реальным преимуществом использования DOM является то, что результаты можно изменять или удалять прямо из более крупного XML-объекта.

Удачи.

5
ответ дан 3 December 2019 в 07:12
поделиться

Вы смотрели http://www.pecl.php.net/package/Zorba ?

{ {1}}
-1
ответ дан 3 December 2019 в 07:12
поделиться

его также можно использовать с DOMDocument и DOMXPath

$doc = new DOMDocument();
$doc->load('http://www.example.com/some.xml');
$xpd = new DOMXPath($doc);
false&&$node = new DOMElement();//this is for my IDE to have intellysense

$result = $xpd->query('//a/b');
foreach($result as $node){
    echo $node->nodeName.'<br />';
}
2
ответ дан 3 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

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