За последние 24 часа нас посетили 15595 программистов и 1554 робота. Сейчас ищет 901 программист ...

вопрос по парсеру xml

Тема в разделе "PHP для новичков", создана пользователем zhito, 25 ноя 2008.

  1. zhito

    zhito Активный пользователь

    С нами с:
    4 мар 2008
    Сообщения:
    25
    Симпатии:
    0
    есть такой парсер xml



    PHP:
    1. function startElement($parser, $name, $attrs) {
    2.    if ($attrs["PRODUCT"] == 'blabla') {
    3.     echo $attrs["PRICE"];
    4.     }
    5. }
    6.  
    7. function endElement($parser, $name) {
    8.  
    9. }
    10.  
    11. function stringElement($parser, $desc) {
    12.     echo $desc;    
    13. }
    14.  
    15. $file  = "data.xml";
    16. $xml_parser = xml_parser_create();
    17. xml_set_element_handler($xml_parser, "startElement", "endElement");
    18. xml_set_character_data_handler($xml_parser, "stringElement");
    19.  
    20. if (!($fp = fopen($file, "r"))) {
    21.     die("could not open XML input");
    22. }
    23.  
    24. while ($data = fgets($fp)) {
    25.     if (!xml_parse($xml_parser, $data, feof($fp))) {
    26.         echo "<br>XML Error: ";
    27.         echo xml_error_string(xml_get_error_code($xml_parser));
    28.         echo " at line ".xml_get_current_line_number($xml_parser);
    29.         break;
    30.     }
    31. }
    32.    
    33. xml_parser_free($xml_parser);  
    34.  


    вопрос как сделать так чтобы $desc из функции stringElement выводилась только когда $attrs["PRODUCT"] == 'blabla' ?
     
  2. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Ммм... так же как в функции startElement например...
     
  3. zhito

    zhito Активный пользователь

    С нами с:
    4 мар 2008
    Сообщения:
    25
    Симпатии:
    0
    нельзя ли поконкретнее? всеже раздел для новичков вроде ;)
    так неработает:
    PHP:
    1.  
    2.  function stringElement($parser, $desc,  $attrs) {
    3. if ($attrs["PRODUCT"] == 'blabla') {
    4.     echo $desc;  
    5. }
    6.   }
     
  4. kostyl

    kostyl Guest

    zhito
    ошибку выводит?
     
  5. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Знач ключа такого в массиве нет
    isset()
    print_r()
     
  6. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Записывай в глобальную переменную значение атрибута. И проверяй его в stringElement
     
  7. zhito

    zhito Активный пользователь

    С нами с:
    4 мар 2008
    Сообщения:
    25
    Симпатии:
    0
    код из первого поста выдает все описания которые есть в базе.
    код из первого поста ни одного описания не выдает
    а надо только то описание которое условно 'blabla'
     
  8. zhito

    zhito Активный пользователь

    С нами с:
    4 мар 2008
    Сообщения:
    25
    Симпатии:
    0
    так тоже ничего не отдает
    PHP:
    1. function startElement($parser, $name, $attrs){
    2.     if($attrs["PRODUCT"]=='blabla'){
    3.         $GLOBALS['outStringElement']=1;
    4.         echo $attrs["PRICE"];
    5.     }else{
    6.         $GLOBALS['outStringElement']=0;
    7.     }
    8. }
    9.  
    10. function endElement($parser, $name){
    11.  
    12. }
    13.  
    14. function stringElement($parser, $desc){
    15.     if($GLOBALS['outStringElement']==1)
    16.         echo $desc;
    17. }