xml maken vanuit database
Hier heb ik een script die een meldinge geeft, zie hieronder:
Only one top level element is allowed in an XML document.
Nu weet ik niet waar dit inzit, iemand een idee?
Ook heb ik gelezen dat ik beter simplexml kan gebruiken, maar hoe kan ik dit wat ik nu heb dan gebruiken in simplexml? ik krijg het niet voor elkaar. Zie script:
Code (php)
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
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
<?php
header("Content-type: text/xml");
$host = "localhost";
$user = "...";
$pass = "...";
$database = "...";
$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");
$query = "SELECT field_volledig_value, field_tel_number, field_accountindex_value FROM content_type_telefoonboek ORDER BY field_volledig_value ASC";
$resultID = mysql_query($query, $linkID) or die("Data not found.");
for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output = "<?xml version="1.0" encoding="UTF-8" ?>\n";
$xml_output .= "<AastraIPPhoneDirectory>\n";
$xml_output .= "<MenuItem>\n";
$xml_output .= "<Prompt>" . $row['field_volledig_value'] . "</Prompt>\n";
$xml_output .= "<URI>" . $row['field_tel_number'] . "</URI>\n";
$xml_output .= "</MenuItem>\n";
$xml_output .= "</AastraIPPhoneDirectory>";
}
$fp = fopen('gs_phonebook.xml', 'wb');
fwrite($fp, $xml_output);
fclose($fp);
print($xml_output);
echo $xml_output;
?>
header("Content-type: text/xml");
$host = "localhost";
$user = "...";
$pass = "...";
$database = "...";
$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");
$query = "SELECT field_volledig_value, field_tel_number, field_accountindex_value FROM content_type_telefoonboek ORDER BY field_volledig_value ASC";
$resultID = mysql_query($query, $linkID) or die("Data not found.");
for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output = "<?xml version="1.0" encoding="UTF-8" ?>\n";
$xml_output .= "<AastraIPPhoneDirectory>\n";
$xml_output .= "<MenuItem>\n";
$xml_output .= "<Prompt>" . $row['field_volledig_value'] . "</Prompt>\n";
$xml_output .= "<URI>" . $row['field_tel_number'] . "</URI>\n";
$xml_output .= "</MenuItem>\n";
$xml_output .= "</AastraIPPhoneDirectory>";
}
$fp = fopen('gs_phonebook.xml', 'wb');
fwrite($fp, $xml_output);
fclose($fp);
print($xml_output);
echo $xml_output;
?>
wat lukt er dan niet met simplexml?
ik kom er niet uit hoe ik daarin mijn database in verwerk...ik kan alleen een voorbeeld vinden zonder database, maar met database zie ik nergens terug..ik snap dan gewoon niet waar precies te beginnen met simplexml.
Zet dus om die loop heen nog een top level element
als ik er zo even snel doorheen kijk zie ik net zoals Niek al zij dat de opbouw van het xml bestand niet correct is.
zie hiervoor ook http://www.w3schools.com/xml/default.asp
"" moet niet in de loop komen, hiermee moet je b.v. beginnen of ergens later in het script bovenaan toevoegen.
Dan zal het beter werken.
klik
en verwijzingen naar topics in het archief:
http://archief.pfz.nl/1180653-headers-already-sent#id1180670
http://archief.pfz.nl/1163424-xml-playlist-uit-een-mysql-db-generen#id1163466
http://archief.pfz.nl/1161827-weergeven-xml-gegevens#id1162615
gevonden op pfz in de sl: en verwijzingen naar topics in het archief:
http://archief.pfz.nl/1180653-headers-already-sent#id1180670
http://archief.pfz.nl/1163424-xml-playlist-uit-een-mysql-db-generen#id1163466
http://archief.pfz.nl/1161827-weergeven-xml-gegevens#id1162615
<node>
<gegevens>
</gegevens>
</node>
Dat doe je voor elke rij, op die manier kun je die xml goed intepreteren. Enne, als je slim bezig wil zijn, gebruik inderdaad simplexml of een andere goede library. Scheelt je een hoop werk.