如何使用php DOMdocument将新元素附加到XML文件?

时间:2013-03-08 19:16:35

标签: php xml dom domdocument

我有这个test.xml:

<?xml version="1.0"?>
<Images>
  <Image>
    <Id>765</Id>
    <Title>Img title 1</Title>
    <Name>some_path_to_img.jpg</Name>
  </Image>
</Images>

我尝试将新'<Image>'追加到'<Images>',但没有成功。 这是我的代码:

function update_xml_file() {
  $xml = new DOMDocument();
  $xml->load(file_get_contents('test.xml'));
  $xml->formatOutput = true;

  $base_node = $xml->getElementsByTagName('Images')->item(0);
  $newimage = $xml->createElement("Image");

  $img_id = $xml->createElement("Id");
  $img_title = $xml->createElement("Title");
  $img_name = $xml->createElement("Name");

  $img_id->nodeValue = '766';
  $img_title->nodeValue = 'Image title 2';
  $img_name->nodeValue = 'some_path_to_img2.jpg';

  $newimage->appendChild($img_id);
  $newimage->appendChild($img_title);
  $newimage->appendChild($img_name);

  $base_node->appendChild($newimage);

  umask();
  $xml->save("test.xml");
}

环顾相关的讨论对我没有帮助。 谢谢你的时间。

2 个答案:

答案 0 :(得分:2)

您在加载xml数据的代码中有一点错字。

将其更改为:

$xml->loadXML(file_get_contents('test.xml'));

或(更好)

$xml->load('test.xml');

请参阅DOMDocument::loadXML()DOMDocument::load()

的文档

答案 1 :(得分:-1)

您也可以使用github中的这个包来简化http://github.com/toureiliass/xdt

你可以用几行代码

来完成
$con = new XDT();
$con->connect('test.xml');
$con->getDocumentRootElement()->append('<image><id>765</id><title>some title</title><name>some_path_to_image.jpg</name></image>');
$con->save();