Insight into DOMDocument - how to convert data from XML to array in PHP












reference:

DOMDocument::getElementsByTagName



The following takes a list of news items from an XML file (or an RSS feed), assigning it to an array first for a name value pair and then generating an HTML list. 

<?php 

$xml  =<<<EOT 
<?xml version="1.0" encoding="ISO-8859-1"?> 
<news> 
    <item> 
        <title>News 1</title> 
        <created>04/2/2010 08:00 EST</created> 
        <url>http://news.example.com/news.pdf</url> 
    </item> 
    <item> 
        <title>News 2</title> 
        <created>04/25/2010 08:00 EST</created> 
        <url>http://news.example.com/news.pdf</url> 
    </item> 
    <item> 
        <title>News 3</title> 
        <created>04/27/2010 08:00 EST</created> 
        <url>http://news.example.com/news.pdf</url> 
    </item> 
</news> 
EOT; 

$doc = new DOMDocument(); 

if ($doc->loadXML($xml)) { 
    $items = $doc->getElementsByTagName('item'); 
    $headlines = array(); 
    
    foreach($items as $item) { 
        $headline = array(); 
        
        if($item->childNodes->length) { 
            foreach($item->childNodes as $i) { 
                $headline[$i->nodeName] = $i->nodeValue; 
            } 
        } 
        
        $headlines[] = $headline; 
    } 
    
    if(!empty($headlines)) { 
        $hc = 0; 
        
        echo '<ul>'; 
        
        foreach($headlines as $headline) { 
            if(++$hc <= 3) { 
                echo '<li>' 
                    .'<a href="'.$headline['url'].'" target="_blank">' 
                        .'<span>'.date('F j, Y', strtotime($headline['created'])).'</span><br />' 
                        .$headline['title'] 
                    .'</a>' 
                .'</li>'; 
            } 
        } 
        
        echo '</ul>'; 
    } 
} 

?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值