如何在PHP中使用simplexml_load_string后检索XML的第一个节点?

时间:2018-04-26 16:32:03

标签: php xml simplexml

我有跟随xml,其中第一个节点是<Cancellation>

<?xml version='1.0' encoding='UTF-8'?> 
<Cancellation>
    <version>message-version</version>
    <customerID>customer-identifier</customerID>
    <invoiceID>invoice-number</invoiceID>
    <cancellationDate>yyyy-mm-dd</cancellationDate>
    <reason>reason</reason>
    <reasonCode>reason-code</reasonCode>
    <attempts>attempts-count</attempts>
    <merchantID>rocketgate merchant-identifier</merchantID>
    <merchantSiteID>site-id</merchantSiteID>
    <udf01>user-data</udf01>
</Cancellation>

最终我可能会有一个类似的xml但是有一个完整的不同过程,比如注册,如下所示:

<?xml version='1.0' encoding='UTF-8'?> 
    <Registration>
        <version>message-version</version>
        <customerID>customer-identifier</customerID>
        <invoiceID>invoice-number</invoiceID>
        <merchantID>rocketgate merchant-identifier</merchantID>
        <merchantSiteID>site-id</merchantSiteID>
        <udf01>user-data</udf01>
    </Registration>

我需要在if条件中捕获第一个节点以重定向到适当的路径。

link之后,我从发送的xml中获得了一个数组:

$xmlString = trim(file_get_contents('php://input'));
$xmlObj    = simplexml_load_string($xmlString);
$xmlJSON = json_encode($xmlObj);
$xmlArray = json_decode($xmlJSON, true);

但问题是,在将xml字符串传递给对象后,我无法看到第一个<Cancellation><Registration>节点。 enter image description here

即使php doc中的示例也未显示第一个节点。

我需要测试它是取消还是注册。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

要在XML中查找根元素的标记名称,只需在SimpleXMLElement上使用getName() ...

echo $xmlObj->getName();