I'm trying to output various tables from my database but I can't seem to figure out how to perform what i had in mind.
I want to output my data like this.
<locations>
<destination>
<name>A</name>
<address>B</name>
</destination>
<destination>
<name>C</name>
<address>D</name>
</destination>
</locations>
so far i have this as output.
<Locations>
<destination name="burlo"/>
<destination name="Raymund"/>
<destination name="Bacolod City"/>
<destination name="Victorias"/>
<destination name="Sipalay"/>
<destination name="Ambot"/>
<destination name="aweawea"/>
<destination name="ilo-ilo"/>
<destination name="ilo-ilo"/>
<destination name="Hinobaan"/>
<destination name="heart"/>
<destination name="heart"/>
<destination name="heart"/>
<destination name="heart"/>
<destination name="heart"/>
<destination name="Daddy"/>
<destination name="aguisan"/>
</Locations>
This is how i generate them.
// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("Locations");
$parnode = $dom->appendChild($node);
// Select all the rows in the markers table
$query = "SELECT * FROM tbl_locations where status='active'";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
header("Content-type: text/xml");
// Iterate through the rows, adding XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
$node = $dom->createElement("destination");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("name",$row['name']);
}
echo $dom->saveXML();
?>
Would appreciate any help.
Do this
$node = $dom->createElement("destination");
$newnode = $parnode->appendChild($node);
$node1 = $dom->createElement("name");
$newnode = $parnode->appendChild($node1);
$newnode->insertData(0,$row['name']);
Change this line to
$newnode->setAttribute("name",$row['name']);
To these lines
$nameNode = $doc->createElement('name');
$nameNode -> appendChild($doc->createTextNode($row['name']));
$node->appendChild($nameNode);
$addNode = $doc->createElement('address');
$addNode -> appendChild($doc->createTextNode($row['address']));
$node->appendChild($addNode);
As you need to construct the tree.
Hope this helps,
<?php
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$root_element = "locations";
$xml .= "<$root_element>";
$sql ="**** YOUR QUERY ****";
if (!$result = mysql_query($sql))
die("Query failed.");
if(mysql_num_rows($result)>0)
{
$i = 0;
while($result_array = mysql_fetch_array($result))
{
$xml .= "<destination>";
$result[$i]['name']=$result_array['name'];
$xml .= "<name><![CDATA[{$result[$i]['name']}]]></name>";
$result[$i]['dea']=$result_array['address'];
$xml .= "<address><![CDATA[{$result[$i]['address']}]]></address>";
$xml.="</destination>";
$i++;
}
}
//close the root element
$xml .= "</$root_element>";
//send the xml header to the browser
header ("Content-Type:text/xml");
//output the XML data
echo $xml;
Let me know if you have any doubts