Создать новый XML файл и записать в него данные?
Мне нужно создать новый XML файл и записать его на мой сервер. Итак, я ищу лучший способ создать новый XML файл, записать в него некоторые базовые узлы, сохранить его. Затем откройте его снова и напишите больше данных.
Я использовал file_put_contents()
для сохранения файла. Но, чтобы создать новый и написать некоторые базовые узлы, я не уверен в лучшем методе.
Идеи?
Ответы
Ответ 1
DOMDocument - отличный выбор. Это модуль, специально предназначенный для создания и обработки XML-документов. Вы можете создать документ с нуля или открыть существующие документы (или строки), а также просмотреть и изменить их структуры.
$xml = new DOMDocument();
$xml_album = $xml->createElement("Album");
$xml_track = $xml->createElement("Track");
$xml_album->appendChild( $xml_track );
$xml->appendChild( $xml_album );
$xml->save("/tmp/test.xml");
Для повторного открытия и записи:
$xml = new DOMDocument();
$xml->load('/tmp/test.xml');
$nodes = $xml->getElementsByTagName('Album') ;
if ($nodes->length > 0) {
//insert some stuff using appendChild()
}
//re-save
$xml->save("/tmp/test.xml");
Ответ 2
В PHP есть несколько библиотек для Манипуляция XML.
Подход Document Object Model (DOM) (который является стандартом W3C и должен быть знаком, если вы использовали его в других средах, таких как как веб-браузер или Java и т.д.). Позволяет создавать документы следующим образом
<?php
$doc = new DOMDocument( );
$ele = $doc->createElement( 'Root' );
$ele->nodeValue = 'Hello XML World';
$doc->appendChild( $ele );
$doc->save('MyXmlFile.xml');
?>
Даже если вы еще не сталкивались с DOM, стоит потратить некоторое время на это, поскольку модель используется во многих языках/средах.
Ответ 3
С FluidXML вы можете легко сгенерировать и сохранить XML-документ.
$doc = fluidxml();
$doc->add('Album', true)
->add('Track', 'Track Title');
$doc->save('album.xml');
Загрузка документа из файла одинаково проста.
$doc = fluidify('album.xml');
$doc->query('//Track')
->attr('id', 123);
https://github.com/servo-php/fluidxml