开发者

SAX-based parser not seeking content

开发者 https://www.devze.com 2023-03-21 06:14 出处:网络
I am trying to implement a SAX based parser but somehow it only recognizes the start of the element and the end, the content is not provided in the logs. The variable holding the XML is filled correct

I am trying to implement a SAX based parser but somehow it only recognizes the start of the element and the end, the content is not provided in the logs. The variable holding the XML is filled correctly, I checked through a simple log. Here is the code:

<?php
    function startElementHandler($parser, $name, $attribs) {
       if($name == "id"){
            $id = TRUE;
        }
    }

    function endElementHandler($parser,$name){
        $id = FALSE;
    }

    function characterDataHandler($parser,$data){
        if($id == TRUE){
            echo $data;
        }
    }

    global $id;
    $id = FALSE;

    $parser = xml_parser_create();
 开发者_StackOverflow中文版   xml_set_element_handler($parser, "startElementHandler","endElementHandler");
    xml_set_character_data_handler($parser,"characterDataHandler");

    $xml = file_get_contents("http://itunes.apple.com/de/rss/topfreeapplications/limit=100/xml");
    xml_parse($parser,$xml);

    //xml_parser_free($parser);
?>

Any suggestion how I could recieve the content? Maybe I am missing something strange I am not aware of at the moment. best regards tim


Per your comment, $id never becomes true. Maybe you want attribs to have an id and not the name of the element. For example, if you have the XML

<div id="x"> blah </div>

You get

$name="div", $attribs={"id":"x"}

(this came out a bit of php-python, but i hope you get my point)

Is that really your bug?

According to http://www.phpcatalyst.com/php-compare-strings.php you should always compare strings using ===. Is that your bug?


You only used the xml_set_element_handler-callbacks. Those only:

Set up start and end element handlers

If you also want to retrieve the content of those tags, you'll also need to register the xml_set_character_data_handler-callback. Because this one:

Set up character data handler

0

精彩评论

暂无评论...
验证码 换一张
取 消