Уважаемые программеры! Нужна помощь! Пишу парсер xml данных ЕГРЮЛ. Сам новичок, пишу так: есть вопрос ищу код в интернете, разбираю его и адаптирую под себя. Дык вот... для парсинга нашел, вроде бы, хороший инструмент xml_parser. Все бы ничего, но! Задача такая: парсю документ через foreach, соответственно нахожу елемент, в нем необходимый атрибут, вытаскиваю из него значение, вношу его в mysql. Процедура следующая: если нашел атрибут ОГРН, то далее ищу атрибуты ИНН, НаимЮЛСокр. Возникает следующая проблема: так как ОГРН и ИНН содержаться в одном элементе то все хорошо (создается строка в таблице в нее вносится ОГРН а далее обновляется ИНН, разумеется в таблице через поиск строки со значением равным Num присвоенным созданной строке, выполняю через переменную $nump), но вот НаимЮЛСокр находится в другом элементе, а соответственно я так понимаю что $nump обнуляется, и тут я теряю возможность идентифицировать строку в таблице. Вопрос 1. Как сохранить значение $nump для поиска в других элементах? Или другими словами, как использовать значения атрибутов одних элементов в других? Вопрос 2. Возможно кто то подскажет другие коды парсинга xml на русском? Код (Text): foreach ($attrs as $attr => $value) { if ($name=="СвЮЛ" and $attr=="ОГРН") { echo "ОГРН ".$value.'<br>'; $lins="SELECT * FROM test ORDER BY Num DESC LIMIT 1"; $result=mysqli_query($connect,$lins); $num= mysqli_num_fields($result); $row = mysqli_fetch_array($result); $nump=$row['Num']+1; echo "num ".$nump."<br>"; $newrow="INSERT INTO test (Num, GRN) VALUES ('".$nump."', '".$value."')"; $result=mysqli_query($connect,$newrow); } if ($name=="СвЮЛ" and $attr=="ИНН") { echo "ИНН ".$value."<br>"; $newrow="UPDATE test SET INN='".$value."' WHERE test.Num='".$nump."'"; $result=mysqli_query($connect,$newrow); } if ($name=="СвНаимЮЛ" and $attr=="НаимЮЛСокр") { echo "Наименование ".$value."<br>"; $newrow="UPDATE test SET Nameorg='".$value."' WHERE test.INN='".$inn."'"; $result=mysqli_query($connect,$newrow); } } Отрезок xml Код (Text): <?xml version="1.0" encoding="windows-1251"?> <Файл ИдФайл="VO_RUGFO_0000_0100_20170405_73fb69f3-98c3-469d-9134-7cb844107ffb" ВерсФорм="4.05" ТипИнф="ЕГРЮЛ_ОТКР_СВЕД" ВерсПрог="1.0.0.2" КолДок="23"> <ИдОтпр ДолжОтв="Главный госналогинспектор аналитического отде" Тлф="(8772)56-80-29"><ФИООтв Фамилия="Алиева" Имя="Эльвира" Отчество="Эхиаровна" /> </ИдОтпр> <Документ ИдДок="f2fdc916-8fb4-4053-829b-141219907f9c"> <СвЮЛ ДатаВып="2017-04-04" ОГРН="1120107002014" ДатаОГРН="2012-12-25" ИНН="0107023459" КПП="010701001" СпрОПФ="ОКОПФ" КодОПФ="12300" ПолнНаимОПФ="Общества с ограниченной ответственностью"> <СвНаимЮЛ НаимЮЛПолн="ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "ПРЕСТИЖ"" НаимЮЛСокр="ООО "ПРЕСТИЖ""> <ГРНДата ГРН="1120107002014" ДатаЗаписи="2012-12-25" /> </СвНаимЮЛ> <СвАдресЮЛ> <АдресРФ Индекс="385140" КодРегион="01" КодАдрКладр="010050000270094" Дом="39А" Кварт="210"> <Регион ТипРегион="РЕСПУБЛИКА" НаимРегион="АДЫГЕЯ" /> <Район ТипРайон="РАЙОН" НаимРайон="ТАХТАМУКАЙСКИЙ" /> <НаселПункт ТипНаселПункт="ПОСЕЛОК ГОРОДСКОГО ТИПА" НаимНаселПункт="ЯБЛОНОВСКИЙ" /> <Улица ТипУлица="УЛИЦА" НаимУлица="ЛЕНИНА" /> <ГРНДата ГРН="1120107002014" ДатаЗаписи="2012-12-25" /> </АдресРФ> </СвАдресЮЛ>
Проблему я понял. foreach это не for а массив и соответственно если я вытаскиваю данные из одного элемента его переменные никак не относятся к другому. И если я просто вытаскиваю переменные атрибутов, то это лишь набор строк. Потому перефразирую свой вопрос: В xml данные по многим организациям идут в определенной последовательности: элемент: ИНН, ОРГН элемент: Наименование элемент: Адрес элемент: Директор далее такой же блок по другой компании и так далее... Как мне спарсить данные так чтобы определять какое Наименование к какому ИНН принадлежит и какой адрес к какому ИНН и так далее?
@Кирилл_QBX, чувак, не надо ёрничать. Нихрена не понятно, что ты там к чему пристыковаваешь. Что там должно сохранится и тд. Задавать вопрос надо грамотно. XML файл и структуру БД прилагать к вопросу. Ну и в целом, правилами форума запрещены обсуждения парсеров, хотя распарсить xml это немного другая история.