当前位置:Gxlcms > PHP教程 > simplexmlelement-PHP如何得到simplexml_load_string的值

simplexmlelement-PHP如何得到simplexml_load_string的值

时间:2021-07-01 10:21:17 帮助过:5人阅读

问题

/**
 * 通过节点路径返回字符串的某个节点值
 * $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充值2014123069117121default@gmail.com2014-12-30 22:12:32trade_status_sync114123022894432014-12-30 22:12:562088211987518229TRADE_FINISHEDN0.112014-12-30 22:12:56zfb@gmail.cn2014-12-30 22:12:560.1120881021937912118f3d3703e293b95d8de26cbd51d74fe116N',
);


$out_trade_no = getDataForXML($_POST['notify_data'],'/notify/out_trade_no');
var_dump( ($out_trade_no == '1412302289443' )); //true
var_dump($out_trade_no);//object(SimpleXMLElement)[2]

如何才可以得到 $out_trade_no 的值

回复内容:

问题

/**
 * 通过节点路径返回字符串的某个节点值
 * $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充值2014123069117121default@gmail.com2014-12-30 22:12:32trade_status_sync114123022894432014-12-30 22:12:562088211987518229TRADE_FINISHEDN0.112014-12-30 22:12:56zfb@gmail.cn2014-12-30 22:12:560.1120881021937912118f3d3703e293b95d8de26cbd51d74fe116N',
);


$out_trade_no = getDataForXML($_POST['notify_data'],'/notify/out_trade_no');
var_dump( ($out_trade_no == '1412302289443' )); //true
var_dump($out_trade_no);//object(SimpleXMLElement)[2]

如何才可以得到 $out_trade_no 的值

var_dump( (String)$out_trade_no ); 

simplexml解析得到的是simpleElement对象,需要类型转换,如公子所说的方法即可

$doc = new DOMDocument();
$doc->loadXML($_POST['notify_data']);
$doc->getElementsByTagName( "out_trade_no" )->item(0)->nodeValue;

人气教程排行