使用PHP扩展标记值来解析XML

时间:2014-06-30 20:34:45

标签: php xml

我正在使用一些api,它返回用户以XML格式完成的事务列表。这就是它的样子。

<Response>
<Status>00</Status>
<STMT>
   <T0>
      <ID>25624</ID>
      <DATE>30 JUNE 2014</DATE>
       <Amount>1500</Amount>
   </T0>
   <T1>
      <ID>11495</ID>
      <DATE>29 JUNE 2014</DATE>
       <Amount>1000</Amount>
   </T1>
   <T2>
      ----
      ----
      ---- 
</STMT>
<Bal>55</Bal>
</Response>

现在,我们如何在STMT代码中获取这些值?我尝试了这个,但没有用。

$result=simplexml_load_string($xmlstring);
$i='0';
$tx ='T'.$i;
while ($result->STMT->$tx) {
    $result->STMT->$tx->ID;
    $tx='T'.strval(intval($i++));
}

请帮忙。

2 个答案:

答案 0 :(得分:2)

实际上这很简单。做这样的事情:

$xml_string = '<Response><Status>00</Status><STMT> <T0> <ID>25624</ID> <DATE>30 JUNE 2014</DATE> <Amount>1500</Amount> </T0> <T1> <ID>11495</ID> <DATE>29 JUNE 2014</DATE> <Amount>1000</Amount> </T1> <T2> <ID>11496</ID> <DATE>28 JUNE 2014</DATE> <Amount>500</Amount> </T2></STMT><Bal>55</Bal></Response>';
$xml = simplexml_load_string($xml_string);
$stmt = $xml->STMT;
$stmt = json_decode(json_encode($stmt), true);
echo '<pre>';
print_r($stmt);

输出:

Array
(
    [T0] => Array
        (
            [ID] => 25624
            [DATE] => 30 JUNE 2014
            [Amount] => 1500
        )

    [T1] => Array
        (
            [ID] => 11495
            [DATE] => 29 JUNE 2014
            [Amount] => 1000
        )

    [T2] => Array
        (
            [ID] => 11496
            [DATE] => 28 JUNE 2014
            [Amount] => 500
        )

)

答案 1 :(得分:0)

有效。你没有回应结果......

echo $result->STMT->$tx->ID . "\n";

此外,$i++应更改为++$i