问题
<code>/** * 通过节点路径返回字符串的某个节点值 * $res_data——XML 格式字符串 * 返回节点参数 */function getDataForXML($res_data, $node){ $xml = simplexml_load_string($res_data); $result = $xml->xpath($node); while (list(, $node) = each($result)) { return $node; }}$_POST = array( 'service' => 'alipay.wap.trade.create.direct', 'sign' => 'db56d137c71f591abd58b41d5da5f920', 'sec_id' => 'MD5', 'v' => '1.0', 'notify_data' => '1充值[email protected] 22:12:32trade_status_sync114123022894432014-12-30 22:12:562088211987518229TRADE_FINISHEDN0.112014-12-30 22:12:[email protected] 22:12:560.1120881021937912118f3d3703e293b95d8de26cbd51d74fe116N',);$out_trade_no = getDataForXML($_POST['notify_data'],'/notify/out_trade_no');var_dump( ($out_trade_no == '1412302289443' )); //truevar_dump($<mark>(本文来)源gaodaimacom搞#^代%!码&网(</mark><pre>搞gaodaima代码
out_trade_no);//object(SimpleXMLElement)[2]
如何才可以得到 $out_trade_no 的值
回复内容:
问题
<code>/** * 通过节点路径返回字符串的某个节点值 * $res_data——XML 格式字符串 * 返回节点参数 */function getDataForXML($res_data, $node){ $xml = simplexml_load_string($res_data); $result = $xml->xpath($node); while (list(, $node) = each($result)) { return $node; }}$_POST = array( 'service' => 'alipay.wap.trade.create.direct', 'sign' => 'db56d137c71f591abd58b41d5da5f920', 'sec_id' => 'MD5', 'v' => '1.0', 'notify_data' => '1充值[email protected] 22:12:32trade_status_sync114123022894432014-12-30 22:12:562088211987518229TRADE_FINISHEDN0.112014-12-30 22:12:[email protected] 22:12:560.1120881021937912118f3d3703e293b95d8de26cbd51d74fe116N',);$out_trade_no = getDataForXML($_POST['notify_data'],'/notify/out_trade_no');var_dump( ($out_trade_no == '1412302289443' )); //truevar_dump($out_trade_no);//object(SimpleXMLElement)[2]</code>
如何才可以得到 $out_trade_no 的值
<code>var_dump( (String)$out_trade_no ); </code>
simplexml解析得到的是simpleElement对象,需要类型转换,如公子所说的方法即可
<code>$doc = new DOMDocument();$doc->loadXML($_POST['notify_data']);$doc->getElementsByTagName( "out_trade_no" )->item(0)->nodeValue;</code>