在 simplexml_load_string 中获取属性

getting attributes in 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 数据来自 soap 请求,一旦我收到,我将转换为数组以访问其值和属性。

鉴于提供的 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