Преобразование результатов запроса PostgreSQL в XML с использованием PHP DOM

Учитывая SQL как вход, я должен запросить базу данных PostgreSQL и вернуть результаты в виде XML. Я сделал это со следующим кодом:

<?php $link = "host=localhost dbname=company user=pgsql password=password"; $connect = pg_connect($link); $query = "SELECT * FROM customer"; $result = pg_query($connect, $query); $doc = new DomDocument("1.0"); $root = $doc->createElement('data'); $root = $doc->appendChild($root); while($row = pg_fetch_assoc($result)){ $node = $doc->createElement('collection'); $node = $root->appendChild($node); foreach($row as $fieldname => $fieldvalue){ $node->appendChild($doc->createElement($fieldname, $fieldvalue)); } } $doc->save("cust.xml"); ?> 

В конце концов, я буду применять таблицу стилей CSS непосредственно к XML-документу. Я укажу информацию о стиле для каждого узла коллекции. Однако возможно, что будут под-коллекции коллекций и даже под-под-коллекций и т. Д.

(Итак: Мастер, детализация, детализация, суб-детализация и т. Д.)

Проблема в том, что мой код будет генерировать только XML для Master, detail, sub detail. Как я могу изменить свой код, чтобы генерируемый XML всегда «захватывал» все уровни данных?

Благодаря…


Да, я имею в виду иерархические отношения. Например, с моим текущим кодом я могу видеть все атрибуты полей в таблице «Клиент». Однако, что, если одним из атрибутов клиента был «Адрес», а у Клиента было несколько адресов? Это должно появиться как …

  <data> <collection> <fname>Joe</fname> <lname>Smith</lname> <address> <address A> 123...</address A> <address B> 234...</address B> </collection> </data> 

Я пытаюсь изменить свой код, чтобы «подхватить» тот факт, что адрес, хотя и имеет атрибут, имеет субатрибуты …