php simplexml 附加而不是更新

php simplexml append instead of updating

我尝试更新现有的 xml 文件,然后使用相同的名称保存它,但它是追加而不是更新。另外像 Ä 这样的瑞典语字符被转换为 unicode,可以通过指定编码来防止吗?

  $folderPath = dirname(__DIR__). DIRECTORY_SEPARATOR;   // website/
  $fileName = 'event.xml';
  $destFile = $folderPath .$fileName; // website/event.xml

  $xml = simplexml_load_file($destFile);

  //Update
  $xml->events->event->title = $eventTitle;
  $xml->events->event->eventdate = $eventDate;

  // save the updated document
  $xml->asXML($destFile);

所以我最终得到这样的 xml(这甚至无效 xml)...

<?xml version="1.0" standalone="yes"?>
<events>
 <event>
    <title>&#xC4;</title>
    <eventdate>2019-12-01</eventdate>
 </event>
<events><event><title>&#xC4;</title><eventdate>2019.12.01</eventdate></event></events></events>

当我需要它时:

<?xml version="1.0" standalone="yes"?>
<events>
 <event>
    <title>Å</title>
    <eventdate>2019-12-01</eventdate>
 </event>
</events>

您需要更改两件事,第一件事是在 XML...

中启用 UTF-8
<?xml version="1.0" encoding="utf-8"?>

第二个是当你使用SimpleXML加载数据时,变量根元素,所以$xml<events> .所以你不需要在你的关卡中使用它...

$xml->event->title = $eventTitle;
$xml->event->eventdate = $eventDate;

此外,只想说 (甚至无效 xml) - 它可能不是您所追求的,但它仍然有效 XML.