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. Помогите разобраться.
Покинул форум
Сообщений всего: 8
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Сразу скажу что я новичек в php, но хочу научится)
Решил написать парсер данных из XML. Причина - программа сохраняет отчеты исключительно в XML. Из отчета надо достать конкретные данные.
для примера взял кусок отчета:
Из всего этого мне надо вытащить только информацию, заключенную между тегами <Process_Name></Process_Name> и <Path></Path> (хотябы)
Ну и вот собственно то, что я написал:
ПС. В идеале хотелось бы, чтобы результат парсинга выглядел как табличка из четырех столбцов: в первом значение Process_Name, во втором Path,в третьем Operation и в четвертом Result
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Nokse пишет:
$file = "C:\Documents and Settings\Dark Soul\Рабочий стол\Logfile4.XML";
Проэкранируйте все обратные слеши - а то путь может трактоваться неверно - или замените слеши на прямые (PHP допускает пути с прямыми слешами даже по windows)
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Nokse
Отправлено: 23 Января, 2010 - 18:15:53
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Мелкий, спасибо, но у меня почему-то ничего не происходит при использовании представленного вами кода (сразу говорю что я подставлял вместо "файл XML" адрес до нужного мне файла, естественно в двойных кавычках.) Поэтому вопрос - для работы с simpleXML надо какие-то дополнительные модули подключать, или он встроен в стандартный пхп ? простите уж за нубский вопрос)
JustUserR, спасибо за совет, я теперь буду учитывать эту деталь, но у меня файл открывается как раз нормально. Просто выборка идет вообще всего, что заключено между тегами, а не между конкретно мной заданными с помощью конструкции switch. Я понимаю, что где-то я очень глупо написал код, но не могу разобратся, где именно.
Мелкий
Отправлено: 23 Января, 2010 - 19:18:19
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Nokse пишет:
Поэтому вопрос - для работы с simpleXML надо какие-то дополнительные модули подключать, или он встроен в стандартный пхп ?
Если у реального другая структура, то надо будет немного поменять код.
----- PostgreSQL DBA
Nokse
Отправлено: 23 Января, 2010 - 19:31:56
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Мелкий нет, написало "Warning: simplexml_load_file(): I/O warning : failed to load external entity "Logfile4.XML" in C:\Sites\Home\localhost\www\warmblue\parser1.php on line 13 bool(false) "
Что интерестно, при использовании предыдущего кода ничего не писало.
В строке 13 находится $xml = simplexml_load_file("Logfile4.XML"); Называется именно так как и написал в строке загрузки файла.
Сам файл лежит в одной директории с фалом парсера для простоты.
Про структуру файла - вы почти угадали. Только у меня <eventlist> а не <events>
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Тогда у меня хорошие идеи кончились. У меня работает нормально...
Файл точно лежит под таким именем рядом со скриптом? Функция жалуется, что не может загрузить этот файл...
----- PostgreSQL DBA
Nokse
Отправлено: 23 Января, 2010 - 23:42:45
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Мелкий, точно с таким именем и точно в той же папке.
вот:
Честно, я сам в шоке
Мелкий
Отправлено: 23 Января, 2010 - 23:57:22
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Покинул форум
Сообщений всего: 8
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Я сейчас мозгами двинусь....
"Warning: file_get_contents(Logfile4.XML): failed to open stream: No such file or directory in C:\Sites\Home\localhost\www\warmblue\parser1.php on line 2 "
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Nokse Может быть относительный путь остановлен в другой директории - попробуйте указать по очереди виртуальный путь (С / от document_root) и абсолютный путь (Начиная с буквы диска)
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Nokse
Отправлено: 24 Января, 2010 - 15:42:50
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
JustUserR, спасибо, действительно, указав парсеру абсолютный путь к файлу я решил проблему с открытием файла и считыванием его в переменную с помощью simplexml_load_file. Но вот попытки сделать выборку из XML не привели к успеху... и я затрудняюсь сказать почему...
JustUserR
Отправлено: 24 Января, 2010 - 16:06:32
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Nokse пишет:
JustUserR, спасибо, действительно, указав парсеру абсолютный путь к файлу я решил проблему с открытием файла и считыванием его в переменную с помощью simplexml_load_file
Пожалуйста Действительно при различных настроках PHP использует различные пути в качестве базовых (А библиотеки могут использовать еще свои) поэтому лучше указывать абсолютные пути если появляется непонятная ошибка отсутствия файла когда он на самом деле есть
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Nokse
Отправлено: 24 Января, 2010 - 16:28:23
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Используя метод научного тыка, все же получилось с горем пополам сделать выборку из файла. Но таким кодом, что я сам не понимаю, почему оно работает.
Код ниже:
Но что самое интерестное, как только я закоментировал строку 4 и 5, все перестало работать. Тоесть вообще ничто не передается на вывод, если закоментировать 4, и 5 строки... я в недоумении...
Мелкий
Отправлено: 24 Января, 2010 - 17:57:00
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.