Php вывести xml файл

Как отобразить XML-файл в php

XML — это формат строки. SimpleXML преобразует XML в объекты PHP для облегчения манипулирования в PHP. Если вы хотите отобразить XML, просто отобразите строку XML и, как уже упоминалось, не забудьте добавить правильные заголовки ответа HTTP. Это то, что указывает клиенту HTTP обрабатывать файл как файл XML.

8 ответов

Вы можете использовать URL-адреса HTTP, как если бы они были локальными файлами, благодаря обертки PHP

Вы можете получить содержимое с URL-адреса через file_get_contents(), а затем повторить его или даже прочитать непосредственно с помощью файла readfile()

$file = file_get_contents('http://example.com/rss'); echo $file; 
readfile('http://example.com/rss'); 

Не забудьте установить правильный тип MIME, прежде чем выводить что-либо.

header('Content-type: text/xml'); 

Чтобы отобразить содержимое XML внутри файла HTML, я должен использовать echo htmlentities($file) для отображения необработанного XML (теги и содержимое). Есть ли способ лучше?

Вот что сработало для меня:

Использование htmlspecialchars предотвратит отображение тегов как html и ничего не сломает. Обратите внимание, что я использую Prettyprint, чтобы выделить код;)

Вы можете использовать метод asXML

Вы также можете указать имя файла

Если вы просто хотите распечатать необработанный XML, вам не нужен Simple XML. Я добавил некоторые обработки ошибок и простой пример того, как вы можете использовать SimpleXML.

 curl_close ($curl); //we can at this point echo the XML if you want //echo $result; //parse xml string into SimpleXML objects $xml = simplexml_load_string($result); if ($xml === false) < die('Error parsing XML'); >//now we can loop through the xml structure foreach ($xml->channel->item as $item) < print $item->title; > 
$location = "http://rss.news.yahoo.com/rss/topstories"; print file_get_contents($location); 

Некоторые места (например, digg.com) не позволят вам получить доступ к их сайту без использования пользовательского агента, и в этом случае вам нужно будет установить это с помощью ini_set() перед запуском file_get_contents().

echo(header('content-type: text/xml')); 

Чтобы отобразить html/xml «как есть» (т.е. все сущности и элементы), просто избегайте символов , & и приложите результат с помощью :

$XML = '  ó ó '; $XML = str_replace('&', '&', $XML); $XML = str_replace('' . $XML . '

';

Протестировано на Chrome 45

Источник

Работа с 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 (99)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (146)
  • 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)
  • Команда (68)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

PHP5 SimpleXML Вывод

SimpleXML — это расширение PHP, которое позволяет легко манипулировать и получать XML данных.

PHP SimpleXML — Получить значения узлов

Получить значения узлов из файла «note.xml»:

Пример

$xml=simplexml_load_file(«note.xml») or die(«Ошибка: Невозможно создать объект»);
echo $xml->to . «
«;
echo $xml->from . «
«;
echo $xml->heading . «
«;
echo $xml->body;
?>

Вывод данных приведенного выше кода:

XML другой файл

Предположим, у нас есть XML файл «books.xml», он выглядит так:

PHP SimpleXML — Получить значение узлов определенных элементов

Следующий пример возвращает значение узла первого и второго элементов из и файла «books.xml»:

Пример

$xml=simplexml_load_file(«books.xml») or die(«Ошибка: Невозможно создать объект»);
echo $xml->book[0]->title . «
«;
echo $xml->book[1]->title;
?>

Вывод данных приведенного выше кода:

PHP SimpleXML — Получить значения узлов — цикл

Следующий пример перебирает все элементы в файле «books.xml», и получает значения узла элементов , , , и :

Пример

$xml=simplexml_load_file(«books.xml») or die(«Ошибка: Невозможно создать объект»);
foreach($xml->children() as $books) <
echo $books->title . «, «;
echo $books->author . «, «;
echo $books->year . «, «;
echo $books->price . «
«;
>
?>

Вывод данных приведенного выше кода:

Everyday Italian, Giada De Laurentiis, 2005, 30.00
Harry Potter, J K. Rowling, 2005, 29.99
XQuery Kick Start, James McGovern, 2003, 49.99
Learning XML, Erik T. Ray, 2003, 39.95

PHP SimpleXML — Получить значения атрибутов

Следующий пример возвращает значение атрибута «category» из первого элемента и значение атрибута «lang» из атрибута во втором элементе :

Пример

$xml=simplexml_load_file(«books.xml») or die(«Ошибка: Невозможно создать объект»);
echo $xml->book[0][‘category’] . «
«;
echo $xml->book[1]->title[‘lang’];
?>

Вывод данных приведенного выше кода:

PHP SimpleXML — Получить значения атрибутов — цикл

В следующем примере получены значения атрибутов элементов файла «books.xml»:

Пример

$xml=simplexml_load_file(«books.xml») or die(«Ошибка: Невозможно создать объект»);
foreach($xml->children() as $books) <
echo $books->title[‘lang’];
echo «
«;
>
?>

Вывод данных приведенного выше кода:

PHP SimpleXML Справочник

Для получения дополнительной информации о функциях PHP SimpleXML, посетите наш PHP SimpleXML Справочник.

Мы только что запустили
SchoolsW3 видео

ВЫБОР ЦВЕТА

colorpicker

Сообщить об ошибке

Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:

Ваше предложение:

Спасибо Вам за то, что помогаете!

Ваше сообщение было отправлено в SchoolsW3.

ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат

SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.

Источник

Читайте также:  Html href target top blank
Оцените статью