php 读写xml 修改xml

需要修改的xml

<?xml version="1.0"?>
<config>
    <administration>
        <adminuser>
            <user>
                <id type="autoinc">1</id>
                <name type="username" min="3" max="20">admin</name>
                <passwdmd5 type="passwd" min="4" max="10">21232f297a57a5a743894a0e4a801fc3</passwdmd5>
                <purview type="purview">super</purview>
            </user>
        </adminuser>
    </administration>
</config>

用php修改xml的节点

$doc = new DOMDocument; 
$doc->load('test.xml');
$users = $doc->documentElement->getElementsByTagName('user');
foreach($users as $user) 
{
    $purviews = $user->getElementsByTagName('purview');
    $purview = $purviews->item(0);
     
    $tmpNode = $purview->cloneNode();
    $tmpNode->nodeValue = "xxx";   
    $tmpNode = $purview->parentNode->appendChild($tmpNode);
    $purview->parentNode->replaceChild($tmpNode,$purview);
    $doc->save("test1.xml"); 
} 

 个人尝试用的simplexml 也可以修改,代码如下!,我写的较为繁琐了,不应该这样switch判断,如果有几十张  要写几十个case语句,极为不方便!

要修改此处要从 处理之前!修改xml之前就要解决!用上面的方法可以用foreach循环!应该较为方便!

 private function write_xml($img_num) {
        //这里应该加判断xml文件是否存在,不存在就新建一个!出于给客户就已经带着xml文件,这里就不再创建!
        $xml = simplexml_load_file(__IMG_CONFIG__);
        $slider = $xml->slider;  $indexad = $xml->indexad;
        switch($img_num) {
            case 'img_1':
                $slider->slider_1 =  $img_num . '.jpg';
                break;
            case 'img_2':
                $slider->slider_2 = $img_num . '.jpg';
                break;
            case 'img_3':
                $slider->slider_3 = $img_num . '.jpg';
                break;
            case 'img_4':
                $indexad->left = $img_num . '.jpg';
                break;
            case 'img_5':
                $indexad->right = $img_num . '.jpg';
        }
        file_put_contents(__IMG_CONFIG__, $xml->asXML());
    }
原文地址:https://www.cnblogs.com/itafter/p/4121112.html