我在我的文件中使用此函数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>
请在PHP4中建议一些与simplexml_load_string()
类似的功能,这样我就可以逃避更改编码。
答案 0 :(得分:3)
我自己没有使用过这个类,但phpClasses.org正在为PHP4提供一个简单的XML实现,看起来很不错:
答案 1 :(得分:0)
PHP4不支持异常。尝试删除try...catch
块
编辑也(信用转到下面的评论),SimpleXML扩展名仅限PHP5。在PHP4中,您应该使用XML Parser扩展名,但这也意味着您将必须更改您的代码。一个简单的Google search提供了a tutorial关于如何使用此扩展程序的链接。
答案 2 :(得分:0)
当人们告诉我更新我的环境而不是回答我的问题时,我自己讨厌它,但是没有办法切换到PHP5? PHP4现在真的已经过时了,在我看来不再适合新项目了。 PHP5带来了原生XML支持,而PHP4解决方案都非常慢。