本帖最后由 jindawei1991 于 2014-04-16 12:06:36 编辑

解决方案 »

  1.   

    if 判断的逻辑问题,你再仔细看看
    php SPL里面有递归器,写起来简单点
      

  2.   


    $xml->endDocument();
    $xml->flush();
    移出 writeXml 函数,最后执行
    ....
    writeXml($config);
    $xml->endDocument();
    $xml->flush();
      

  3.   

    整体封装成函数function writeXml($array, $xml=null){
      if(! $xml) {
        header("Content-type:text/xml;Charset=UTF-8");
        $xml = new XMLWriter();
        $xml->openUri('php://output');
        $xml->startDocument('1.0', 'UTF-8');
        $xml->setIndent(true);
        writeXml($array, $xml);
        $xml->endDocument();
        $xml->flush();
      }else {
        foreach($array as $key => $value){
            $xml->startElement($key);
            if( isset($value['childs']) && is_array($value['childs']) && count($value['childs']) > 0 ){
                writeXml($value['childs'], $xml);
            }
            $xml->endElement();
        }
      }
    }
    调用 writeXml($config);