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>

'<Image>'に newを追加しようとしまし'<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 に答える