如何使用php dom在已存在的xml文件中插入节点

时间:2014-11-15 11:48:22

标签: php xml dom

我尝试在现有的xml文件中添加节点,但它不起作用

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

这是一个错误: 致命错误:在number.php中调用未定义的方法DOMNodeList :: appendChild() 如何为数字添加数字?我需要它看起来像......

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

1 个答案:

答案 0 :(得分:1)

这一行:

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

应该是:

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

注意,getElementsByTagName()将始终返回XMLNodeList对象,而不是单个节点 - 即使只找到一个元素,就像你的情况一样。您需要使用->item(0)显式地处理该列表的第一个元素。