>  기사  >  php教程  >  php中SimpleXML生成与解析xml文件

php中SimpleXML生成与解析xml文件

WBOY
WBOY원래의
2016-05-25 16:42:161363검색

在php中对xml文档操作我们有很多类可以使用,php SimpleXML就是一个很不错的xml解析器,下面我来给大家举两个应用实例.

例,生成xml文档,代码如下:

class SimpleXMLExtended extends SimpleXMLElement {  
    public function addCData($cdata_text) {  
    $node = dom_import_simplexml($this);  
    $no   = $node->ownerDocument;  
    $node->appendChild($no->createCDATASection($cdata_text));  
    }  
}  
function array2xml($array, $xml = false){  
    if($xml === false){  
        $xml = new SimpleXMLExtended(&#39;<root/>&#39;);  
    }  
    foreach($array as $key => $value){  
        if(is_array($value)){  
            array2xml($value, $xml->addChild($key));  
        }else{  
            //如果包含汉字,转编码  
            if (preg_match("/([x81-xfe][x40-xfe])/", $value, $match)) {  
                $value = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $value);  
            }  
            $xml->$key = NULL; // VERY IMPORTANT! We need a node where to append  
            $xml->$key->addCData($value);  
            //$xml->$key->addAttribute(&#39;lang&#39;, &#39;en&#39;);  
           // $xml->addChild($key, $value);  
        }  
    }
    return $xml->asXML();  
}

例,SimpleXMLElement解析xml,代码如下:

<?php 
$content = <<<XML 
<?xml version="1.0" encoding="UTF-8" 
<test> 
 <global_setting> 
  <ping_protocol>HTTP</ping_protocol> 
  <ping_port>80</ping_port> 
  <ping_path>/index.html</ping_path> 
  <response_timeout>5000</response_timeout> 
  <health_check_interval>3000</health_check_interval> 
  <unhealthy_threshold>2</unhealthy_threshold> 
  <healthy_threshold>3</healthy_threshold> 
 </global_setting> 
 <instances> 
  <instance ip="192.168.234.121"/> 
  <instance ip="192.168.234.28"/> 
 </instances> 
</test> 
XML; 
 
$test = new SimpleXMLElement($content); 
 
//获得ping_protocol的值 
$ping_protocol = $test->global_setting->ping_protocol; 
echo "ping_protocol : $ping_protocol n"; 
//打印出所有instance的IP 
foreach ( $test->instances->instance as $instance) { 
    echo "IP: {$instance[&#39;ip&#39;]} n" ; 
}


本文地址:

转载随意,但请附上文章地址:-)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.