使用PHP构建XML – 考虑性能

PHP中构建XML时,是否可以更快地构建字符串,然后回显字符串或使用PHP为您提供的XML函数?目前我正在做以下事情:

更新为更好的代码片段:

$searchParam = MysqL_real_escape_string($_POST['s']);
$search = new Search($searchParam);

if($search->retResult()>0){
    $xmlRes = $search->buildXML();
}
else {
    $xmlRes = '<status>no results</status>';
}

$xml = "<?xml version=\"1.0\"?>";
$xml.="<results>";
$xml.=$xmlRes;
$xml.="</results>"

header ("content-type: text/xml");
header ("content-length: ".strlen($xml));
echo($xml);


class Search {
private $num;
private $q;

function __construct($s){
    $this->q = MysqL_query('select * from foo_table where name = "'.$s.'"');
    $this->num = MysqL_num_rows($this->q);
}

function retResult(){
    return $this->num;
}

function buildXML(){
    $xml ='<status>success</status>';
    $xml.='<items>';
    while($row = MysqL_fetch_object($this->q)){
        $xml.='<item>';
        $desTag = '<info><![CDATA[';
        foreach ($row as $key => $current){
            if($key=='fob'){
                //do something with current
                $b = MysqL_query('select blah from dddd where id ='.$current);
                $a = MysqL_fetch_array($b);
                $xml.='<'.$key.'>'.$a['blah'].'</'.$key.'>';
            }
            else if($key =='this' || $key=='that'){
                $desTag = ' '.$current;
            }
            else {
                $xml.='<'.$key.'>'.$current.'</'.$key.'>';
            }   
        }
        $desTag.= ']]></info>';
        $xml.=$desTag;
        $xml.='</item>';
    }
    $xml.='</items>';
    return $xml;
}

}

有没有更快的方法来构建xml?我得到大约2000件物品,它开始减速..

提前致谢!

解决方法:

我没有看到你在连接之前没有试图逃避文本.这意味着你迟早会生成一些差不多但不完全是XML的东西,并且会被任何符合标准的解析器拒绝.

使用库(XMLWriter可能比其他库更高效,但我还没有用PHP完成XML).

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...