Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с xml парсингом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не удается запарсить нужный атрибут
vanicon
Отправлено: 27 Февраля, 2011 - 02:28:11
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Есть xml файл(пример приводить не буду так как он уж оч большой) и мне нужно распарсить тег title в нем, вот кусок из xml кода с тегом title:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <title>
  3.               <hlword>АВТО</hlword>.РУ: Все об
  4.               <hlword>авто</hlword> и для
  5.               <hlword>авто</hlword>,
  6.               <hlword>авто</hlword> новости /
  7.               <hlword>автомобили</hlword> и цены...</title>
  8.  

И получается когда я паршу тег title то у меня не парсится то что между тегами <hlword>, можно убрать эти теги как вариант решение перед обработкой этого файла парсером, но эти теги необходимы чтобы текст между ними выделить жирным текстом или же загнать их в span теги, был скрипт один который эту функцию выполнял но он почемуто выдает вот такую ошибку:Fatal error: Call to a member function asXML() on a non-object in
вот этот скрипт:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. function title_b($node){
  4. $stripped = preg_replace('/<\/?(title|passage)[^>]*>/', '', $node->asXML());
  5. return str_replace('</hlword>', '</span>', preg_replace('/<hlword[^>]*>/', '<span style="color:#166297;">', $stripped));
  6. }
  7.  
  8.  
  9.  

вот сам парсер:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $response = file_get_contents('http://xmlsearch.yandex.ru/xmlsearch?user=vanicon44&key=03.47586544:11e14f6aefb1d1176e2986b5ab1f5c2f', true);
  3. $xmldoc = new SimpleXMLElement($response);
  4. foreach ($xmldoc->channel->item as $item){
  5. $title = $item->title;
  6. echo $title;
  7. }
  8.  


-----
Так было, так есть и так будет
 
 Top
altermann
Отправлено: 27 Февраля, 2011 - 02:54:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




$node->asXML() - объект simplexml, и в функцию вы в этом случае должны передавать именно объект $xmldoc = new SimpleXMLElement($response);

(Отредактировано автором: 27 Февраля, 2011 - 02:55:05)



-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
vanicon
Отправлено: 27 Февраля, 2011 - 04:05:18
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Попробовал передать функции передать переменную $xmldoc, но по прежнему ошибка


-----
Так было, так есть и так будет
 
 Top
altermann
Отправлено: 27 Февраля, 2011 - 10:57:05
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




Покажите код где вызывается эта функция.


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
JustUserR
Отправлено: 27 Февраля, 2011 - 15:33:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vanicon пишет:
Почемуто выдает вот такую ошибку:Fatal error: Call to a member function asXML() on a non-object in
Возможной причиной осуществления проявления предполагаемой ошибки, является применение однородных методов обработки к объектам ассоциированными с различными уровня элементного трактования, таких как контейнерный элемент и область чистого описания информационного поля; для осуществленя решения поставленной задачи необходимо включения условия, обеспечивающего разделение исполняемых действий для объктов, являющихся экземплярами механимзма обработки XML-документа и строковыми элементами соответственно


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
vanicon
Отправлено: 27 Февраля, 2011 - 15:42:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Вот код где вызывается функция:
CODE (htmlphp):
скопировать код в буфер обмена
  1. title_b($item->passages->passage);

А ошибка вот эта показывается в 22 линии, а 22 линия эта вот эта строка:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $stripped = preg_replace('/<\/?(title|passage)[^>]*>/', '', $node->asXML());


-----
Так было, так есть и так будет
 
 Top
CTAPbIu_KODEP
Отправлено: 28 Февраля, 2011 - 23:21:25
Post Id



Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Февр. 2011  
Откуда: Джанкой, Украина


Помог: 0 раз(а)




а ты строку где искать регулярку в Не понял ыбрал?
 
 Top
vanicon
Отправлено: 01 Марта, 2011 - 01:36:13
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




JustUserR может быть Вы мне поможете решить мою проблему либо заставив работать функцию код которой я выложил в посте или же написать что нибудь свое, из всего выше сказанного Вами я почти ничего не понял что и как сделать


-----
Так было, так есть и так будет
 
 Top
ALEN
Отправлено: 01 Марта, 2011 - 10:04:13
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




simplexml_load_string не подходит?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB