入力としてSQLを指定すると、PostgreSQLデータベースにクエリを実行し、結果をXMLとして返す必要があります。私は次のコードでこれを行いました:PHP DOMを使用したPostgreSQLクエリーの結果の変換DOM
<?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文書に適用します。それぞれのコレクションノードのスタイル情報を指定します。しかし、コレクションのサブコレクション、サブコレクションなどが存在する可能性もあります。
(SO:マスター、詳細、サブディテール、サブサブディテールなど)
問題は、私のコードは唯一のマスター、詳細、サブ細部のためのXMLを生成しますです。生成されたXMLがすべてのレベルのデータを常に「取得」するように、コードを変更するにはどうすればよいですか?
おかげで...
はい、私は、階層関係に言及しています。たとえば、私の現在のコードでは、 "Customer"テーブルのフィールドのすべての属性を見ることができます。ただし、顧客属性の1つが「住所」で、顧客が複数の住所を持っていた場合はどうなりますか?これは...私はアドレスは、属性が、サブ属性を持っているという事実を「拾う」ために私のコードを変更しようとしている
<data>
<collection>
<fname>Joe</fname>
<lname>Smith</lname>
<address>
<address A> 123...</address A>
<address B> 234...</address B>
</collection>
</data>
...として表示されるように