Парсер XML

Тема в разделе "PHP", создана пользователем Stripe, 5 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Код парсера:

    PHP:
      $xml_content file_get_contents('audio.xml');
      
    $xml simplexml_load_string($xml_content);
      foreach (
    $xml->categories as $categories) {
      echo (string)
    $category['title'];
       echo 
    $categories->category

    Пример записи одного продукта в файле:

    HTML:
    <offers>
    <offer available="true" bid="0.1" id="1437" type="audio">
    <url>http://www.eee.ru/</url>
    <price>80.00</price>
    <currencyId>RUR</currencyId>
    <categoryId>184</categoryId>
    <picture>http://www.eee.ru/resized100.jpg</picture>
    <delivery>true</delivery>
    <author>Альфред Адлер</author>
    <name>Практика и теория индивидуальной психологии</name>
    <publisher>Ардис</publisher>
    <year/>
    <ISBN/>
    <language/>
    <performed_by/>
    <performance_type>начитана</performance_type>
    <storage>web</storage>
    <format>m4b,mp3,zip</format>
    <recording_length>8h54m</recording_length>
    <description>«Практика и*теория индивидуальной психологии»</description>
    <downloadable>true</downloadable>
    </offer>
    Получаю пустую страницу.
    Как распарсить этот YML файл?
     
  2. potuga

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
    что-то вы не в ту сторону...

    PHP:
    $xml_content file_get_contents('audio.xml');
    $xml simplexml_load_string($xml_content);
    foreach (
    $xml->offer as $c)
        echo 
    $c['bid']."<br>".$c->author;
    А вообще, делаем var_dump($xml) и усе...
     
    Stripe нравится это.
  3. murich

    murich Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    143
    Симпатии:
    19
    И да, регулярные выражения на php парсят xml почти в 2 раза быстрее, чем функции для работы с ним
    Распарсить можно по параметрам, например так:
    Код:
    preg_match_all('!<title>(.*?)<\/title>!', $xml, $output);
     
    Stripe и latteo нравится это.
  4. Сергiй

    Сергiй

    Регистр.:
    19 ноя 2006
    Сообщения:
    352
    Симпатии:
    338
    берёшь здесь MagicParser и решаешь всё без проблем
    Код:
    <?php
      require("MagicParser.php");
    
      function myRecordHandler($record)
      {
       
        print_r($record);
    
        print $record["OFFERS"];
        print $record["OFFER"];
        print $record["OFFER-AVAILABLE"];
        print $record["OFFER-BID"];
        print $record["OFFER-ID"];
        print $record["OFFER-TYPE"];
        print $record["OFFER/URL"];
        print $record["OFFER/PRICE"];
        print $record["OFFER/CURRENCYID"];
        print $record["OFFER/CATEGORYID"];
        print $record["OFFER/PICTURE"];
        print $record["OFFER/DELIVERY"];
        print $record["OFFER/AUTHOR"];
        print $record["OFFER/NAME"];
        print $record["OFFER/PUBLISHER"];
        print $record["OFFER/YEAR"];
        print $record["OFFER/ISBN"];
        print $record["OFFER/LANGUAGE"];
        print $record["OFFER/PERFORMED_BY"];
        print $record["OFFER/PERFORMANCE_TYPE"];
        print $record["OFFER/STORAGE"];
        print $record["OFFER/FORMAT"];
        print $record["OFFER/RECORDING_LENGTH"];
        print $record["OFFER/DESCRIPTION"];
        print $record["OFFER/DOWNLOADABLE"];
      }
      
      MagicParser_parse("файл(ссылка)xml","myRecordHandler","xml|OFFERS/");
    ?> 
    
     
    StaLkerexe нравится это.
Статус темы:
Закрыта.