Простой хлеб

SimpleXML. Начало работы

Расширение SimpleXML предоставляет очень простой и легкий в использовании набор инструментов для преобразования XML в объект, с которым можно затем работать через его свойства и с помощью итераторов. SimpleXML присутствует в PHP начиная с версии 5.

Для наглядности, в качестве примера будем использовать XML, описывающий простой кулинарный рецепт, взятый с википедии.

   Мука Дрожжи Тёплая вода Соль Смешать все ингредиенты и тщательно замесить. Закрыть тканью и оставить на один час в тёплом помещении. Замесить ещё раз, положить на противень и поставить в духовку.  

Загрузка XML

Прежде чем начать обрабатывать данные, их нужно сначала загрузить. Для этого достаточно использовать функцию simplexml_load_file(). Она принимает имя файла, и возвращает объект типа SimpleXMLElement. И с этим объектом уже можно будет работать.

$xml = simplexml_load_file('recipe.xml'); print_r($xml);
SimpleXMLElement Object ( [@attributes] => Array ( [name] => хлеб [preptime] => 5 [cooktime] => 180 ) [title] => Простой хлеб [ingredient] => Array ( [0] => Мука [1] => Дрожжи [2] => Тёплая вода [3] => Соль ) [instructions] => SimpleXMLElement Object ( [step] => Array ( [0] => Смешать все ингредиенты и тщательно замесить. [1] => Закрыть тканью и оставить на один час в тёплом помещении. [2] => Замесить ещё раз, положить на противень и поставить в духовку. ) ) )

Кроме того, существует еще и функция simplexml_load_string(), которая берет XML не из файла, а из строки.

$str = file_get_contents('recipe.xml'); $xml = simplexml_load_string($str);

Получение данных

SimpleXML предоставляет очень удобный способ получения данных из XML. К примеру, для того чтобы получить какой-либо узел документа достаточно просто обратится к этому узлу по имени:

// Выводит содержимое элемента echo $xml->title;

Поскольку ингредиентов у нас несколько, то $xml->ingredient будет массивом из четырех элементов. Перебрать все ингредиенты можно так:

foreach ( $xml->ingredient as $ingredient )  echo $ingredient . '
'
; >

Для того что бы получить, к примеру, третий ингредиент (теплая вода), достаточно обратиться к нему по индексу:

$xml->ingredient[2]; // элементы массивы нумеруются с нуля

Шаги приготовления (step) являются дочерними для элемента instructions, чтобы получить их, нужно сначала получить instructions:

echo $xml->instructions->step; // выводит текст первого шага

Атрибуты

Работать с атрибутами тоже очень легко. Они доступны как ассоциативный массив своего элемента. То есть, для того что бы получить название рецепта (атрибут name корневого узла recipe), достаточно написать:

Или, для получения количества первого ингредиента можно написать так:

Сейчас мы рассмотрели только один способ получения данных: когда нам уже известны названия узлов и атрибутов. Но случается и так, когда структура XML файла заранее не известна, но нам нужно его обработать. SimpleXML предоставляет и такую возможность.

Получение дочерних узлов

Метод children() возвращает список дочерних элементов. В нашем случае $xml — корневая ветвь, и если написать:

$nodes = $xml->children(); echo $nodes[0];

то получим содержимое элемента , а если:

$nodes = $xml->children(); echo $nodes[2];

Обойти все дочерние ветви первого уровня легко можно при помощи цикла foreach:

  Простой хлеб Мука Дрожжи Тёплая вода Соль 

Фукция count() позволяет определить количество дочерних узлов.

Для того, чтобы получить имя текущий ветви, используется метод getName():

$nodes = $xml->children(); echo $nodes[0]->getName(); // выведет title

Получение атрибутов

Получить список атрибутов для текущего элемента поможет метод attributes(). По функционалу и механизму работы он аналогичен методу children(), за тем исключением, что здесь идет работа с атрибутами.

$nodes = $xml->children(); // все атрибуты узла Мука foreach ( $nodes[1]->attributes() as $name => $value )  echo 'атрибут ' . $name . ', значение ' . $value . '
'
; >
атрибут amount, значение 3
атрибут unit, значение стакан

Изменение значений узлов и атрибутов

Объект SimpleXMLElement позволяет манипулировать всеми элементами:

$xml = simplexml_load_file('recipe.xml'); $xml->title = 'Ржаной хлеб'; $xml->ingredient[0] = 'Ржаная мука'; print_r($xml); $xml->ingredient[2]['amount'] = '300'; $xml->ingredient[2]['unit'] = 'грамм'; print_r($xml->ingredient[2]);
SimpleXMLElement Object ( [@attributes] => Array ( [name] => хлеб [preptime] => 5 [cooktime] => 180 ) [title] => Ржаной хлеб [ingredient] => Array ( [0] => Ржаная мука [1] => Дрожжи [2] => Тёплая вода [3] => Соль ) [instructions] => SimpleXMLElement Object ( [step] => Array ( [0] => Смешать все ингредиенты и тщательно замесить. [1] => Закрыть тканью и оставить на один час в тёплом помещении. [2] => Замесить ещё раз, положить на противень и поставить в духовку. ) ) )
SimpleXMLElement Object ( [@attributes] => Array ( [amount] => 300 [unit] => грамм ) [0] => Тёплая вода )

Добавление элементов и атрибутов

Чтобы добавить дочерний элемент к текущему, достаточно использовать метод addChild(). Первым параметром идет имя нового элемента, вторым значение, которое задавать необязательно.

Добавим еще один шаг к инструкциям:

$node = $xml->instructions; // получаем ветвь инструкций $node->addChild('step', 'Почитать газету'); // добавляем элемент print_r($node);
SimpleXMLElement Object ( [step] => Array ( [0] => Смешать все ингредиенты и тщательно замесить. [1] => Закрыть тканью и оставить на один час в тёплом помещении. [2] => Замесить ещё раз, положить на противень и поставить в духовку. [3] => Почитать газету ) )

Метод addAttribute() позволяет добавить атрибут к текущему узлу. Первый параметр это имя атрибута, второй значение.

$node = $xml->instructions; // получаем ветвь инструкций $step = $node->addChild('step', 'Почитать газету'); // добавляем элемент $step->addAttribute('newspaper', 'Аргументы и факты'); // добавляем артибут print_r($step);
SimpleXMLElement Object ( [@attributes] => Array ( [newspaper] => Аргументы и факты ) [0] => Почитать газету )

Использование XPath

SimpleXML включает в себя встроенную поддержку XPath. Поиск всех элементов :

foreach ($xml->xpath('//step') as $step)  echo $step . '
'
; >
Смешать все ингредиенты и тщательно замесить.
Закрыть тканью и оставить на один час в тёплом помещении.
Замесить ещё раз, положить на противень и поставить в духовку.

Взаимодействие с DOM

PHP может преобразовывать XML узлы из SimpleXML в формат DOM и наоборот. Этот пример показывает, как можно изменить DOM элемент в SimpleXML:

$dom = new DOMDocument('1.0', 'utf-8'); $dom->load('recipe.xml'); $xml = simplexml_import_dom($dom);

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (100)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (147)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (69)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Import XML File in PHP

import xml file in php

In this tutorial, we will create a Simple Import XML File using PHP. This code can import the XML file to a data table when the user uploads the XML file. The code uses simplexml_load_file to load a block of data from the uploaded XML file to view it as a readable table format. This is a user-friendly kind of program feel free to modify it.

We will be using XML as a markup language that utilizes in PHP as HTML data. It is designed to store and transport data that can be manipulated within the local server.

Getting Started:

First, you have to download & install XAMPP or any local server that runs PHP scripts. Here’s the link for the XAMPP server https://www.apachefriends.org/index.html .

And, this is the link for the bootstrap that I used for the layout design https://getbootstrap.com/ .

Creating The Interface

This is where we will create a simple form for our application. To create a copy of the form and write it into your text editor, then save it as index.php .

        

PHP - Simple Import XML File


Upload XML here

Creating the Main Function

This code contains the main function of the application. This code will upload and display a xml data when the button is clicked. To make this just copy and write these block of codes below inside the text editor, then save it as import.php.

  member as $member) < echo '  '; > ?>
Firstname Lastname Address
'.$member->firstname.' '.$member->lastname.' '.$member->address.'
else< echo""; > >else < ?>
Firstname Lastname Address
?>

There you have it we successfully created Simple Import XML File using PHP. I hope that this simple tutorial help you to what you are looking for. For more updates and tutorials just kindly visit this site. Enjoy Coding!

Источник

Import Data from XML file to PHP and MySQL

Create a new MySQL database named demo and execute the SQL code below:

-- phpMyAdmin SQL Dump -- version 4.6.4 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: Sep 30, 2017 at 05:31 AM -- Server version: 5.7.14 -- PHP Version: 7.0.10 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `demo` -- -- -------------------------------------------------------- -- -- Table structure for table `product` -- CREATE TABLE `product` ( `id` int(11) NOT NULL, `name` varchar(250) NOT NULL, `price` decimal(10,2) NOT NULL, `quantity` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Dumping data for table `product` -- INSERT INTO `product` (`id`, `name`, `price`, `quantity`) VALUES (1, 'mobile 1', '20.00', 7), (2, 'computer 1', '1.00', 3), (3, 'computer 2', '1.00', 3), (4, 'computer 3', '1.00', 3), (5, 'fashion 1', '1.00', 3), (6, 'fashion 2', '1.00', 3), (7, 'fashion 3', '1.00', 3), (8, 'fashion 4', '1.00', 3); -- -- Indexes for dumped tables -- -- -- Indexes for table `product` -- ALTER TABLE `product` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `product` -- ALTER TABLE `product` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 

XML File

Create a xml file containing the product information you need to import

   p01 Name 1 100 2  p02 Name 2 200 3  p03 Name 3 300 5  p04 Name 4 110 7   

Database Connection

Create PHP file named connect.php. Use PDO connect to demo database with default account:


Username: root
Password:

Import Page

Create PHP file named index.php. This file will allow the user to select the xml file and import the data into the MySQL database

prepare('insert into product(id, name, price, quantity) values(:id, :name, :price, :quantity)'); $stmt->bindValue('id', $product->id); $stmt->bindValue('name', $product->name); $stmt->bindValue('price', $product->price); $stmt->bindValue('quantity', $product->quantity); $stmt->execute(); > > $stmt = $conn->prepare('select * from product'); $stmt->execute(); ?> XML File  

Product List

fetch(PDO::FETCH_OBJ)) < ?> ?>
Id Name Price Quantity
id; ?> name; ?> price; ?> quantity; ?>

Demo

Import Page

Product Table After Import

References

I recommend you refer to the books below to learn more about the knowledge in this article:

Источник

Читайте также:  Long short term memory networks with python
Оцените статью