Php和XML为新手

时间:2013-12-24 14:26:54

标签: php xml domdocument

我有这个简单的xml文件:

<iPhone> 
  <anEvent>
    <data1>some Data</data1>
    <data2>Some data here </data2>
  </anEvent>

  <anEvent>
    <data1>some Data</data1>
    <data2>Some data here </data2>
  </anEvent>

</iPhone>

我需要从此文件中删除它并将其写入另一个文件。

要获得我想要的<anEvent>,我这样做(我只想转移一个anEvent):

$dom = new DomDocument(); 
$dom->load('myFile.xml');
$myData = $dom->getElementsByTagName('anEvent')->item(0); 

我在索引0得到它很酷。 为了删除它,我只需使用:

$customRequete->parentNode->removeChild($myData);   
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->saveXML();
$dom->save("myFile.xml");

它有效,这很酷。 问题是当我想将<anEvent>写入另一个文件时。 我知道如何写入XML但不使用DOM DOCUMENT:

$myNewFile = simplexml_load_file("myNewFile.xml");
$event = $myNewFile->addChild('anEvent'); 
$data1 = $event->addChild('data1','someData'); 
$data2 = $event->addChild('data2','some data here');

我想知道是否可以使用$myData中的$dom来编写类似的内容:

$myNewFile -> addChild($myData); 
$myNewFile->save();

或者我是否需要循环到$myData以获取节点值?

3 个答案:

答案 0 :(得分:0)

如果您只需要复制文件,可以使用PHP的copy()函数。

答案 1 :(得分:0)

如果要将节点从文档移动到另一个文档,则必须使用新创建的DOMDocument上的importNode方法导入它们。后一个参数允许您递归导入每个节点子节点。

答案 2 :(得分:0)

结帐DOMDocument::importNode。该页面上的示例应该是您所需要的。