Как получить первый узел XML после использования simplexml_load_string в PHP? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть следующий 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, чтобы перенаправить на соответствующий путь.

По этой ссылке Я получил массив из отправленного xml:

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

Но проблема в том, что я не вижу первый узел <Cancellation> или <Registration> после передачи строки xml объекту. enter image description here

Даже примеры в php doc не показывают первый узел.

Мне нужно проверить, является ли это Отмена или Регистрация. Как я мог это сделать?

1 Ответ

0 голосов
/ 26 апреля 2018

Чтобы найти имя тега корневого элемента в XML, просто используйте getName() на элементе SimpleXMLElement ...

echo $xmlObj->getName();
...