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]   

> Без описания
ab-vrn
Отправлено: 17 Июня, 2013 - 20:18:47
Post Id


Новичок


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


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




Всем доброго времени суток!
Уже какой день пытаюсь решить следующую задачу:
Есть каталог с файлами XML.
Каждая XML-ка имеет определённый классификатор (например, может прийти несколько xml с типом "договор" (<type>Договор</type>) или типом "Накладная" (<type>Накладная</type>) и т.д.). Содержание у них естественно разное.
Создал для примера два файла xml:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. dogovor1.xml
  3. <?xml version="1.0"?>
  4. <title>Договор на поставку ... № 778</title>
  5. <type>Договор</type>
  6. <data>10.04.2013</data>
  7. <text>Это договор...</text>

и
CODE (text):
скопировать код в буфер обмена
  1. zayavka1.xml
  2. <?xml version="1.0"?>
  3. <title>Заявка на поставку ...</title>
  4. <type>ДЗаявка</type>
  5. <data>5.03.2013</data>
  6. <text>Это заявка...</text>

Подскажите как вывести title только из тех xml, где <type>Договор</type>?
Забыл уточнить: xml-файлов с тегом например <type>Договор</type> может быть довольно много. Всего два файла я использовал только в качестве примера.

(Отредактировано автором: 17 Июня, 2013 - 21:09:51)

 
 Top
MADONZY
Отправлено: 19 Июня, 2013 - 20:19:20
Post Id


Гость


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


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




Используй SAX Подмигивание

PHP:
скопировать код в буфер обмена
  1. $xml = xml_parser_create("UTF-8");
  2.  
  3. function onText($xml, $data) {
  4.         return ($data == 'Договор') ? true:false;
  5. }
  6.  
  7. xml_parse($xml, file_get_contents("file.xml"));
 
 Top
ab-vrn
Отправлено: 19 Июня, 2013 - 20:29:50
Post Id


Новичок


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


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




Хм. Спасибо за идею. Вот только загвоздка вся в том, что ты работал с одним xml-файлом, а у меня их будет несколько: Договора, Заявки, Счёт-фактуры и т.д. Имена я их знаю, но как среди них поиск произвести?
 
 Top
MADONZY
Отправлено: 19 Июня, 2013 - 20:35:23
Post Id


Гость


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


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




так а в чем проблема? Улыбка
пусти содержимое папки в цикл и проработай как каждый файл Улыбка
 
 Top
ab-vrn
Отправлено: 19 Июня, 2013 - 20:36:56
Post Id


Новичок


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


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




Т.е. достаточно в xml_parse($xml, file_get_contents("file.xml")); указать корневой каталог с xml? например так: xml_parse($xml, file_get_contents("*.xml"));. Пробую. Ошибка.
 
 Top
MADONZY
Отправлено: 19 Июня, 2013 - 20:47:50
Post Id


Гость


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


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




Да нет же Улыбка
Смотри Улыбка

PHP:
скопировать код в буфер обмена
  1.  
  2. define("FOLDER","твоя папка");
  3. function onText($xml, $data) {
  4.     return ($data == 'Договор') ? true:false;
  5. }
  6.  
  7. $fd = opendir(FOLDER);
  8. $fdFilesArray = scandir('.');
  9.  
  10. $xml = xml_parser_create("UTF-8");
  11.  
  12. foreach($fdFilesArray as $files) {
  13.     if(is_file($files) && onText($xml, $data))
  14.         xml_parse($xml, file_get_contents($files));
  15. }
  16.  
  17. close($fd);
  18.  


Основу тебе дал, а дальше пробуй сам дорабатывать Улыбка Радость
 
 Top
ab-vrn
Отправлено: 19 Июня, 2013 - 20:54:11
Post Id


Новичок


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


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




ОК. Спасибо.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB