『壹』 php怎麼解析微信支付結果返回的xml
PHP解析微信支付結果返回的xml的方法是通過自定義方法和第三方組件DomDocument實現的。
1、解析代碼如下:
<?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 = $element->getElementsByTagName($tagname); // 取得所有的$tagname
if ($items->length > 1) {
return $items;
}
$tag = $tags->item(0); // 獲取第一個以$tagname命名的標簽
if ($tag->hasAttributes()) { // 獲取data屬性
$attribute = $tag->getAttribute("data");
return $attribute;
}else {
return false;
}
}
?>
2、返回支付的xml報文:
<?xml version="1.0"?>
<xml_api_reply version="1">
<weather mole_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>
3、列印解析結果:
print $html;
『貳』 如何通過PHP生成和獲取XML格式數據
1自己拼,XML編碼
<?php
header('Content-type:text/xml');
echo "<?xml version='1.0' encoding='utf-8'>";
echo "<book>";
echo "<PHP>";
echo "<name>PHP程序開發範例寶典</name>";
echo "<price 單位='元/本'>89.00</price>";
echo "<date>2007-09-01</date>";
echo "</PHP>";
echo "</book>";
?>
拼接的效果
『叄』 PHP鍋氱殑緗戦〉涓鏄濡備綍紜瀹氶〉闈涓鍚勫厓緔犱綅緗鐨勫晩
鏂規硶1錛氬湪浠繪剰嫻忚堝櫒涓鎵撳紑緗戦〉錛岀劧鍚庡崟鍑誨彸閿->鏌ョ湅緗戦〉婧愪唬鐮侊紝灝卞彲浠ョ湅鍒頒簡銆
浣嗘槸鏇村ソ鐨勬柟娉曟槸錛
鏂規硶2錛氭墦寮Google Chrome錛堟垨鑰呮槸Chromium錛夛紝鎵撳紑榪欎釜緗戦〉錛屾寜F12寮鍚瀹℃煡鍏冪礌錛岀偣Elements錛堝叾瀹炶繖涓鏄榛樿ょ殑錛夛紝灝變細鐪嬪埌緗戦〉鐨勪唬鐮佷簡銆
濡傛灉欏甸潰鐨勬煇浜涢儴鍒嗙敱AJAX鍔ㄦ佺敓鎴愶紝鐢ㄦ柟娉1灝變細鐪嬩笉鍒幫紝鍙鑳界湅鍒頒竴鍫咼avaScript浠g爜錛岃繖鏃跺彧鑳戒嬌鐢ㄦ柟娉2銆
『肆』 使用php循環出xml中多個相同重復的標簽
重復的 xml 元素節點可以用 foreach 循環取出重復元素。
示例:
// $xmlData = file_get_contents('items.xml');
$xmlElement=simplexml_load_string($xmlData, 'SimpleXMLElement', 'LIBXML_NOCDATA');
$elements = $xmlElement->CustAcctId;
foreach ($elements as $element) {
var_mp($element);
}
提示:使用simplexml_load_string($xmlString, 'SimpleXMLElement', LIBXML_NOCDATA) 解析 xml 字元串,如果是 xml 文件,可以 file_get_contents 讀取文件。