Работа с XML средствами PHP
Давайте начнем с самого простого: загрузки и выгрузки XML-документа с использованием DOM. Основной класс, который мы будем использовать, это DOMDocument. Через него можно создавать новые документы, сохранять их, а также загружать существующие.
// Создаём XML-документ версии 1.0 с кодировкой utf-8 $dom = new DOMDocument('1.0', 'utf-8'); // Текст XML-документа $strXML = '- Первый
- Второй
'; // Загружаем XML-документ из строки $dom->loadXML($strXML); /* // Загружаем XML-документ из файла $dom->load('doc.xml'); // Убираем лишние пробелы и отступы $dom->preserveWhiteSpace = false; */ // Сохраняем XML-документ как строку и выводим в браузер $xml = $dom->saveXML(); echo htmlspecialchars($xml); // Сохраняем XML-документ в файл $dom->save('doc.xml'); ?>
Как получить список дочерних узлов
// Создаём XML-документ $dom = new DOMDocument('1.0', 'utf-8'); // Текст XML-документа $strXML = '- Первый
- Второй
'; // Загружаем XML-документ из строки $dom->loadXML($strXML); // Получаем корневой элемент $root = $dom->documentElement; // Получаем список дочерних узлов $childs = $root->childNodes; for ($i = 0; $i $childs->length; $i++) $child = $childs->item($i); // Выводим информацию об узле echo $child->nodeName . ' : ' . $child->nodeValue . '
'; > ?>
Свойство nodeName содержит название элемента (в данном случае, item ), а nodeValue содержимое элемента (в данном случае, « Первый » и « Второй »).
Работа с атрибутами узлов
Давайте посмотрим, как получить значение атрибута узла, устанавить новое значение, создать и удалить атрибут:
// Создаём XML-документ $dom = new DOMDocument('1.0', 'utf-8'); // Текст XML-документа $strXML = '- Первый
- Второй
- Третий
'; // Загружаем XML-документ из строки $dom->loadXML($strXML); // Получаем корневой элемент $root = $dom->documentElement; // Первый дочерний элемент $first = $root->firstChild; // Следующий сестринский элемент $second = $first->nextSibling; // Последний дочерний элемент $third = $root->lastChild; // Выводим информацию о первом дочернем элементе echo 'Элемент ' . $first->nodeName . ', значение «' . $first->nodeValue . '», атрибут id'); // Устанавливаем атрибут id для второго дочернего элемента $second->setAttribute('id', 2); // Устанавливаем атрибут id для третьего дочернего элемента $attr = $dom->createAttribute('id'); $attr->value = 3; $third->appendChild($attr); // Удаляем атрибут id для третего дочернего элемента if ( $third->hasAttribute('id') ) $third->removeAttribute('id'); ?>
Создание XML-документа
// Создаём XML-документ $dom = new DOMDocument('1.0', 'utf-8'); // Создаём корневой элемент $root = $dom->createElement('users'); $dom->appendChild($root); $users = array( array('id' => 1, 'name' => 'Николай Петров', 'email' => 'petrov.n@mail.ru'), array('id' => 2, 'name' => 'Петр Иванов', 'email' => 'ivanov.p@mail.ru'), array('id' => 3, 'name' => 'Сергей Смирнов', 'email' => 'smirnov.s@mail.ru') ); foreach ( $users as $value ) // Создаём узел $user = $dom->createElement('user'); // Добавляем дочерний элемент для $root->appendChild($user); // Устанавливаем атрибут id для узла $user->setAttribute('id', $value['id']); // Создаём узел с текстом внутри $name = $dom->createElement('name', $value['name']); // Добавляем дочерний элемент для $user->appendChild($name); // Создаём узел $email = $dom->createElement('email'); // Создаем текстовой узел $text = $dom->createTextNode($value['email']); // Создаем текстовой узел внутри конструкции // $text = $dom->createCDATASection($value['email']); // Добавляем текстовой узел для $email->appendChild($text); // Добавляем дочерний элемент для $user->appendChild($email); > // Сохраняем полученный XML-документ в файл $dom->save('users.xml'); ?>
Содержимое файла users.xml:
Николай Петров petrov.n@mail.ru Петр Иванов ivanov.p@mail.ru Сергей Смирнов smirnov.s@mail.ru
Извлечение данных из xml-документа
Давайте теперь извлечем данные из документа users.xml обратно в массив:
// Создаём XML-документ $dom = new DOMDocument('1.0', 'utf-8'); // Загружаем XML-документ из файла $dom->load('users.xml'); // Получаем корневой элемент $root = $dom->documentElement; // Получаем дочерние элементы корневого элемента $users = $root->childNodes; // Перебираем полученные элементы foreach ($users as $user) // Получаем значение атрибута id узла $id = $user->getAttribute('id'); // Получаем дочерние элементы узла $info = $user->childNodes; // Получаем значение узла $name = $info->item(0)->nodeValue; // Получаем значение узла $email = $info->item(1)->nodeValue; // Записываем данные в массив $array[] = array('id' => $id, 'name' => $name, 'email' => $email); > print_r($array); ?>
Array ( [0] => Array ( [id] => 1 [name] => Николай Петров [email] => petrov.n@mail.ru ) [1] => Array ( [id] => 2 [name] => Петр Иванов [email] => ivanov.p@mail.ru ) [2] => Array ( [id] => 3 [name] => Сергей Смирнов [email] => smirnov.s@mail.ru ) )
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)
Embed Xml In Html Page
CDATA is meant for embedding character data into XML, not embedding XML into HTML (HTML doesn’t have such delimiters). – BoltClock. Oct 3, 2012 at 15:47. As long as the XML doesn’t contain anywhere, you should be able to just put it inside the script tags (with no CDATA section). Give the script a custom type so it doesn’t get
.
How to embed an XML/XSLT document into an HTML page
Include directly the XML into the HTML file: that does not work. Parse the XML/XSLT with php and insert it into the HTML: It work but all the job is made in the server side, which is not a very good idea. Embed the XML/XSLT into an iframe, but the only way to set the iframe height to the content is with Javascript, which seem an ugly solution.
Any text into the XML documentation
Here the XML/XSLT should be included $xsltProc = new xsltProcessor(); $xsl = new DOMDocument(); $xsl->load('documentation.xsl'); $xsltProc->importStyleSheet($xsl); $doc = new DOMDocument(); $doc->load('test.xml'); echo $xsltProc->transformToXML($doc);
How can I insert XML data into HTML?
I am trying to grab data from an XML status file that is on VLC and I want to put it into an HTML so that when the status XML updates or is requested, the new information appears in the HTML. Here is the XML information from the status.xml when its ran. OMFG - I can't post images due to reputation yet. Here are the links to the images instead.