0

我在我的文件中使用这个函数 simplexml_load_string(),它基于 lucene 进行搜索。但它不适用于php4。

请建议我一个类似于这个的功能,这样我就不必改变我的编码。

这是我的代码示例:-

function handleResponse($data) 
    {
        if ($data) 
        {
            $xml = simplexml_load_string($data);
            $results = array();
            foreach ($xml->result->doc as $story) 
            {
                $xmlarray = array();
                try
                {
                    foreach ($story as $item) 
                    {
                        $name = $item->attributes()->name;
                        $value = $item;
                        $xmlarray["$name"] = "$value";
                    }
                } 
                catch (Exception $e) 
                {
                    echo 'Problem handling XML array.'; 
                }
                if ($this->debug) echo "checking if ".$xmlarray['score']." > ".$this->min_score;
                if ($xmlarray['score'] > $this->min_score) $results[] = $xmlarray;
            }
            $results['response']=$xml->result->attributes()->numFound;
        }
        else
        {
            $results=false;
        }
        return $results;
    }

这里 $data 有 xml 格式的数据,比如

<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
 <int name="status">0</int>
 <int name="QTime">2</int>
 <lst name="params">
  <str name="explainOther"/>
  <str name="fl">*,score</str>

  <str name="indent">on</str>
  <str name="start">0</str>
  <str name="q">reliance</str>
  <str name="hl.fl"/>
  <str name="qt">dismax</str>
  <str name="wt">dismax</str>

  <str name="version">2.2</str>
  <str name="rows">10</str>
 </lst>
</lst>
<result name="response" numFound="5" start="0" maxScore="1.7840868">
 <doc>
  <float name="score">1.7840868</float>
  <str name="scheme_name">Reliance Diversified Power Sector Fund - Growth</str>

  <str name="scheme_nav">75.23</str>
 </doc>
 <doc>
  <float name="score">1.7840868</float>
  <str name="scheme_name">Reliance Diversified Power Sector Fund - Growth</str>
  <str name="scheme_nav">75.23</str>
 </doc>
</result>
</response>

请建议一些类似于simplexml_load_string()PHP4 中的功能,以便我可以避免更改我的编码。

4

3 回答 3

3

我自己没有使用过这个类,但是 phpClasses.org 正在为 PHP4 提供一个 simpleXML 实现,看起来还不错:

http://www.phpclasses.org/browse/package/4484.html

于 2009-11-17T13:41:01.823 回答
0

PHP4 不支持异常。尝试删除try...catch块。
编辑:另外(信用转到下面的评论),SimpleXML 扩展是 PHP5-only。在 PHP4 中,您应该使用XML Parser扩展,但这也意味着您必须对代码进行大量更改。一个简单的谷歌搜索给出了一个关于如何使用这个扩展的教程的链接。

于 2009-11-17T13:30:28.420 回答
0

当人们告诉我更新我的环境而不是仅仅回答我的问题时,我自己讨厌它,但是有没有办法切换到 PHP5?PHP4 到现在真的已经过时了,在我看来不再适合新项目了。PHP5 带来了原生 XML 支持,而 PHP4 解决方案都非常慢。

于 2009-11-17T13:31:52.450 回答