Привет всем. Нужна помощь. xml вида: Код (Text): <?xml version="1.0" encoding="UTF-8"?> <ФайлОбмена ВерсияФормата="2.0"> <Объект Нпп="1" Тип="Заявки"> <Свойство Имя="Номер" Тип="Строка"> <Значение>123</Значение> </Свойство> <Свойство Имя="Статус" Тип="Строка"> <Значение>Актуальный</Значение> </Свойство> <Свойство Имя="Контрагент" Тип="Строка"> <Значение>ООО Киндер</Значение> </Свойство> <Свойство Имя="ИННКонтрагента" Тип="Строка"> <Значение>1234567890</Значение> </Свойство> <Объект Нпп="1" Тип="СтрокаЗаявки"> <Свойство Имя="Наименование" Тип="Строка"> <Значение>Игрушка Свинка Пеппа</Значение> </Свойство> <Свойство Имя="Артикул" Тип="Строка"> <Значение>АРТ-485<Значение/> </Свойство> <Свойство Имя="Количество" Тип="Строка"> <Значение>1</Значение> </Свойство> <Свойство Имя="ЕдИзм" Тип="Строка"> <Значение>шт</Значение> </Свойство> </Объект> <Объект Нпп="2" Тип="СтрокаЗаявки"> <Свойство Имя="Наименование" Тип="Строка"> <Значение>Игрушка Микки Маус</Значение> </Свойство> <Свойство Имя="Артикул" Тип="Строка"> <Значение>АРТ-486<Значение/> </Свойство> <Свойство Имя="Количество" Тип="Строка"> <Значение>1</Значение> </Свойство> <Свойство Имя="ЕдИзм" Тип="Строка"> <Значение>шт</Значение> </Свойство> </Объект> </Объект> </ФайлОбмена> Нужно вывести Название контрагента, получается вывести только все значения, номер, статус, контрагент и инн. Код (Text): $data = $xml -> Объект; foreach($data as $ob2) { foreach($ob2 as $sv2) { foreach($sv2 -> Значение as $names) { echo "$names "."<br>"; } } } Как еще можно вывести данные о товаре, нужно вывести только один товар, обратиться к Нпп1. Всю голову сломал(
Вы столкнулись с типичной проблемой «XML-щиков»: чтобы достать один объект, нужно перелопатить в среднем полфайла или вообще распарсить все. XML-файлы не для этого нужны. --- Добавлено --- Вам же написали, что это «ФайлОбмена», а не файл хранения для быстрого извлечения произвольных объектов
Для начала прогоните свой xml файл через валидатор. Например вот: https://www.freeformatter.com/xml-validator-xsd.html Затем попробуйте вот это. Код (Text): <?php $s = simplexml_load_file('test.xml'); echo '<pre>'; print_r($s); ?>
Код (Text): SimpleXMLElement Object ( [@attributes] => Array ( [ВерсияФормата] => 2.0 ) [Объект] => SimpleXMLElement Object ( [@attributes] => Array ( [Нпп] => 1 [Тип] => Заявки ) [Свойство] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => Номер [Тип] => Строка ) [Значение] => 123 ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => Статус [Тип] => Строка ) [Значение] => Актуальный ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => Контрагент [Тип] => Строка ) [Значение] => ООО Киндер ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => ИННКонтрагента [Тип] => Строка ) [Значение] => 1234567890 ) ) [Объект] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Нпп] => 1 [Тип] => СтрокаЗаявки ) [Свойство] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => Наименование [Тип] => Строка ) [Значение] => Игрушка Свинка Пеппа ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => Артикул [Тип] => Строка ) [Значение] => АРТ-485 ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => Количество [Тип] => Строка ) [Значение] => 1 ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => ЕдИзм [Тип] => Строка ) [Значение] => шт ) ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [Нпп] => 2 [Тип] => СтрокаЗаявки ) [Свойство] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => Наименование [Тип] => Строка ) [Значение] => Игрушка Микки Маус ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => Артикул [Тип] => Строка ) [Значение] => АРТ-486 ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => Количество [Тип] => Строка ) [Значение] => 1 ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [Имя] => ЕдИзм [Тип] => Строка ) [Значение] => шт ) ) ) ) ) ) --- Добавлено --- А Возможно ли будет это всё перекинуть в базу mysql?
XPath поможет найти элемент в самом XML. А в базу записать - ну SimpleXMLDom, к примеру, плюс методы работы с базами...