header('Content-Type: text/xml');
加上这行代码试试

解决方案 »

  1.   

    1、simplexml 会忽略根节点
    对于你的示例数据,根节点 order_info 被忽略,所以 $xml->order_info 不存在,所以你不会有输出
    打印一级子节点的值应这样写foreach($xml->children() as $k=>$v) {
      if(empty($v)) //这里检查是否有子节点,如有就不打印。这样就跳过了 goods_infos
        echo "$k $v\n";
    }
    2、如果是打印 goods_infos 下的 good 子节点,则写作foreach($xml->goods_infos->good as $item) {
      foreach($item as $k=>$v)
        echo "$k $v\n";
    }
    3、如果你的程序文件不是 utf-8 的,还应该有
    $xmlStr = str_replace("encoding='utf-8'", "encoding='gbk'", $xmlStr);
    即将字符集改为真实的字符集
    当然打印的结果仍然是 utf-8 的
      

  2.   

    非常感谢你的详细解答,但现在遇到个问题是,我的xml文件在simplexml_load_string处理之前是正常的,但处理之后输出发现乱码了,而且转码好像转不过来,我的程序文件是gbk的,所以我加过$xmlStr = str_replace("encoding='utf-8'", "encoding='gbk'", $xmlStr);了
      

  3.   

    不是说了吗?
    当然打印的结果仍然是 utf-8 的
    因为 utf-8 是 xml 的工作语言
    你需要逐个的对待打印的数据进行转码
    比如 echo iconv('utf-6', 'gbk', $v);