用PHP编写SimpleXML

时间:2013-09-06 17:36:18

标签: php xml simplexml

首先,我必须告诉你,我对PHP来说是绝对新手!

我想写一个简单的XML文件。

我有一个循环,如果文件不存在,我创建文件并添加我需要的第一个孩子:

$newFile = simplexml_load_file("myXMLPattern.xml"); 
$UDID = $newFile->addChild('UDID');
$valueUDID = $UDID->addChild('valueUDID',$udidDevice);
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($newFile->asXML());
$dom->saveXML();
$dom->save("./UDID/".$udidReference.".xml");

一切都很好,它会创建我的文件并添加我需要的孩子!我使用DOM来获取格式文件:

<?xml version="1.0"?>
<iPhone>
  <UDID>
    <valueUDID>myValue</valueUDID>
  </UDID>
</iPhone>

当文件存在时,我只需要添加我和我使用的孩子:

$UDIDFile = simplexml_load_file("./UDID/".$udidReference.".xml"); 
$UDID = $UDIDFile->addChild('UDID');
$valueUDID = $UDIDFile->addChild('valueUDID',$udidDevice);
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($UDIDFile->asXML());
$dom->saveXML();
$dom->save("./UDID/".$udidReference.".xml");

但我得到的结果是:

<?xml version="1.0"?>
<iPhone>
  <UDID>
    <valueUDID>myValue</valueUDID>
  </UDID>
  </UDID>
    <valueUDID>myNewValue</valueUDID>
</iPhone>

这不是我想要的!我只是想补充一下:

<UDID>
  <valueUDID>myNewValue</valueUDID>
</UDID> 

我的代码简单关闭标记</UDID>,我不知道该怎么做!

1 个答案:

答案 0 :(得分:0)

关于你的第二个代码不应该这一行:

$valueUDID = $UDIDFile->addChild('valueUDID',$udidDevice);

是这样的:

$valueUDID = $UDID->addChild('valueUDID',$udidDevice);

它不关闭它的原因,因为你有错误的变量名称导致它在根目录上创建2个新元素。

<强> Live DEMO.