2016-05-17 13 views
0

Ich versuche, meine XML-Datei einzurücken, aber ich kann nicht wegen dieses Fehlers. Warum erscheint dieses Problem?PHP DOMDocument: Schwerwiegender Fehler: Aufruf zu undefinierter Methode DOMElement :: save()

The problem

Dies ist mein Code:

<?php 
$xmlstr = 'xmlfile.xml'; 

$sxe = new SimpleXMLElement($xmlstr, null, true); 

$lastID = (int)$sxe->xpath("//tip[last()]/tipID")[0] + 1; 

$tip = $sxe->addChild('tip'); 
$tip->addChild('tipID', $lastID); 
$tip->addChild('tiptitle', 'Title:'); 
$sxe->asXML($xmlstr); 

$xmlDom = dom_import_simplexml($sxe); 
$xmlDom->formatOutput = true; 
$xmlDom->save($xmlstr); 

?> 

ich eine Menge Forschung getan haben und ich konnte keine Antwort finden.

+0

@ splash58 nicht leider lösen Haben. Der Fehler bleibt gleich, aber mit saveXML statt speichern. –

Antwort

0

Die dom_import_simplexml function gibt eine Instanz von DOMElement, die keine save Methode hat. Was Sie stattdessen benötigen, ist eine DOMDocument, die hat haben eine save Methode.

Glücklicherweise ist es wirklich einfach, von einem zum anderen zu kommen, weil ein DOMElement eine Art DOMNode ist, und so ein ownerDocument property hat. Beachten Sie, dass das formatOutput Attribut ist auch ein Teil der DOMDocument, so was Sie brauchen, ist dies:

$xmlDom = dom_import_simplexml($sxe)->ownerDocument; 
$xmlDom->formatOutput = true; 
$xmlDom->save($xmlstr); 
1

DOMElement hat keine Methode zum Speichern von XML, aber DOMDocument funktioniert nicht. Machen Sie DOMDocument vor:

$xmlDom = dom_import_simplexml($sxe); 

$dom = new DOMDocument(); 
$dom_sxe = $dom->importNode($xmlDom, true); 
$dom_sxe = $dom->appendChild($xmlDom); 
$Dom->formatOutput = true; 
echo $dom->saveXML(); 
Verwandte Themen