Создать новый XML-файл и записать в него данные? - PullRequest
30 голосов
/ 10 января 2010

Мне нужно создать новый файл XML и записать его на мой сервер. Итак, я ищу лучший способ создать новый файл XML, записать в него несколько базовых узлов, сохранить его. Затем откройте его снова и запишите больше данных.

Я использовал file_put_contents() для сохранения файла. Но, чтобы создать новый и написать несколько базовых узлов, я не уверен в лучшем методе.

Идеи

Ответы [ 3 ]

63 голосов
/ 10 января 2010

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");
13 голосов
/ 10 января 2010

PHP имеет несколько библиотек для XML Manipulation .

Подход 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, стоит потратить на это некоторое время, поскольку модель используется во многих языках / средах.

2 голосов
/ 24 января 2016

С 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...