我正在尝试编写一个机器人应用程序,在应用程序和web服务之间发送和接收XML。当我尝试运行以下代码
时$dom = new domDocument;
$dom = simplexml_load_file('php://input');
$xml = simplexml_import_dom($dom);
$messages = Messages::find_by_sql("SELECT * FROM messages WHERE reciever = '$xml->userName'");
$xmlString = "";
if($messages)
{
foreach($messages as $message)
{
$ts = strtotime($message->ts);
$xmlString=$xmlString."<Message><sender>".$message->sender."</sender><reciever>".$message->reciever."</reciever><timestamp>"."123"."</timestamp><text>".$message->text."</text></Message>";
}
}
else
{
//do something
}
$xmlReturn = new DOMDocument('1.0', 'UTF-8');
$xmlReturn->loadXML($xmlString);
echo($xmlReturn->saveXML());
?>
我在文档的末尾得到一个额外的警告内容。
错误来自这一行:$xmlReturn->loadXML($xmlString);
我不是100%确定你可以通过加载字符串创建一个xml文档,但我见过类似的事情,如果你看这里你可以看到它的输出,这看起来像有效的xml对我来说。
一个XML文档只能有一个根元素。您在这里将多个<message>…</message>
组合串在一起,因此缺少封装这些组合的根元素。