LINUX.ORG.RU

postgresql to xml


0

0

Имеется база в postgres. Требуется преобразовывать результаты запросов в XML либо сразу получать в XML. Желательно на PHP.

На данный момент используется связка postgres 8.1 php 5.0.5 apache2 и некий скрипт sql2xml.php который создан для PHP4... Но с помощью другого скрипта Php4toPhp5.php удалось его как-то с глюками запустить...

Может существуют более изящные и стандартные решения?


Эй! Ну неужели никто не пытался получить XML вывод из базы данных?

klon
() автор топика

решение найдено, но хотелось бы услышать комменты спецов и знающих людей.
[src]
<?php
function returnRecord($resultid, $row, $level) 
 {
   $prepend = "";
   for ( $y = 0; $y < $level; $y++ )
     $prepend .= "\t";

   for ( $y = 0; $y < pg_NumFields($resultid); $y++ ) 
   {
     $record .= $prepend . "\t<" . pg_FieldName($resultid, $y) . ">";
     $data =  Trim(pg_Result($resultid, $row, $y));
     $data = ereg_replace("&", "&", $data);
     $record .= $data;
     $record .= "</" . pg_FieldName($resultid, $y) . ">\n";
   }
   return $record;
 }
//коннект к базе, запрос, шапка xml-документа.
 $conn = pg_Connect("dbname=test user=postgres");
 $result = pg_Query($conn, "SELECT * FROM table");
 $returnData = '<?xml version="1.0"?>' . "\n<root>\n<fieldata>";
 $rows = pg_NumRows($result);
//для каждой записи создаём контейнер...
 for ( $y = 0; $y < $rows; $y++ )
 { 
   $returnData .= "\n<row>\n";
   $returnData .= returnRecord($result, $y, 1);
   $returnData .= "</row>\n";
  } 
//добавляем окончание файла.
  $returnData .= "</fieldata>\n</root>";
  pg_FreeResult($result);
  pg_Close($conn);
//пишем в файл результат, получаем XML-файл...
  $file1 = fopen ("example1.xml", "w");
  fwrite($file1, $returnData);
  fclose($file1);
//применяем шаблон к созданому файлу
  $dom = new domDocument();
  $dom->load("template1.xsl");
  $proc = new xsltprocessor;
  $xsl = $proc->importStylesheet($dom);
  $document = new DomDocument();
   $document->load("example1.xml");
  print $proc->transformToXml($document);

?>
[/src]

XCommandeRX
()
Ответ на: комментарий от XCommandeRX

А зачем создавать временный файл и потом его не удалять?

klon
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.