交替收到错误(文档末尾的额外内容)

时间:2012-12-09 08:43:28

标签: php xml

加载xml文件时出错。我得到了许多与该主题相关的答案,但我真的无法找到为什么这个错误可能会出现在我的文件中。

Warning: DOMDocument::load() [<a href='domdocument.load'>domdocument.load</a>]: Extra content at the end of the document 

当我运行该文件时,它运行成功,但是当我重新加载它时,它会给出上述错误而不是添加另一个节点。但是,下次我重新加载它再次成功运行。这种情况正在发生。请有人告诉我为什么会这样,以及如何解决问题。

我正在使用这个php代码来编辑xml文件:

<?php
$dom = new DomDocument("1.0", "UTF-8");
$dom->load('filename.xml');

$noteElem = $dom->createElement('note');
$toElem = $dom->createElement('to', 'Chikck');
$fromElem = $dom->createElement('from', 'ewrw');

$noteElem->appendChild($toElem);
$noteElem->appendChild($fromElem);

$dom->appendChild($noteElem);
$dom->formatOutput = TRUE;
//$xmlString = $dom->saveXML();
//echo $xmlString;
$dom->save('filename.xml');
?>

这是我正在编辑的xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Chikck</to>
  <from>ewrw</from>
</note>

1 个答案:

答案 0 :(得分:3)

额外内容错误是由两个相同的节点(在本例中为note节点)作为根元素引起的。

例如,您可以添加新的根元素notes,然后在其中添加更多note个元素。

这是使用simplexml库的一个例子(仅仅因为我使用了这个,我对它很熟悉)

新的filename2.xml :(以root身份添加notes元素)

<?xml version="1.0" encoding="UTF-8"?>
<notes>
    <note>
        <to>Chikck</to>
        <from>ewrw</from>
    </note>
</notes>

PHP脚本:

<?php
    $xml = simplexml_load_file('filename2.xml');
    $note = $xml->addChild('note');
    $to = $note->addchild('to', 'Chikck');
    $from = $note->addChild('from', 'ewrw');
    $xml->asXML('filename2.xml');
?>
运行脚本后

filename2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<notes>
    <note>
        <to>Chikck</to>
        <from>ewrw</from>
    </note>
    <note>
        <to>Chikck</to>
        <from>ewrw</from>
    </note>
</notes>