Xml输出没有放在我想要的位置


Xml output not places where i want

我有一个脚本,用于检查站点的状态并将结果写入xml文档。Xml是这样的:

<?xml version="1.0" encoding="UTF-8"?>
 <xml>
  <sites>
   <site1>result of site1</site1>
   <site2>result of site2</site2>
   ...
  </sites>
 </xml>

然后我有一个函数,可以用wordpress短代码获取每个网站的xml内容,如下所示:

<?php
function CheckRemoteService($atts) {
 extract(shortcode_atts(array(
  'name' => 'txt',
 ), $atts));
$xml = simplexml_load_file('my.xml');
echo $xml->sites->$name;
}
add_shortcode('checkmyurl','CheckRemoteService');
?>

短代码给了我正确的输出,但所有结果都被放在顶部的同一行,就像被阻止一样。我想将这些结果与其他数据一起插入一个表中。这是xml限制还是我犯了一些错误?谢谢

你的函数不应该echo任何东西,它应该return它-代码是在Wordpress准备页面时运行的,而不是在它被输出到浏览器时,所以在"真实"输出开始之前,任何直接输出都只会显示在页面顶部。

顺便说一句,一旦您不使用echo,那么将SimpleXML对象显式转换为字符串可能是一个好主意,以避免任何意外行为:

return (string)$xml->sites->$name;