Выполнить XQuery с PHP - PullRequest
       33

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

11 голосов
/ 06 февраля 2010

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

Спасибо.

Ответы [ 8 ]

6 голосов
/ 06 февраля 2010

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

NEW (2011): http://www.zorba -xquery.com / html / entry / 2011/12/27 / PHP_Meets_XQuery

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

Документы ZORBA предоставляют простой пример:

//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);
5 голосов
/ 06 февраля 2010

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

Я лично считаю, что simplexml - лучшее из двух.Вы должны просто использовать:

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

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

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

Удачи.

2 голосов
/ 19 марта 2015

Используйте BaseX. Его стабильный, масштабируемый и быстрый! (но вам нужен сервер для запуска)

Клиенты BaseX

include("BaseXClient.php");

$session = new Session("localhost", 1984, "admin", "admin");
print $session->execute("xquery 1 to 10");
$session->close();
1 голос
/ 29 февраля 2012

Для сценариев с общим хостингом я предлагаю использовать что-то вроде 28 мсек (http://www.28msec.com)), что позволяет вам создавать сервисы RESTful на основе процессора Zorba XQuery. Из PHP вы можете подключиться к 28 мсек через REST.

1 голос
/ 25 декабря 2011

Полезна следующая ссылка: http://dl.dropbox.com/u/1487285/php/php.html

<?php
require_once 'Zorba/XQueryProcessor.php'; 

$xquery = new XQueryProcessor(); 

$query = <<<'XQ'
  declare variable $world external; 
  <h1>Hello {$world}</h1>
XQ; 

$xquery->importQuery($query); 

$xquery->setVariable('world', 'World!'); 

echo $xquery->execute(); 
?>
1 голос
/ 22 января 2011

На этой странице http://phpxmlclasses.sourceforge.net/ имеется класс XQuery Lite:

Реализация PHP языка Xquery Lite 1.0, языка для запроса документов XML на основе Xquery 1.0 Этот класс основан на расширении DOM и позволяет выполнять запросы Xquery Lite для документов XML в файлах, строках php или комбинациях.

Я никогда не использовал его и не знаю, как он работает.

1 голос
/ 06 февраля 2010

также возможно с 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 />';
}
0 голосов
/ 06 февраля 2010

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

...