2016-05-17 6 views
0

Я пытаюсь отложить мой XML-файл, но я не могу из-за этой ошибки. Почему эта проблема возникает?PHP DOMDocument: Неустранимая ошибка: вызов неопределенного метода DOMElement :: save()

The problem

Это мой код:

<?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); 

?> 

Я сделал много исследований, и я не мог найти ответ.

+0

@ splash58 Не решить, к сожалению. Ошибка сохраняется одинаково, но с saveXML вместо сохранения. –

ответ

0

dom_import_simplexml function The возвращает экземпляр DOMElement, который не имеет save метод. Вместо этого вам нужен DOMDocument, который делает имеет метод save.

К счастью, это очень легко добраться от одного к другому, так как DOMElement является тип DOMNode, и поэтому имеет ownerDocument property. Обратите внимание, что атрибут formatOutput также часть DOMDocument, так что вам нужно это:

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

DOMElement не имеет способа сохранить xml, но DOMDocument делает. Сделайте DOMDocument перед:

$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();