За последние 24 часа нас посетили 8564 программиста и 154 робота. Сейчас ищут 132 программиста ...

Парсирование xml файла в массив

Тема в разделе "Сделайте за меня", создана пользователем foxman322, 10 янв 2019.

  1. foxman322

    foxman322 Новичок

    С нами с:
    10 янв 2019
    Сообщения:
    2
    Симпатии:
    0
    Скрипт загружает xml файл в массив, скрипт есть, как его запустить
    PHP:
    1. <?php
    2.  
    3.  
    4.  
    5. class parser{
    6.  
    7. var $att;
    8. var $id;
    9. var $title;
    10. var $content;
    11. var $index=-1;
    12. var $xml_parser;
    13. var $tagname;
    14. var $node_number;
    15.  
    16.  
    17. function parser($file,$base_element,$id_element){
    18.  
    19.     $this->base_element =   $base_element;
    20.     $this->id_element   =   $id_element;
    21.     $this->xml_parser = xml_parser_create();
    22.  
    23.     xml_set_object($this->xml_parser,$this);
    24.     xml_set_element_handler($this->xml_parser, "startElement", "endElement");
    25.     xml_set_character_data_handler($this->xml_parser, 'elementContent');
    26.  
    27.     if (!$fp = fopen($file, "r")) {
    28.         $this->error[date("dMYHis")]=   "Could not open XML-file ".$file;
    29.         return false;
    30.  
    31.     }
    32.  
    33.     while ($data = fread($fp, 4096)) {
    34.         $data=eregi_replace(">"."[[]]+"."<","><",$data);
    35.         if (!xml_parse($this->xml_parser, $data, feof($fp))) {
    36.             die(sprintf("XML error: %s at line %d",
    37.                 xml_error_string(xml_get_error_code($this->xml_parser)),
    38.                 xml_get_current_line_number($this->xml_parser)));
    39.  
    40.         }
    41.  
    42.     }
    43.  
    44.     xml_parser_free($this->xml_parser);
    45.  
    46. }
    47.  
    48.  
    49. function startElement($parser, $name, $attrs) {
    50.     if ($name== $this->base_element){
    51.          $this->index++;
    52.     }
    53.  
    54.     else{
    55.         $this->att[$name]=0;
    56.     }
    57.  
    58.     $this->tagname=$name;
    59.  
    60. }
    61.  
    62.  
    63. function elementContent($parser, $data) {
    64.     $this->result[$this->index][$this->tagname]=$data;
    65.     if ($this->tagname== $this->id_element){
    66.          $this->id[$this->index]=$data;
    67.     }
    68.  
    69. }
    70.  
    71. function endElement($parser, $name){
    72.  
    73.     $this->tagname=="";
    74.  
    75. }
    76.  
    77. }
    78.  
    79. ?>
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.161
    Симпатии:
    1.752
    Адрес:
    :сердА
    Это не скрипт, а класс. И, кстати, с устаревшим синтаксисом.
    Его нельзя просто "запустить". Надо знать, как им пользоваться.
     
  3. foxman322

    foxman322 Новичок

    С нами с:
    10 янв 2019
    Сообщения:
    2
    Симпатии:
    0
    Хорошо, все понял, спасибо