用于DOM中的DOM解析器的SAX解析器脚本

时间:2014-06-11 06:18:25

标签: php dom sax

我的 DOM 文档代码需要 SAX 解析器代码。

如果有人愿意为我提供相同的代码。

 function flipkart_price_fetch($sel_image){  
    global $sel_image;  
    $price = file_get_contents("{$sel_image['flipkart_content']}");  
    $dom = new DOMDocument();  
    @$dom->loadHTML($price);  
    $divs = $dom->getElementsByTagName('span');  
    foreach($divs as $div){  
        if($div->getAttribute('class') == 'fk-font-verybig pprice fk-bold'){  
            echo $div->nodeValue;  
            }  
        }  
    } 

1 个答案:

答案 0 :(得分:0)

我不认为DOM是这里的性能损失,而是所有span个元素节点的迭代。 DOMXpath允许使用Xpath表达式直接获取节点:

$dom = new DOMDocument();  
@$dom->loadHTMLFile($sel_image['flipkart_content']);  
$xpath = new DOMXpath($dom);

// this matches the node by the class name "pprice"
$price = $xpath->evaluate(
  'string(.//span[contains(concat(" ", normalize-space(@class), " "), " pprice ")])'
);

echo $price;

在SO和/或Web上搜索Xpath。

您的来源中还有其他一些错误:

  1. global $sel_image;

    $sel_image是函数参数,这里没有理由使它成为一个全局状态。

  2. "{$sel_image['flipkart_content']}"

    此字符串仅包含变量,直接使用变量$sel_image['flipkart_content']或将其转换为字符串(string)$sel_image['flipkart_content']

  3. $ price = file_get_contents(" {$ sel_image [' flipkart_content']}");

    此处无需单独加载文件/网址 - 使用DOMDocument::loadHTMLFile()