Как получить доступ к узлу ADDRESS.LIST? - PullRequest
0 голосов
/ 08 мая 2018

Я хочу получить ADDRESS.LIST значение узла XML. Мой образец XML выглядит так:

$result = "<ENVELOPE>
<HEADER>
    <VERSION>1</VERSION>
    <STATUS>1</STATUS>
</HEADER>
<BODY>
    <DESC></DESC>
    <DATA>
        <MESSAGE xmlns:UDF=\"TallyUDF\">
            <ADDRESS.LIST TYPE=\"String\">
                <ADDRESS>address text</ADDRESS>
                <ADDRESS>address text</ADDRESS>
                <ADDRESS>address text</ADDRESS>
                <ADDRESS>address text</ADDRESS>
            </ADDRESS.LIST>
        </MESSAGE>
    </DATA>
</BODY>
</ENVELOPE>";

Я пытаюсь использовать PHP как:

$repaired = str_replace("&#4; ", "", $result);
$array_data = simplexml_load_string($repaired, 'SimpleXMLElement', LIBXML_NOERROR);

$address    = [];

$status = (string) $array_data->HEADER->STATUS;

if (strpos($status, '1') !== false) {

    $i = 0; 
    $address = array();
    foreach ($array_data->BODY->DATA->MESSAGE->'ADDRESS.LIST' as $item):

        $address[$i]['ADDRESS']     = (string) $item->ADDRESS;

        $i++;
    endforeach; 

    $response["status"] = $status;
    $response["data"]['address']  = $address;
}

echo json_encode($response);

но это показывает:

Ошибка разбора: синтаксическая ошибка, неожиданный '' ADDRESS.LIST '' (T_CONSTANT_ENCAPSED_STRING), ожидаемый идентификатор (T_STRING) или переменная (T_VARIABLE) "ошибка

Как правильно получить значение <ADDRESS.LIST>?

1 Ответ

0 голосов
/ 08 мая 2018

Вы можете сохранить значение переменной, затем использовать или вы можете использовать это {}

вариант 1:

$address_list = "ADDRESS.LIST";
foreach($array_data->BODY->DATA->MESSAGE->$address_list as $item):

вариант 2:

foreach($array_data->BODY->DATA->MESSAGE->{'ADDRESS.LIST'} as $item):
...