无法使用Php在Xml文件中创建元素

时间:2014-05-29 15:27:46

标签: php xml domdocument

我正在处理一些项目,我必须使用php将电影(id,title,genre)保存在xml文件中。 当我创建xml文件并添加信息时,它完美地工作 我的意思是 , file:php

$document_xml = new DomDocument("1.0","UTF-8");

$movie_dom = $document_xml->createElement("movie");
$id_dom = $document_xml->createElement("id",$id);
$title_dom = $document_xml->createElement("title",$title);
$genre_dom = $document_xml->createElement("genre",$genre);

$movie_dom->appendChild($id_dom);
$movie_dom->appendChild($title_dom);
$movie_dom->appendChild($genre_dom);

$document_xml->appendChild($movie_dom);
$document_xml->save("data.xml");

我有 file:data.xml

 <?xml version="1.0" encoding="UTF-8"?>
   <movie>
     <id>1</id>
     <title>Iron man</title>
     <genre>Action</genre>
   </movie>

但是当我修改这样的代码时 file:php

$document_xml = new DomDocument();
$document_xml->load("data.xml");

$movie_dom = $document_xml->createElement("movie");
$id_dom = $document_xml->createElement("id",$id);
$title_dom = $document_xml->createElement("title",$title);
$genre_dom = $document_xml->createElement("genre",$genre);

$movie_dom->appendChild($id_dom);
$movie_dom->appendChild($title_dom);
$movie_dom->appendChild($genre_dom);

$document_xml->appendChild($movie_dom);
$document_xml->saveXML();

这样才能拥有,

<?xml version="1.0" encoding="UTF-8"?>
   <movie>
      <id>1</id>
      <title>Iron man</title>
      <genre>Action</genre>
   </movie>
   <movie>
      <id>id</id>
      <title>some title</title>
      <genre>some genre</genre>
   </movie>

我没有错误,我的xml文件没有变化 我想帮助你

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,我改变了我的xml文件的结构

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <movie>
    <id>1</id>
    <title>Iron man</title>
    <genre>Action</genre>
  </movie>
  <movie>
    <id>2</id>
    <title>La guerre des etoiles</title>
    <genre>adventure</genre>
  </movie>
  <movie>
    <id>3</id>
    <title>Jugement dernier</title>
    <genre>action</genre>
  </movie>
</data>

我像这样更改我的php文件

$document_xml = new DomDocument();
$document_xml->load("data.xml",LIBXML_NOBLANKS);
$document_xml->formatOutput = true;

$root = $document_xml->documentElement;

$movie_dom = $document_xml->createElement("movie");
$id_dom = $document_xml->createElement("id",$value);
$title_dom = $document_xml->createElement("title",$title);
$genre_dom = $document_xml->createElement("genre",$genre);

$movie_dom->appendChild($id_dom);
$movie_dom->appendChild($title_dom);
$movie_dom->appendChild($genre_dom);

$root->appendChild($movie_dom);
$document_xml->appendChild($root);
$document_xml->save("data.xml");

一切都wworks perfectfly ......