Вот такая беда, прошу не ругаться и ничем не кидать.... С прочтения документации пробовал, не особо получается 50/50 на рус/eng Подтолкните куда копать, хочу сдернуть все данные и занести в MYSQL, каждый тег в свою колонку таблицы. Код (Text): <?xml version="1.0" encoding="utf-8"?> <TaskArchive xmlns:xsi="http://www.ru.org/" xmlns:xsd="http://www.ru.org/" version="1.0" xmlns="http://go.ru/"> <Description> <UserName>Иванов И.И.</UserName> <Division>НИШТЯК</Division> <ExportDate>2015-04-30T11:34:21.0224791+04:00</ExportDate> </Description> <Data><Task xmlns="http://ya.ru/"><ShortTask UniqueId="3d77b5c3-3ca2-99b9-aee6-cffa3d4be267"><Activity Title="МРТТ" /><CategoryType>Order</CategoryType><Object Title="99д" Caption="99" /><TaskNumber>5875</TaskNumber><TaskYear>2015</TaskYear><TaskDate>2015-04-27</TaskDate><BeginDate>2015-04-30</BeginDate><BlankNumber>579531598</BlankNumber><ActivityPlace Title="КАКАЯТО ЕРУНДА, BVVB" /><ActivityPhone>4654564321456</ActivityPhone><CriminalCase Title="ААА" Caption="КК" /><CriminalCaseNumber>05-999/14</CriminalCaseNumber><CriminalCaseName>75627562</CriminalCaseName><JoinOpu>0</JoinOpu><Division Title="МАМБА" Caption="99EFD99D-5E99-9999-BB99-3B02D03E9B99" /><TaskType>1</TaskType><IMEI>9999999999</IMEI><PrivacyLevel Title="Низкий" Caption="3" /><State>WithoutTaskMission</State></ShortTask><PhysAddress UniqueId="dfddae9d-9b99-4c0d-99ce-9999e9999999"><Town Title="-" Caption="-" /></PhysAddress><Physical UniqueId="999e99ae-9999f-999f-a999-99d9939a9991f"><LastName Title="НЕ УСТАНОВЛЕН" Caption="НЕ " /></Physical><TaskInitiator><Subdivision Title="ИИИ ОООО" Caption="ЙЙ" /><Agency Title="БЛАБЛАБЛАБЛА" /><FullName Title="ИВАНОВ И.И." /><PhoneA>54154132415</PhoneA><PhoneB>4354646; 64646546</PhoneB></TaskInitiator><Orientation><CriminalDirection Title="ЕЩЕ ЧТОТО" /><OrientationDescription>ВОТ ТАК ВОТ </OrientationDescription></Orientation><Target><Target>КАКОЕТО НАЗВАНИЕ</Target></Target><Sanction><JuridicalOrder>99</JuridicalOrder><Period>180</Period><SanctionDate>2015-04-27</SanctionDate><IsFromConnectionMoment>0</IsFromConnectionMoment><SanctionPerson><Agency>ТРАМПАМПАМ</Agency><Post>ИВАН</Post><FullName>ИВАНОВИЧ</FullName></SanctionPerson></Sanction><AgencyDirectionAlt><CaptionTo>ТРАТАТАТА</CaptionTo><CaptionFor>ИВАНЧЕНКО</CaptionFor></AgencyDirectionAlt><TaskEffectiveness><EffectivenessSign>0</EffectivenessSign><JudgeLegalize>0</JudgeLegalize></TaskEffectiveness><CriminalClauses><CriminalClause><ParagraphNumber Title="956" Caption="ВОВОВ" /><SubparagraphNumber>2</SubparagraphNumber></CriminalClause></CriminalClauses></Task></Data> </TaskArchive> Вывод всего файла получается так: Код (Text): <?php //Файл test.xml содержит XML-документ с корневым элементом //и, по крайней мере, элемент /[root]/title. if (file_exists('test.xml')) { $xml = simplexml_load_file("test.xml"); print_r($xml); } else { exit('Не удалось открыть файл test.xml.'); } ?> а как вывести каждое значение? Пытался так не выходит: Код (Text): $TaskArchive = new SimpleXMLElement($xmlstr); echo $TaskArchive->Description[0]->UserName;
Что? Зачем вы создаёте новый объект? Код (Text): $xml = simplexml_load_file("test.xml"); этой строчкой вы интерпретировали файл в объект. Всё, вот он, родимый. А дальше работаете уже с ним. print_r вам покажет структуру объекта. И дальше вперёд $xml->что_то->ещё_что_то
Друг Можешь показать на 1 обьекте, любом, с 10 устра бьюсь ну никак... Вставлять вместо Код (Text): print_r($xml); правильно понял?
Код (Text): $xml->TaskArchive->Description->UserName; Пробовал тоже нет, руки прям опускаются ='''' print_r($xml); Код (Text): SimpleXMLElement Object ( [@attributes] => Array ( [version] => 1.0 ) [Description] => SimpleXMLElement Object ( [UserName] => Иванов И.И. [Division] => НИШТЯК [ExportDate] => 2015-04-30T11:34:21.0224791+04:00 ) [Data] => SimpleXMLElement Object ( [Task] => SimpleXMLElement Object ( [ShortTask] => SimpleXMLElement Object ( [@attributes] => Array ( [UniqueId] => 3d77b5c3-3ca2-99b9-aee6-cffa3d4be267 ) [Activity] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => МРТТ ) ) [CategoryType] => Order [Object] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => 99д [Caption] => 99 ) ) [TaskNumber] => 5875 [TaskYear] => 2015 [TaskDate] => 2015-04-27 [BeginDate] => 2015-04-30 [BlankNumber] => 579531598 [ActivityPlace] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => КАКАЯТО ЕРУНДА, BVVB ) ) [ActivityPhone] => 4654564321456 [CriminalCase] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => ААА [Caption] => КК ) ) [CriminalCaseNumber] => 05-999/14 [CriminalCaseName] => 75627562 [JoinOpu] => 0 [Division] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => МАМБА [Caption] => 99EFD99D-5E99-9999-BB99-3B02D03E9B99 ) ) [TaskType] => 1 [IMEI] => 9999999999 [PrivacyLevel] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => Низкий [Caption] => 3 ) ) [State] => WithoutTaskMission ) [PhysAddress] => SimpleXMLElement Object ( [@attributes] => Array ( [UniqueId] => dfddae9d-9b99-4c0d-99ce-9999e9999999 ) [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => - [Caption] => - ) ) ) [Physical] => SimpleXMLElement Object ( [@attributes] => Array ( [UniqueId] => 999e99ae-9999f-999f-a999-99d9939a9991f ) [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => НЕ УСТАНОВЛЕН [Caption] => НЕ ) ) ) [TaskInitiator] => SimpleXMLElement Object ( [Subdivision] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => ИИИ ОООО [Caption] => ЙЙ ) ) [Agency] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => БЛАБЛАБЛАБЛА ) ) [FullName] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => ИВАНОВ И.И. ) ) [PhoneA] => 54154132415 [PhoneB] => 4354646; 64646546 ) [Orientation] => SimpleXMLElement Object ( [CriminalDirection] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => ЕЩЕ ЧТОТО ) ) [OrientationDescription] => ВОТ ТАК ВОТ ) [Target] => SimpleXMLElement Object ( [Target] => КАКОЕТО НАЗВАНИЕ ) [Sanction] => SimpleXMLElement Object ( [JuridicalOrder] => 99 [Period] => 180 [SanctionDate] => 2015-04-27 [IsFromConnectionMoment] => 0 [SanctionPerson] => SimpleXMLElement Object ( [Agency] => ТРАМПАМПАМ [Post] => ИВАН [FullName] => ИВАНОВИЧ ) ) [AgencyDirectionAlt] => SimpleXMLElement Object ( [CaptionTo] => ТРАТАТАТА [CaptionFor] => ИВАНЧЕНКО ) [TaskEffectiveness] => SimpleXMLElement Object ( [EffectivenessSign] => 0 [JudgeLegalize] => 0 ) [CriminalClauses] => SimpleXMLElement Object ( [CriminalClause] => SimpleXMLElement Object ( [ParagraphNumber] => SimpleXMLElement Object ( [@attributes] => Array ( [Title] => 956 [Caption] => ВОВОВ ) ) [SubparagraphNumber] => 2 ) ) ) ) ) 2 мин, пойду покурю, не могу уже.....
пустая страница код: Код (Text): <?php //Файл test.xml содержит XML-документ с корневым элементом //и, по крайней мере, элемент /[root]/title. if (file_exists('2576.xml')) { $xml = simplexml_load_file("2576.xml"); $xml->Description->UserName; } else { exit('Не удалось открыть файл 2576.xml.'); } ?>
Также. Вот, элемент [Title] => МРТТ, теперь только найти к этому тайтлу путь для обращения. А в бд почитайте mysqli(). Создаёте соединение с базой, затем создаёте запрос INSERT в таблицу.
Код (Text): echo $xml->Data->Task->ShortTask->Activity ["Title"] ; Правильный ход мысли? вроде бы выводит все ок, спасибо "за_наводку" ) Добавлено спустя 54 минуты 49 секунд: Так вот, еще раз хочу поблагодарить Вас за помощь в создании парсера! Теперь преступаю к insert-y: Код (Text): <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Ошибка соединения: ' . mysql_error()); } mysql_select_db('mydb'); mysql_query("INSERT INTO mytable (1,2,3,4,5,6,7,8.................) values ('1,2,3,4,5,6,7,8.................')"); ?> Как правильно забрать значения из echo? толкнете меня?
$mytitle = $xml->Data->Task->ShortTask->Activity ["Title"] ; https://php.net/manual/ru/language.variables.basics.php
Вам друг тоже огромное спасибо =) разобрался =) Как воспользоваться кнопкой отправки, чтобы не прописывать файлик в ручную а выбирать и наживать загрузить?! нашел такой код Код (Text): <input type="file"/> как сослаться на парсер, и что нужно в нем добавить или изменить?
samara проще одни раз прочитать документацию https://php.net/manual/ru/ https://php.net/manual/ru/features.file-upload.post-method.php
Пока мне некогда отвечать, но про одну вещь сразу скажу: вы меня недочитали. Вы используете mysql, а же говорил про mysqli, разные вещи. Если уж и учиться - сразу выбирать правильное. mysql устарел и более поддерживаться не будет. Кроме того, может быть в дальнейшем вообще выпелен из php. Не поленитесь, переделайте.
ну пока переделываете - намекну. допустим, поле в бд 1 - это UserName, а 2 - тайтл, тогда так: Код (PHP): $userName = $xml->Description->UserName; $activityTitle = $xml->Data->Task->ShortTask->Activity["Title"]; mysql_query("INSERT INTO mytable (userName,activityTitle,3,4,5,6,7,8.................) values ('$userName,$activityTitle,3,4,5,6,7,8.................')"); Добавлено спустя 1 минуту 26 секунд: ну это через mysql_query, на мускулИ сами переделаете, я думаю.
С этим разобрался, стуктуру базы создал, заливается идеально в базу, сейчас с кнопкой мучаюсь: Код (Text): <!-- Тип кодирования данных, enctype, ДОЛЖЕН БЫТЬ указан ИМЕННО так --> <form enctype="multipart/form-data" action="pars.php" method="POST"> <!-- Поле MAX_FILE_SIZE должно быть указано до поля загрузки файла --> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <!-- Название элемента input определяет имя в массиве $_FILES --> Выберите файл: <input name="userfile" type="file" /> <input type="submit" value="Загрузить в базу" /> </form> ну и соответственно pars.php Грубо говоря : Код (Text): <?php //Файл test.xml содержит XML-документ с корневым элементом //и, по крайней мере, элемент /[root]/title. if (file_exists('test.xml')) { $xml = simplexml_load_file("test.xml"); print_r($xml); } else { exit('Не удалось открыть файл test.xml.'); } ?>
а. вроде понял. Т.е. вы хотите сначала загрузить файл, а затем его и парсить? Честно, не знаю, можно ли будет считать файл прямо из массива $_FILES. Но попробуйте, если никто другой не отпишется. Если так работать будет, то просто Код (Text): $file = $_FILES['userfile']; $xml = simplexml_load_file($file); Если не выйдет так, то придётся сохранять файл на сервере, а затем уже использовать его в скрипте.
Очень обидно, Но пустой экран к сожелению =( А про это где можно прочитать или пример посмотреть?! Добавлено спустя 3 минуты 56 секунд: хотя в логах апача Код (Text): [Tue May 12 17:53:29.079416 2015] [:error] [pid 13405] [client 192.168.192.1:63846] PHP Parse error: syntax error, unexpected '}' in /var/www/html/par$ Код (Text): $ml/pars.php on line 125, referer: http://192.168.192.134/upload.php
125 строка Код (Text): } else { Может это изменить нужно?! Код (Text): print_r($xml); } else { exit('Не удалось открыть файл test.xml.'); } ?> 124-126: Код (Text): } else { exit('Не удалось открыть файл xml.'); }