bcdh/laravel-exist-db-client

为 Laravel 5 抽象 eXist-db 的 XML RPC 调用的客户端

v1.0.1 2016-05-11 10:48 UTC

This package is not auto-updated.

Last update: 2024-09-26 00:44:43 UTC


README

Laravel 5 包,用于抽象化eXist-db的 XML RPC 调用。基于 php-eXist-db-Client

要求

  • Laravel 5
  • PHP 5.5 或 PHP 7
  • PEAR 1.10
sudo apt-get install php-pear
sudo pear channel-update pear.php.net
  • PHP XSLT 扩展
sudo apt-get install php5-xsl

安装

####1. 将服务提供者添加到 config/app.php

BCDH\ExistDbClient\ExistDbServiceProvider::class

####2. 发布你的配置文件

php artisan vendor:publish

####3. 在 config/exist-db.php 中编辑你的连接凭据

[
    'protocol'  => "http",
    'user'      => "admin",
    'password'  => "admin",
    'host'      => "localhost",
    'port'      => 8080,
    'path'      => "/exist/xmlrpc/",
]

用法

use BCDH\ExistDbClient\ExistDbClient;

$connection = new ExistDbClient();

$stmt = $connection->prepareQuery('for $someNode in collection("/SomeCollection")/someNodeName[./somePredicateAttribute=$someValueToBeBound] return $someNode');
$stmt->setSimpleXMLReturnType();
$stmt->bindVariable('someValueToBeBound', '5');

$resultPool = $stmt->execute();
$result = $resultPool->getAllResults();

foreach($result as $xml) {    
    var_dump($xml->somePredicateAttribute);
}

返回类型

  • Query::setStringReturnType() 的结果是 DOMElement 的实例

  • Query::setSimpleXMLReturnType() 的结果是 SimpleXMLElement 的实例

  • Query::setDomXMLReturnType() 的结果是字符串

获取结果字段

  • DomXmlResult
$document = $result->getDocument();
$title = $doc->getElementsByTagName('TITLE')->item(0)->nodeValue;
  • SimpleXML
$document = $result->getDocument();
$title = $doc->TITLE;

获取结果属性

  • DomXmlResult
$document = $result->getDocument();
$isFavorite = $doc->hasAttribute('favourite');
  • SimpleXML
$document = $result->getDocument();
$attributes = $document->attributes();
$isFavorite = isset($attributes['favourite']);

XLS 转换

  • 单一结果(DomXmlResult|SimpleXmlResult)
$resultPool = $stmt->execute();
$results = $resultPool->getAllResults();
$res = $results[0];

$html = $res->transform(__DIR__.'/xml/cd_catalog_simplified.xsl');
  • 结果集
$resultPool = $stmt->execute();
$results = $resultPool->getAllResults();
$rootTagName = 'catalog';

$html = $resultPool->transform($rootTagName, $results, __DIR__.'/xml/cd_catalog_simplified.xsl');