2010-01-10 57 views
27

我需要创建一个新的XML文件并将其写入我的服务器。所以,我正在寻找创建一个新的XML文件的最佳方式,为它编写一些基节点并保存它。然后再打开它并写入更多数据。创建新的XML文件并将数据写入它?

我一直在使用file_put_contents()来保存文件。但是,要创建一个新节点并编写一些基节点,我不确定最佳方法。

想法?

回答

58

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"); 
+0

如何保持XML的结构,我的文档,而不是一切都被写在一行上? –

+4

在DOMDocument对象上设置“formatOutput”属性:'$ xml-> formatOutput = true'。 http://ca.php.net/manual/en/class.domdocument.php#domdocument.props.formatoutput – zombat

+0

它有点晚,但如果有人想读一个教程可以在这里找到。 https://programmerblog.net/how-to-generate-xml-files-using-php/ –

13

PHP有几个库XML Manipulation

Document Object Model(DOM)方法(这是一个W3C标准,如果您在其他环境(如Web浏览器或Java等)中使用它,应该很熟悉。允许您创建文档,即使你有没有碰到过的DOM来之前如下

<?php 
    $doc = new DOMDocument(); 
    $ele = $doc->createElement('Root'); 
    $ele->nodeValue = 'Hello XML World'; 
    $doc->appendChild($ele); 
    $doc->save('MyXmlFile.xml'); 
?> 

,这是值得投资一些时间在它的模型在许多语言/环境中使用。

2

使用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