【前言】
不管是桌面软件开发,还是WEB应用,XML无处不在!
然而在平时的工作中,仅仅是使用一些已经封装好的类对XML对于处理,包括生成,解析等。假期有空,于是将PHP中的几种XML解析方法总结如下:
以解析Google API 接口提供的天气情况为例,我们取今天的天气及气温。
API地址:http://www.google.com/ig/api?weather=shenzhen
【XML文件内容】
<?xml version="1.0"?>
<xml_api_reply version="1">
<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" >
<forecast_information>
<city data="Shenzhen, Guangdong"/>
<postal_code data="shenzhen"/>
<latitude_e6 data=""/>
<longitude_e6 data=""/>
<forecast_date data="2009-10-05"/>
<current_date_time data="2009-10-04 05:02:00 +0000"/>
<unit_system data="US"/>
</forecast_information>
<current_conditions>
<condition data="Sunny"/>
<temp_f data="88"/>
<temp_c data="31"/>
<humidity data="Humidity: 49%"/>
<icon data="/ig/images/weather/sunny.gif"/>
<wind_condition data="Wind: mph"/>
</current_conditions>
</weather>
</xml_api_reply>
【使用DomDocument解析】
<?PHP header("Content-type:text/html; Charset=utf-8"); $url = "http://www.google.com/ig/api?weather=shenzhen"; // 加载XML内容 $content = file_get_contents($url); $content = get_utf8_string($content); $dom = DOMDocument::loadXML($content); /* 此处也可使用如下所示的代码, $dom = new DOMDocument(); $dom->load($url); */ $elements = $dom->getElementsByTagName("current_conditions"); $element = $elements->item(0); $condition = get_google_xml_data($element, "condition"); $temp_c = get_google_xml_data($element, "temp_c"); echo '天气:', $condition, '<br />'; echo '温度:', $temp_c, '<br />'; function get_utf8_string($content) { // 将一些字符转化成utf8格式 $encoding = mb_detect_encoding($content, array('ASCII','UTF-8','GB2312','GBK','BIG5')); return mb_convert_encoding($content, 'utf-8', $encoding); } function get_google_xml_data($element, $tagname) { $tags =