zoukankan      html  css  js  c++  java
  • PHP解析XML

             昨天接了个项目,需要和一个合作方做个url验证。由我像对方的提供的url发起请求,然后对方返回一个XML,我再根据XML的内容作下一步的处理。
          
             当时看文档的时候我心想这还不简单,直接file_get_contents($url)不就OK 了,但是真正做的时候才发现不是那么一回事,我把file_get_contents获取的结果var_dump,结果是str(95) "   ",就是说结果是一个字符串,但是字符串的内容却是"  ",也就是空,这是怎么一回事呢?(后来我自己写了个XML,也用这个函数获取,虽然结果也是字符串,但是却是有值的字符串,说明那哥们写的XML有问题)
       
            特地的写了一个程序测试下file_get_contents这个函数,汗,才发现原来它抓的是网页的源代码,不是网页的内容,以前一直以为抓的是内容。

            那么就可以说明一个问题了,它抓的是源代码,如果是HTML,那么echo之后就直接在浏览器里面输出了网页的容,但是由于现在抓的是XML的源代码,那么var_dump的话其实是不能输出XML的。因为浏览器不认识这个。

           那么怎么办呢?好办,先用file_get_contents远程抓取XML,再把抓取的结果用simplexml_load_string()处理就OK 啦。simplexml_load_string()读取的是XML,返回的是一个对象。那么下一个问题来了,如何获取对象里面的值呢?
        
           simplexml_load_string()返回的是一个对象,那么我们可以这么写
          <?php
                $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>;
                }
         ?>

         这就把每一个节点的值都打印出来了。
  • 相关阅读:
    如何确定软件测试结束?
    为什么会有软件测试这一栏目?
    SQL Server 新建 数据库关系图 时弹出警告提示此数据库没有有效所有者,因此无法安装数据库关系图支持对象。
    IIS 7 实现http跳转https 重定向方法
    Centos 利用yum安装卸载软件常用命令[转载]
    VMware虚拟机中Centos7的IP地址设置方法
    【3】工厂方法模式
    【2】简单工厂模式
    【1】Singleton模式(单例模式)
    SVN提交小结
  • 原文地址:https://www.cnblogs.com/moqiang02/p/4061367.html
Copyright © 2011-2022 走看看