【问题标题】:Create new XML file and write data to it?创建新的 XML 文件并向其写入数据?
【发布时间】:2011-01-03 13:22:16
【问题描述】:

我需要创建一个新的 XML 文件并将其写入我的服务器。因此,我正在寻找创建新 XML 文件、向其中写入一些基本节点并保存它的最佳方法。然后再次打开并写入更多数据。

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

想法?

【问题讨论】:

    标签: php xml file


    【解决方案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 Manipulation 的库。

    Document Object Model (DOM) 方法(这是 W3C 标准,如果您在其他环境(如 Web 浏览器或 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

      【讨论】:

        猜你喜欢
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        • 2018-05-11
        相关资源
        最近更新 更多