如果你计划在PHP中处理XML数据,就需要一个XML库为你提取数据。例如解析RSS feed或是模式匹配(寻找XHTML图像或是元素)。
SimpleXML扩展提供了一个非常直观的API,更容易将XML转换成对象和遍历元素。唯一的缺点就是在内存中加载整个文档或是非常大的XML文件,它的性能可能是一个问题。
如果性能是一个考虑因素,你可以去使用XMLReader。XMLReader是一个XML解析器,它通过在加载过程中遍历每个节点,在而不是在内存中加载整个文档。
下面的代码使用简单的XML可以从我的网站获取最新的RSS。在我的服务器上,我已经使用Curl库处理HTTP连接,因为它支持服务器托管并且更安全。
<ol class="dp-xml"> <li class="alt"><span><span class="tag"></span><span class="tag-name">php</span><span> </span></span></li> <li><span> </span></li> <li class="alt"><span>function load_file($url) { </span></li> <li> <span>$</span><span class="attribute">ch</span><span> = </span><span class="attribute-value">curl_init</span><span>($url); </span> </li> <li class="alt"><span>#Return http response in string </span></li> <li><span>curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); </span></li> <li class="alt"> <span>$</span><span class="attribute">xml</span><span> = </span><span class="attribute-value">simplexml_load_string</span><span>(curl_exec($ch)); </span> </li> <li><span>return $xml; </span></li> <li class="alt"><span>} </span></li> <li><span> </span></li> <li class="alt"> <span>$</span><span class="attribute">feedurl</span><span> = </span><span class="attribute-value">'http://naveenbalani.com/index.php/feed/'</span><span>; </span> </li> <li> <span>$</span><span class="attribute">rss</span><span> = </span><span class="attribute-value">load_file</span><span>($feedurl); </span> </li> <li class="alt"><span> </span></li> <li> <span>foreach ($rss-</span><span class="tag">></span><span>channel-</span><span class="tag">></span><span>item as $item) { </span> </li> <li class="alt"> <span>echo "</span><span class="tag"><span class="tag-name">h2</span><span class="tag">></span><span>" . $item-</span><span class="tag">></span><span>title . "</span><span class="tag"></span><span class="tag-name">h2</span><span class="tag">></span><span>"; </span></span> </li> <li> <span>echo "</span><span class="tag"><span class="tag-name">p</span><span class="tag">></span><span>" . $item-</span><span class="tag">></span><span>description . "</span><span class="tag"></span><span class="tag-name">p</span><span class="tag">></span><span>"; </span></span> </li> <li class="alt"><span>} </span></li> <li><span> </span></li> <li class="alt"> <span class="tag">?></span><span> </span> </li> </ol>
http://css.dzone.com/news/parsing-xml-data-php