一个简单的程序来CRUD节点和xml文件的节点值[已关闭]

2022-08-30 16:41:35

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

我的 XML 文件是这样的

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

任何人都可以建议我一个简单的php脚本来读取,编辑,添加和删除节点和节点值吗?


答案 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');

有关更多使用示例API 说明,请参阅 PHP 手册。

顺便说一句,如果你真的只有键/值对,你也可以使用一个普通的旧PHP数组来存储它们,或者使用一个键/值存储,如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


推荐