Это приводит меня в бешенство … Я просто хочу добавить еще один узел img
.
$xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <gallery> <album tnPath="tn/" lgPath="imm/" fsPath="iml/" > <img src="004.jpg" caption="4th caption" /> <img src="005.jpg" caption="5th caption" /> <img src="006.jpg" caption="6th caption" /> </album> </gallery> XML; $xmlDoc = new DOMDocument(); $xmlDoc->loadXML($xml); $album = $xmlDoc->getElementsByTagname('album')[0]; // Parse error: syntax error, unexpected '[' in /Applications/XAMPP/xamppfiles/htdocs/admin/tests/DOMDoc.php on line 17 $album = $xmlDoc->getElementsByTagname('album'); // Fatal error: Call to undefined method DOMNodeList::appendChild() in /Applications/XAMPP/xamppfiles/htdocs/admin/tests/DOMDoc.php on line 19 $newImg = $xmlDoc->createElement("img"); $album->appendChild($newImg); print $xmlDoc->saveXML();
Ошибка:
DOMDocument :: getElementsByTagName не возвращает массив, он возвращает DOMNodeList . Для доступа к своим элементам необходимо использовать метод item
:
$album = $xmlDoc->getElementsByTagname('album')->item(0);
// Parse error: syntax error, unexpected '[' in /Applications/XAMPP/xamppfiles/htdocs/admin/tests/DOMDoc.php on line 17
вы не можете сделать это в php
$album = $xmlDoc->getElementsByTagname('album')[0];
вы должны это сделать
$albumList = $xmlDoc->getElementsByTagname('album'); $album = $albumList[0];
EDIT: getElementsByTagname возвращает объект, чтобы вы могли сделать это (код выше).
$album = $xmlDoc->getElementsByTagname('album')->item(0);
Эта ошибка ….
// Fatal error: Call to undefined method DOMNodeList::appendChild() in /Applications/XAMPP/xamppfiles/htdocs/admin/tests/DOMDoc.php on line 19
DOMNodeList не имеет метода appendChild. DOMNode делает.