powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PostgreSQL+XML
4 сообщений из 4, страница 1 из 1
PostgreSQL+XML
    #33393413
AntonIgg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожалуйста, есть ли некоторые пакеты, которые позволяют в результате запроса получить ответ в XML.
...
Рейтинг: 0 / 0
PostgreSQL+XML
    #33393660
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
contrib/xml2

Простейший вариант на перле:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE OR REPLACE FUNCTION to_xml(_query text) RETURNS text 
LANGUAGE plperlu AS $body$
my $rv = spi_exec_query($_[ 0 ]);
use XML::Simple;
my $xs = new XML::Simple();
return $xs->XMLout($rv->{rows});
$body$;

select to_xml($$select * from pg_language$$);
...
Рейтинг: 0 / 0
PostgreSQL+XML
    #33407913
~CommandeR~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На данный момент используется связка postgres 8.1 php 5.0.5 apache2 и некий скрипт sql2xml.php который создан для PHP4... Но с помощью другого скрипта Php4toPhp5.php удалось его как-то с глюками запустить... все эти скрипты взяты из инета, теоретически должны работать в PHP4, но мне позарез надо именно 5.
Как реализовать именно на PHP? либо из самой базы вытащить уже в виде XML? вроде там есть библиотека libpgxml но как её использовать?
...
Рейтинг: 0 / 0
PostgreSQL+XML
    #33408638
~CommandeR~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
решение найдено. не особо красиво, но за не имением гербовой, пишем на простой.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
<?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);

?>
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PostgreSQL+XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]