Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2012, 16:49   #1
cfgKEKS
 
Регистрация: 22.07.2008
Сообщений: 6
По умолчанию Парсер XML на PHP

Добрый день!
Не могу разобраться

Есть XML вот такого вида

Код HTML:
<event>
         <event_name>ИМЯ</event_name>
         <date>10.2.2012 8:00:00</date>
         <image>картинка.jpg</image>
         <url>ССЫЛКА</url>

      <performances>
           <performance>
                  <event_id>22602</event_id>
                  <date></date>
                  <url>ССЫЛКА</url>
          </performance>
          <performance>
                  <event_id>22602</event_id>
                  <date>10.3.2012 16:00:00</date>
                  <url>ССЫЛКА</url>
          </performance>
      </performances>
</event>
Парсер одинаковые елементы собирает.
А мне нужно из Элемента <event>...</event> Вытащить только 1 URL первый

Как это можно сделать?
Может можно как то запретить брать инфу из <performances>...</performances>

Сам парсер
PHP код:
<?


$xml_file 
"123.xml"
 
// XML-
$xml xml_parser_create(); 
 
//  XML-
xml_parser_set_option($xmlXML_OPTION_SKIP_WHITE1); 
 
// XML-    $xml_array
xml_parse_into_struct($xmlfile_get_contents($xml_file), $element$xml_array); 


// XML-
xml_parser_free($xml);



if (
$_GET['s'] == "") {
$s 0;
// Сколько выводить на страницу
$po 30; }



for (
$i $s$i <= $po-1$i++) {


    
$ename $element[$xml_array["EVENT_NAME"][$i]]["value"]; 
    
$pname $element[$xml_array["PERFORMANCE_NAME"][$i]]["value"]; 
    
$date $element[$xml_array["DATE"][$i]]["value"];
    
$url $element[$xml_array["URL"][$i]]["value"]; 
    
$img $element[$xml_array["IMAGE"][$i]]["value"];
    
    
    
$enamenopr str_replace(' ''+'$ename);

    echo 
"<b><a href="...." target=_blank>".$ename."</a></b><br>";
    echo 
"<img src=".$img."><br>";     
    echo 
$category;
    echo 
"<br>";
    echo 
$organiser;
    echo 
"<br><br>";
    
    }

    


?>

Последний раз редактировалось cfgKEKS; 27.03.2012 в 16:51.
cfgKEKS вне форума Ответить с цитированием
Старый 27.03.2012, 20:38   #2
ShnapS
Пользователь
 
Регистрация: 15.05.2008
Сообщений: 44
По умолчанию

Можно так:
PHP код:
$xml simplexml_load_file('xml.xml');

echo 
'<pre>'print_r($xml->url); echo '</pre>'
На экране:
Код HTML:
SimpleXMLElement Object
(
    [0] => ССЫЛКА
)
Функцией strval() получите значение данного объекта.
ShnapS вне форума Ответить с цитированием
Старый 28.03.2012, 12:46   #3
cfgKEKS
 
Регистрация: 22.07.2008
Сообщений: 6
По умолчанию

Забыл написат, что XML содержит много элементов <event>

Код HTML:
<event>
         <event_name>ИМЯ</event_name>
         <date>10.2.2012 8:00:00</date>
         <image>картинка.jpg</image>
         <url>ССЫЛКА</url>

      <performances>
           <performance>
                  <event_id>22602</event_id>
                  <date></date>
                  <url>ССЫЛКА</url>
          </performance>
          <performance>
                  <event_id>22602</event_id>
                  <date>10.3.2012 16:00:00</date>
                  <url>ССЫЛКА</url>
          </performance>
      </performances>
</event>
<event>
...
</event>
<event>
...
</event>
...
cfgKEKS вне форума Ответить с цитированием
Старый 28.03.2012, 21:47   #4
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Тогда это уже не корректный xml. Должен быть один тэг, в котором будет всё остальное.
Код:
<xml>
<event>
         <event_name>ИМЯ</event_name>
         <date>10.2.2012 8:00:00</date>
         <image>картинка.jpg</image>
         <url>ССЫЛКА</url>

      <performances>
           <performance>
                  <event_id>22602</event_id>
                  <date></date>
                  <url>ССЫЛКА</url>
          </performance>
          <performance>
                  <event_id>22602</event_id>
                  <date>10.3.2012 16:00:00</date>
                  <url>ССЫЛКА</url>
          </performance>
      </performances>
</event>
<event>
...
</event>
<event>
...
</event>
...
</xml>
Ну и код соответствующий. Сначала находите <xml>(корень). Потом форичем пробигаетесь по event'ам, обращаясь в каждом из них к url.

simplexml_load_file тут очень даже хорош. :yes:
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 29.03.2012, 10:49   #5
ShnapS
Пользователь
 
Регистрация: 15.05.2008
Сообщений: 44
По умолчанию

Прикрепите ваш xml файл к сообщению, что бы можно было посмотреть и понять конкретно что Вам нужно с ним сделать.
ShnapS вне форума Ответить с цитированием
Старый 30.03.2012, 14:17   #6
cfgKEKS
 
Регистрация: 22.07.2008
Сообщений: 6
По умолчанию

Я понимаю что это не совсем корректный XML, поэтому и создал тему. Каким либо образом изменить структуру XML я не могу.

Мне нужно вывести примерно в таком виде:

Название мероприятия (Со ссылкой на него из <event>)
Картинка (Ну тут легко)
И место провидения (Тоже легко)

...

Все выводится моим кодом как я хочу, за исключением ссылки
Ссылки выводятся по порядку из ХМЛ. Например к первыйм 3м разным эвентам выводится одна и таже ссылка, потому что она 3 раза указанна в первом <event>

ХМЛ прикрепил
Вложения
Тип файла: txt 123.txt (198.5 Кб, 25 просмотров)
cfgKEKS вне форума Ответить с цитированием
Старый 31.03.2012, 16:42   #7
Guilherme
 
Аватар для Guilherme
 
Регистрация: 31.03.2012
Сообщений: 3
По умолчанию

Как вариант использовать регулярные выражения
Guilherme вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсер XMl в Delphi RusExcellent Помощь студентам 2 16.11.2011 11:44
Парсер XML savva Общие вопросы по Java, Java SE, Kotlin 7 02.10.2011 23:11
XML парсер squa JavaScript, Ajax 0 09.02.2011 09:14
Парсер Gismeteo(xml) Homjak Общие вопросы Delphi 0 04.10.2010 08:15
парсер XML, не видит XML тэги supercelt PHP 3 02.11.2009 19:18