получение атрибутов в simplexml_load_string

Ниже приведена функция, которую я использую для преобразования XML в массив

$xml    =   '<xml><CodeshareInfo OperatingCarrier="EY" OperatingFlightNumber="269">ETIHAD AIRWAYS</CodeshareInfo></xml>';
$obj        =   simplexml_load_string($xml); // Parse XML
$obj->registerXPathNamespace("soap", "http://www.w3.org/2003/05/soap-envelope");
$array      =   json_decode(json_encode($obj), true); // Convert to array

когда я пытаюсь с родительским узлом «XML»

<xml><CodeshareInfo OperatingCarrier="EY" OperatingFlightNumber="269">ETIHAD AIRWAYS</CodeshareInfo></xml>

я получаю этот результат

Array
(
[CodeshareInfo] => ETIHAD AIRWAYS
)

но если я попробую без родительского узла «XML»

<CodeshareInfo OperatingCarrier="EY" OperatingFlightNumber="269">ETIHAD AIRWAYS</CodeshareInfo>

я могу получить атрибуты и значение

Array
(
[@attributes] => Array
(
[OperatingCarrier] => EY
[OperatingFlightNumber] => 269
)
[0] => ETIHAD AIRWAYS
)

что я должен изменить в коде, чтобы получить выходные данные с атрибутами и значениями, так как мои данные xml взяты из запроса мыла, и как только я получу, я преобразую в виде массива для доступа к его значению и атрибутам.

0

Решение

Учитывая предоставленный XML, вы можете перебирать его и извлекать атрибуты и значения.

<?php
$xml    =   '<xml><CodeshareInfo OperatingCarrier="EY" OperatingFlightNumber="269">ETIHAD AIRWAYS</CodeshareInfo></xml>';
$obj        =   simplexml_load_string($xml); // Parse XML
$obj->registerXPathNamespace("soap", "http://www.w3.org/2003/05/soap-envelope");
foreach($obj as $ob) {
echo $ob['OperatingCarrier'] . "\n";
echo $ob . "\n";
echo $ob['OperatingFlightNumber'] . "\n";
}

Выход:

EY
ETIHAD AIRWAYS
269

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]