2

我有这个 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>

我尝试将 new 附加'<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");
}

四处寻找相关讨论对我没有帮助。谢谢你的时间。

4

2 回答 2

2

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

将其更改为:

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

或更好)

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

参考文档DOMDocument::loadXML()DOMDocument::load()

于 2013-03-08T19:20:15.783 回答
-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();
于 2017-09-27T17:27:30.293 回答