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
Форумы портала PHP.SU :: Версия для печати :: Проблема с xml парсингом
Форумы портала PHP.SU » PHP » Программирование на PHP » Проблема с xml парсингом

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

1. vanicon - 27 Февраля, 2011 - 02:28:11 - перейти к сообщению
Есть 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.  
2. altermann - 27 Февраля, 2011 - 02:54:15 - перейти к сообщению
$node->asXML() - объект simplexml, и в функцию вы в этом случае должны передавать именно объект $xmldoc = new SimpleXMLElement($response);
3. vanicon - 27 Февраля, 2011 - 04:05:18 - перейти к сообщению
Попробовал передать функции передать переменную $xmldoc, но по прежнему ошибка
4. altermann - 27 Февраля, 2011 - 10:57:05 - перейти к сообщению
Покажите код где вызывается эта функция.
5. JustUserR - 27 Февраля, 2011 - 15:33:54 - перейти к сообщению
vanicon пишет:
Почемуто выдает вот такую ошибку:Fatal error: Call to a member function asXML() on a non-object in
Возможной причиной осуществления проявления предполагаемой ошибки, является применение однородных методов обработки к объектам ассоциированными с различными уровня элементного трактования, таких как контейнерный элемент и область чистого описания информационного поля; для осуществленя решения поставленной задачи необходимо включения условия, обеспечивающего разделение исполняемых действий для объктов, являющихся экземплярами механимзма обработки XML-документа и строковыми элементами соответственно
6. vanicon - 27 Февраля, 2011 - 15:42:23 - перейти к сообщению
Вот код где вызывается функция:
CODE (htmlphp):
скопировать код в буфер обмена
  1. title_b($item->passages->passage);

А ошибка вот эта показывается в 22 линии, а 22 линия эта вот эта строка:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $stripped = preg_replace('/<\/?(title|passage)[^>]*>/', '', $node->asXML());
7. CTAPbIu_KODEP - 28 Февраля, 2011 - 23:21:25 - перейти к сообщению
а ты строку где искать регулярку в Не понял ыбрал?
8. vanicon - 01 Марта, 2011 - 01:36:13 - перейти к сообщению
JustUserR может быть Вы мне поможете решить мою проблему либо заставив работать функцию код которой я выложил в посте или же написать что нибудь свое, из всего выше сказанного Вами я почти ничего не понял что и как сделать
9. ALEN - 01 Марта, 2011 - 10:04:13 - перейти к сообщению
simplexml_load_string не подходит?

 

Powered by ExBB FM 1.0 RC1