Execute a XQuery with PHP

前端 未结 8 768
青春惊慌失措
青春惊慌失措 2020-11-30 13:02

How to execute a XQuery in PHP? Can you give me an example?

Thank you.

相关标签:
8条回答
  • 2020-11-30 13:09

    pear package: http://www.pecl.php.net/package/Zorba (error 404 link)

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

    zorba documentation: http://www.zorba-xquery.com/

    zorba docs provide a simple example:

    //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);
    
    0 讨论(0)
  • 2020-11-30 13:09

    For shared hosting scenarios, I suggest to use something like 28msec (http://www.28msec.com) which enables you to build RESTful services based on top of the Zorba XQuery processor. From PHP you can connect to 28msec via REST.

    0 讨论(0)
  • 2020-11-30 13:12

    PHP does not have any native or common XML parsers that support XQuery (If I'm wrong, someone let me know). It does however have two pretty standard extensions that handle XPath queries.

    I personally think simplexml is the better of the two. You would simply use:

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

    And then loop through the results.

    The extensive DOM class supports Xpath queries as well. The only real advantage, as far as I see it, to using DOM is that the results can be modified or deleted straight out of the larger XML object.

    Good luck.

    0 讨论(0)
  • 2020-11-30 13:12

    Did you have a look at http://www.pecl.php.net/package/Zorba ?

    0 讨论(0)
  • 2020-11-30 13:15

    its also posible with DOMDocument and 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 讨论(0)
  • 2020-11-30 13:24

    Use BaseX. Its stable, scaleable, and fast! (but you need a server to run)

    BaseX clients

    include("BaseXClient.php");
    
    $session = new Session("localhost", 1984, "admin", "admin");
    print $session->execute("xquery 1 to 10");
    $session->close();
    
    0 讨论(0)
提交回复
热议问题