0

First of all i have to tell you that i'm absoluetly new to PHP!

I want to write into a simple XML file.

I have a loop in which if the file does not exists I create the file and add the first child I need:

$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");

Everything is ok, it creates my file and add the child I need! I use DOM to get a format file :

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

When the files exists i simply need to add my and child I use:

$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");

But the result I get is:

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

This is not what I want! I simply want to add:

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

My code simple close the tag </UDID>, I do not know how to do it!

4

1 に答える 1

0

2 番目のコードでは、次の行を使用しないでください。

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

これである:

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

閉じない理由は、変数名が間違っていたため、ルートに2つの新しい要素が作成されたためです。

ライブデモ。

于 2013-09-06T17:51:31.520 に答える