simplexml и пхп

Тема в разделе "PHP Pro", создана пользователем genarator2003, 22 дек 2009.

Статус темы:
Закрыта.
  1. genarator2003

    genarator2003 Постоялец

    Регистр.:
    23 авг 2007
    Сообщения:
    113
    Симпатии:
    8
    Имею вот такой вот xml код:
    как мне выдрать отуда элементы типа <![CDATA[Кинотеатр]]> <![CDATA[Зеленый (2)]]><![CDATA[Аватар 3D]]>

    Код:
    <?xml version='1.0' encoding='Windows-1251' standalone='yes'?>
    <XML>
    <Result>Ok</Result>
    <Error></Error>
    <Remark></Remark>
    <Data>
    <Session EmploymentPercent='8' RemoteSaleLocked='0'>
    <Theatre ID='1'>
    <Name><![CDATA[Кинотеатр]]></Name>
    <Halls>
    <Hall ID='2'>
    <Name><![CDATA[Зеленый (2)]]></Name>
    <Levels>
    <Level ID='2'>
    <Name><![CDATA[партер]]></Name>
    </Level></Levels>
    </Hall>
    </Halls>
    </Theatre>
    <Movie ID='31'>
    <Name><![CDATA[Аватар 3D]]></Name>
    </Movie>
    <Date>22.12.2009</Date>
    <Time>21:30</Time>
    </Session>
    </Data>
    </XML>
    пытаюсь вытащить средствами simple xml но никак не получается ((
     
  2. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    PHP:
    <?php
    $xml 
    = new SimpleXMLElement(file_get_contents('qwe.xml'));

    echo 
    $xml->Data[0]->Session[0]->Theatre[0]->Name[0];//способ 1-й.напрямую
    echo '<br>';

    $list=$xml->xpath('//Name');//способ второй- XPath
    for($i=0;$i<count($list);$i++)
        echo 
    $list[$i].'<br>';
    ?>
     
  3. dennykru

    dennykru Создатель

    Регистр.:
    24 июн 2007
    Сообщения:
    40
    Симпатии:
    1
    думаю мой вопрос подойдет к этой теме.

    Дело в том, что я записываю результаты запроса в файл


    HTML:
    
    
    if (!file_exists($rss_cache) || (time() - filemtime($rss_cache)) > 600) { 
    
    $rss = simplexml_load_file($url); 
    foreach ($rss->channel->item as $item) {
    
    $result = '<a href="'.$item->link.'" target="_blank" title="'.$item->title.'"><img src="'.$item->image["url"].'" alt="1" /></a>&nbsp;';
    
    echo $result;
    
    }
            $f = fopen($rss_cache, 'wt'); 
            fwrite($f, $result); 
            fclose($f);
    } 
    else { 
            $result = file_get_contents($rss_cache); 
    
            echo $result;
    } 
    
    

    полученные данные обрабатываю выводятся и результат записывается в файл
    так вот получается, что на экране выводится все картинки, а в файл записывается только одна,

    как сделать чтобы все работало как надо и в файл записывались все изображения?
     
  4. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    просто следим за правильным закрытием циклов

    PHP:
    if (!file_exists($rss_cache) || (time() - filemtime($rss_cache)) > 600) { 
            
    $f fopen($rss_cache'wt'); 
    $rss simplexml_load_file($url); 
    foreach (
    $rss->channel->item as $item) {
    $result '<a href="'.$item->link.'" target="_blank" title="'.$item->title.'"><img src="'.$item->image["url"].'" alt="1" /></a>&nbsp;';
    echo 
    $result;
    // } здесь рано закрывает цикл
            
    fwrite($f$result); 
    // а здесь в самый раз
            
    fclose($f);

    else { 
            
    $result file_get_contents($rss_cache); 
            echo 
    $result;
    }
     
Статус темы:
Закрыта.