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、ルート要素として同じノード (この場合はノード) が 2 つあるために発生します。

notesたとえば、新しいルート要素を追加し、noteその中にさらに要素を追加できます。

simplexml ライブラリを使用した例を次に示します (これは、私がこれを使用していて、慣れているからです)。

notes新しい filename2.xml: (ルートとして要素を追加)

<?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 に答える