I am working on some PHP to create XML from a database using the DOM extension.
Basically, I need to create NameSpace and add 3 attributes to it:
<NameSpaceName xmlns="uri:xxx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:xxx">
The full code I wrote is below:
include_once("includes/connect.php"); $sql = ("SELECT * FROM tableName"); $query = mysql_query($sql) or die("Error: " . mysql_error()); // create a new XML document $doc = new DomDocument('1.0', 'UTF-8'); // create root node $root = $doc->createElementNS('uri:xxx', 'PayerRecords'); $root = $doc->appendChild($root); $root->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); $root->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xsi:schemaLocation', 'uri:xxx'); // process one row at a time while($row = mysql_fetch_assoc($query)) { // add node for each row $occ = $doc->createElement('Content'); $occ = $root->appendChild($occ); // add a child node for each field foreach ($row as $fieldname => $fieldvalue) { $child = $doc->createElement($fieldname); $child = $occ->appendChild($child); $value = $doc->createTextNode($fieldvalue); $value = $child->appendChild($value); } // foreach } // while // get completed xml document $xml_string = $doc->saveXML(); echo $xml_string;
But when I do the above, I get this error:
Fatal error: exception for exception 'DOMException' with message 'Namespace Error in xml.php: 21 Stack trace: # 0 xml.php (21): DOMElement-> setAttributeNS (' http: //www.w3.o ... ',' xsi: schemaLocat ... ',' uri: xxx ... ') # 1 {main} throw in xml.php on line 21
Line 21 is the second line of setAttributeNS.
Can anyone see where I'm wrong?
dom xml php
Sjwdavies
source share