使用 PHP 正确解析 XML

Parse correctly XML with PHP

我有这个 XML link 例子:

https://np.tritondigital.com/public/nowplaying?mountName=KFRQFMAAC&numberToFetch=3&eventType=track&request.preventCache=1621376522745

在节点“nowplaying-info-list”内部,我有一个名为“nowplaying-info”的节点,我需要为节点“nowplaying-info”获取每个 属性,例如,

<nowplaying-info-list>
<nowplaying-info mountName="KFRQFMAAC" timestamp="1621894561" type="track">
<property name="cue_time_duration">
<![CDATA[ 05:07 ]]>
</property>
<property name="cue_time_start">
<![CDATA[ 1621894561283 ]]>
</property>
<property name="cue_title">
<![CDATA[ WIND OF CHANGE ]]>
</property>
<property name="program_id">
<![CDATA[ 20363 ]]>
</property>
<property name="track_artist_name">
<![CDATA[ SCORPIONS ]]>
</property>
</nowplaying-info>
<nowplaying-info mountName="KFRQFMAAC" timestamp="1621894008" type="track">
<property name="cue_time_duration">
<![CDATA[ 05:30 ]]>
</property>
<property name="cue_time_start">
<![CDATA[ 1621894008283 ]]>
</property>
<property name="cue_title">
<![CDATA[ ALL RIGHT NOW ]]>
</property>
<property name="program_id">
<![CDATA[ 18664 ]]>
</property>
<property name="track_artist_name">
<![CDATA[ FREE ]]>
</property>
</nowplaying-info>
</nowplaying-info-list>

对于这个响应,我需要进入一个数组:

"cue_title" “program_id” “track_artist_name” 每个条目等...

我正在尝试使用

simplexml_load_file( XML, 'SimpleXMLElement', LIBXML_NOCDATA ); 

但不正确解析数据。

$xml = simplexml_load_file( 'https://np.tritondigital.com/public/nowplaying?mountName=KFRQFMAAC&numberToFetch=3&eventType=track&request.preventCache=1621897306' ); 回声$xml; $items = array();

foreach($xml->{'nowplaying-info'} as $node)
    {
        // reset the array 
        $item = array();
        foreach ($node->property as $property){
            //${$property['name']} =$property;
            //echo "\n".${$property['name']};
            $item[(string) $property['name']] =(string) $property;
        }
        $items[] = $item;
       

    }
    
print_r($items);

//输出

Array
(
    [0] => Array
        (
            [cue_time_duration] => 05:03
            [cue_time_start] => 1621898862311
            [cue_title] => WANTED DEAD OR ALIVE
            [program_id] => 20085
            [track_artist_name] => BON JOVI
        )

    [1] => Array
        (
            [cue_time_duration] => 05:26
            [cue_time_start] => 1621898331404
            [cue_title] => ENTER SANDMAN
            [program_id] => 20496
            [track_artist_name] => METALLICA
        )

    [2] => Array
        (
            [cue_time_duration] => 04:19
            [cue_time_start] => 1621898074316
            [cue_title] => LIMELIGHT
            [program_id] => 18449
            [track_artist_name] => RUSH
        )

)