PHP DOM XML - Erstellen Sie Mehrere Namespace-Attribute?
Arbeite ich auf einigen PHP erstellen, XML aus einer Datenbank mit der DOM-Erweiterung.
Grundsätzlich, ich brauche, um einen NameSpace erstellen, und fügen Sie 3 Attribute zu:
<NameSpaceName xmlns="uri:xxx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="uri:xxx">
Den vollständigen code, den ich geschrieben habe ist unter:
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;
Aber wenn ich führen Sie die oben bekomme ich diesen Fehler:
Fatal error: Uncaught exception
'DOMException' with message ' - Namespace
Fehler' in
xml.php:21
Stack trace: #0
xml.php(21):
DOMElement->setAttributeNS('http://www.w3.o...', 'xsi:schemaLocat...',
'uri:xxx...') #1 {main} geworfen
in
xml.php
auf der Linie 21
Zeile 21 ist die zweite 'setAttributeNS" Linie.
Kann jeder sehen, wohin ich gehe falsch gemacht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
schemaLocation-Attribut nicht deklariert den Namensraum
http://www.w3.org/2000/xmlns/
aber inhttp://www.w3.org/2001/XMLSchema-instance
Drucke
Ich habe es nicht ganz verstanden das erste mal, so bin ich Entsendung meine Antwort im detail. Vielleicht jemand findet das nützlich.
Diese E-mail-Nachricht archivieren, war sehr hilfreich: http://www.mail-archive.com/[email protected]/msg135362.html.
ersetzen Sie die Zeile 21 mit
xsi:schemaLocation
ist nicht definiert in der http://www.w3.org/2000/xmlns/ oder Ihren namespace, aber inxsi
. so haben Sie, um das (komplette)xsi
namespace-uri als ersten parameter.- und: Sie brauchen nicht zu rufen
setAttributeNS()
zweimal: obige Zeile erzeugt diexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
undxsi:schemaLocation="http://xxx http://xxx/xxx.xsd"
Attribute.