2

加载 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>
4

1 回答 1

3

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

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

这是一个使用 simplexml 库的示例(只是因为我使用了这个并且我熟悉它)

新文件名2.xml:(添加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>
于 2012-12-09T11:54:18.480 回答