详解php解析xml用法

详解php解析xml用法

        重点考察:simplexml_load_string()函数解析xml
        php xml示例一:
        <?php
            $url='ccccc/aaac/xxxx.xml'
            $xml = file_get_contents($url);
            $result = simplexml_load_string($xml);
            var_dump($result);    //可以打印看看结果如何
            foreach($result->children() as $child)   //获取XML对象里面的每一个子节点,也是一个类似于数组的对象
            {
                   echo $child->name."<br>";
                   echo $child->address."<br>;
            }
         ?>
        
        php xml示例二:

            $xmlStr='sdasd/dfdxza/xedfr.xml';

            loadXML($xmlStr);
            $xml = simplexml_import_dom($dom);
            echo $xml ->members[0]->member[0]->name; // aaa
            echo $xml ->members[1]->member[0]->name; // 111
            echo "";
            /**
               循环列出 第一个 members  的 name;
            **/
            foreach($xml ->members[0] as $v)
            {
             echo $v->name."";
            }
        ?>                    

        php xml示例三:PHP如何处理如下 XML

        example.xml文件内容如下:

        <?xml version="1.0" encoding="utf-8"?>
        <phplamp>
            <post>
                <title id="1">PHP 我是xml测试一</title>
                <details>我是xml测试一</details>
            </post>
            <post>
                <title id="2">PHP 我是xml测试二</title>
                <details>我是xml测试二</details>
            </post>
            <post>
                <title id="3">PHP 我是xml测试三</title>
                <details>我是xml测试三</details>
            </post>
        </phplamp>

            PHP处理代码:

            <?php

            $xml = simplexml_load_file("example.xml");
            foreach ($xml as $key => $value) {
                // 获取属性
                $attr = $value->title->attributes();
                echo "Id: " . $attr['id'] . "<br />";
                echo "Title: " . $value->title . "<br />";
                echo "Details: " . $value->details . "<br /><br />";
            }
            ?>

        php xml示例四:PHP对xml数据操作

        data.xml文档内容如下:
        <?xml version="1.0"?>
        <videos>
         <video img="a" url="1" title="1" nickname="1" tag="1" vid="1" star="1"/>
         <video img="b" url="2" title="2" nickname="2" tag="2" vid="2" star="2"/>
         <video img="c" url="3" title="3" nickname="3" tag="3" vid="3" star="3"/>
         <video title="d" src="2" img="1"/>
        </videos>


        <?php
        //读取xml
         $dom=new DOMDocument('1.0');
        $dom->load('data.xml');
        $em=$dom->getElementsByTagName('videos');//最外层节点
        $em=$em->item(0);
        $items=$em->getElementsByTagName('video');//节点
        //如果不用读取直接添加的话把下面这一段去掉即可
        foreach($items as $a){
            foreach($a->attributes as $b){//$b->nodeValue;节点属性的值$b->nodeName;节点属性的名称
             echo $b->nodeName;
             echo ":";
             echo $b->nodeValue;
             echo "<br/>";
            }
        }

        //下面是往xml写入一行新的
        $t=$dom->createElement('video');//<video
        $t->setAttribute('title','1');//<video name="data"
        $t->setAttribute('src','2');//<video name="data" src="2"
        $t->setAttribute('img','1');//<video name="data" img="1"
        $em->appendChild($t);//<video name="data" img="1"/>
        $dom->save('data.xml');
        ?>
        

        //下面这一个文件是后改的可以修改xml
        
        <?php
        $doc = new DOMDocument();
        $doc->load('data.xml');
        
        //查找 videos 节点
        $root = $doc->getElementsByTagName('videos');
        
        //第一个 videos 节点
        $root = $root->item(0);
        
        //查找 videos 节点下的 video 节点
        $userid = $root->getElementsByTagName('video');
        
        //遍历所有 video 节点
        foreach ($userid as $rootdata)
        {
            //遍历每一个 video 节点所有属性
            foreach ($rootdata->attributes as $attrib)
            {
                $attribName = $attrib->nodeName;   //nodeName为属性名称
                $attribValue = $attrib->nodeValue; //nodeValue为属性内容
                
                //查找属性名称为ip的节点内容
                if ($attribName =='img')
                {
                    //查找属性内容为ip的节点内容
                    if ($attribValue =='1')
                    {
                    //将属性为img,img内容为1的修改为image;
                    $rootdata->setAttribute('img','image');
                    $doc->save('data.xml');
                }
                }
            }
        }
        
        ?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值