php 解析 xml simplexml_load_string()返回的是一个对象

来源:互联网 发布:莎莎源码是什么意思 编辑:程序博客网 时间:2024/06/09 20:32

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
function sssAction(){
        //$ss            = Models_Bean_ServerControl_OptionConfig::get_pf_beam_files('20121015155640');
        
        $xml     = file_get_contents("home/sj/servercontrol/20121015155640/beam/cd_catalog.xml");
        $obj_xml = simplexml_load_string($xml);
        
             foreach($obj_xml->children() as $child)   //获取XML对象里面的每一个子节点,也是一个类似于数组的对象
            {
                   echo $child->ARTIST."<br>";
                   echo $child->minutes."<br>";
            }
        
        var_dump($obj_xml);

        exit;

}



$.ajax({
                url:"http://192.168.1.37/api/gm/sss",
              //  data:"cmd=log_statues&version=20120922111508&cmd_query=&ip_port=192.168.1.113:9090&totalserver=2111&server_id=1111&platform=4399&server_tag=4399_1111",
           
                async:false,
               // content:'document.body',
       success:function(XMLHttpRequest){
                    XMLHttpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                       //alert(XMLHttpRequest.readyState);
                       //alert(XMLHttpRequest.status);
                }

});

     ?>

原创粉丝点击