Pagorn
Pagorn

Reputation: 612

how to insert node at exist xml file with php dom

I try to add node at in exist xml file but it's not work

number.xml

<numbers>
<number>1</number>
<number>2</number>
</numbers>

number.php

<?php
$xml = new DOMDocument();
$xml -> load('number.xml');
$xml_number = $xml->createElement("number");
$xml_number_text = $xml->createTextNode("3");
$xml_number->appendChild($xml_number_text);
$xml_numbers = $xml->getElementsByTagName('numbers');
$xml_numbers->appendChild($xml_number);
$xml->formatOutput=true;
$xml->save("number.xml") or die("Error");
?>

this is a error: Fatal error: Call to undefined method DOMNodeList::appendChild() in number.php How to add number to numbers? I need it look like...

<numbers>
<number>1</number>
<number>2</number>
<number>3</number>
</numbers>

Upvotes: 1

Views: 463

Answers (1)

hek2mgl
hek2mgl

Reputation: 157947

This line:

$xml_numbers = $xml->getElementsByTagName('numbers');

should be:

$xml_numbers = $xml->getElementsByTagName('numbers')->item(0);

Note, that getElementsByTagName() will always return an XMLNodeList Object, not a single node - even if just a single element was found, like in your case. You need to explicitly address the first element of that list using ->item(0).

Upvotes: 1

Related Questions