【问题标题】:PHP Error loading, editing, then saving XML DOMDocumentPHP 加载、编辑和保存 XML DOMDocument 时出错
【发布时间】:2015-01-13 05:14:55
【问题描述】:

运行一个简单的脚本时,我得到以下输出,该脚本加载一个XML 文件,向文档添加一个带有几个子节点的节点,然后保存XML 文件。这里是这个被引用的 XML 文件的链接:http://msgrapp.com/test/ajaxchat/messages.xml

警告:DOMDocument::load():文档末尾的额外内容 在 /home1/dstamp/public_html/messages.xml 中,第 3 行 /home1/dstamp/public_html//第4行的sendMessage.php

<?php
    $doc = new DOMDocument('1.0');
    $doc->load('messages.xml');

    $root = $doc->createElement('MESSAGE');
    $root = $doc->appendChild($root);

    $dateNode = $doc->createElement('DATE');
    $dateNode = $root->appendChild($dateNode);
    $dateText = $doc->createTextNode(date("F j Y g:i a"));
    $dateText = $dateNode->appendChild($dateText);

    $senderNode = $doc->createElement('SENDER');
    $senderNode = $root->appendChild($senderNode);
    $senderText = $doc->createTextNode($_GET['sender']);
    $senderText = $senderNode->appendChild($senderText);

    $messageNode = $doc->createElement('TEXT');
    $messageNode = $root->appendChild($messageNode);
    $messageText = $doc->createTextNode($_GET['message']);
    $messageText = $messageNode->appendChild($messageText);

    $doc->save('messages.xml');
    echo $doc->saveXML();
?>

【问题讨论】:

  • 确切地向我们展示您的 XML 文件是什么样的。如果文件很大,那么最后 10 行可能就足够了。编辑您的问题并将 XML 放在那里;不要把它放在评论中。

标签: php html xml


【解决方案1】:

额外的内容错误是由于有两个相同的节点,在本例中为 MESSAGE 节点,作为根元素。

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

这将对您有所帮助:Alternately getting the error (Extra content at the end of the document )

【讨论】:

  • 嘿,谢谢...不过有一个问题,当我将messages.xml 加载到$doc 变量中时,访问根节点的最佳方式是什么?是否存在可供 DOMDocument 对象访问的节点数组?或者我会使用 $doc->getElementsByTagname("MESSAGES")。我需要能够访问根节点 MESSAGES 以将 MESSAGE 节点附加到它。我还注意到您发布的链接中的答案是使用 SimpleXML 扩展,我想在不使用它的情况下实现这一点。
  • 没关系,找到答案了。可以使用 $doc->documentElement 访问根节点以追加子节点。
猜你喜欢
  • 2012-03-27
  • 2013-06-04
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
相关资源
最近更新 更多