альтернатива simplexml_load_string () в php4 - PullRequest
0 голосов
/ 17 ноября 2009

Я использую эту функцию 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, чтобы я мог избежать изменения моей кодировки.

Ответы [ 3 ]

3 голосов
/ 17 ноября 2009

Я сам не использовал этот класс, но phpClasses.org поддерживает реализацию SimpleXML для PHP4, которая выглядит вполне нормально:

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

0 голосов
/ 17 ноября 2009

Я ненавижу себя, когда люди говорят мне обновить мою среду вместо того, чтобы просто отвечать на мой вопрос, но нет ли способа переключиться на PHP5? PHP4 действительно очень устарел и, на мой взгляд, больше не подходит для новых проектов. PHP5 предоставляет встроенную поддержку XML, в то время как решения PHP4 работают довольно медленно.

0 голосов
/ 17 ноября 2009

PHP4 не поддерживает исключения. Попробуйте удалить блок try...catch.
Редактировать: также (ссылка на комментарий ниже), расширение SimpleXML доступно только для PHP5. В PHP4 вы должны использовать расширение XML Parser , но это также означает, что вам придется сильно изменить свой код. Простой поиск Google дает ссылку на учебник о том, как использовать это расширение.

...