【问题标题】:A simple program to CRUD node and node values of xml file [closed]一个简单的程序来CRUD节点和xml文件的节点值[关闭]
【发布时间】:2026-01-25 06:40:01
【问题描述】:

我决定将设置保存在 xml 文件中,因为字段只取一个值。

我的 XML 文件是这样的

<?xml version="1.0" encoding="UTF-8"?>
<setting>
    <setting1>setting1 value</setting1>
    <setting2>setting2 value</setting2> 
    <setting3>setting3 value</setting3> 
    ....
    ....
    ....
</setting>

谁能建议我一个简单的 php 脚本来读取、编辑、添加和删除节点和节点值?

【问题讨论】:

    标签: php xml


    【解决方案1】:

    如果您的 XML 真的那么简单,您可以使用SimpleXML 对其进行 CRUD。 SimpleXml 会将 XML 解析为 SimpleXmlElements 的树形结构。简而言之,您可以这样使用它:

    // CREATE
    $config = new SimpleXmlElement('<settings/>');
    $config->setting1 = 'setting1 value';         
    $config->saveXML('config.xml');               
    
    // READ
    $config = new SimpleXmlElement('config.xml');
    echo $config->setting1;
    echo $config->asXml();
    
    // UPDATE
    $config->setting1 = 'new value';
    $config->setting2 = 'setting2 value';
    echo $config->asXml();
    
    // DELETE
    unset($config->setting1);
    $config->setting2 = NULL;
    echo $config->asXML();
    unlink('config.xml');
    

    更多usage examplesAPI description请参考PHP手册。

    在旁注中,如果您真的只有键/值对,您还可以使用 plain old PHP array 来存储它们,或者像 DBA 甚至 APCmemcached 这样的键/值存储ttl.

    【讨论】:

      【解决方案2】:

      您可以使用 PHP XQuery 扩展来完成这项工作:

      let $data := <setting>
          <setting1>setting1 value</setting1>
          <setting2>setting2 value</setting2> 
          <setting3>setting3 value</setting3> 
      </setting>
      return {
          (: Update :)
          replace value of node $data/setting1/text() with "Hello World";
          (: Delete :)
          delete node $data/setting2;
          (: Read :)
          $data
      }
      

      您可以在http://www.zorba-xquery.com/html/demo#BJ2a2bNxJc8JVZAl0qyjAelwN9s= 现场试用上面的示例

      有关如何安装 XQuery PHP 扩展的说明,请访问http://www.zorba-xquery.com/html/entry/2011/12/27/PHP_Meets_XQuery

      【讨论】:

      • +1:这个扩展真的很棒。
      最近更新 更多