Извините, что спрашиваю об этом, но это сводит меня с ума.
Я использовал php SimpleXMLElement в качестве XML-кода для парсера, и я просмотрел много примеров и разочаровался в этом много раз. Но сейчас мне просто нужно, чтобы это работало. Есть много примеров того, как получить простые поля, но не так много со значениями в полях ...
Я пытаюсь получить значение "track_artist_name" из этого XML в качестве именованной переменной в php.
<nowplaying-info-list>
<nowplaying-info >
<property name="track_title"><![CDATA[Song Title]]></property>
<property name="track_album_name"><![CDATA[Song Album]]></property>
<property name="track_artist_name"><![CDATA[Song Artist]]></property>
</nowplaying-info>
</nowplaying-info-list>
Я пытался использовать xpath с:
$sxml->xpath("/nowplaying-info-list[0]/nowplaying-info/property[@name='track_artist_name']"));
Но я знаю, что все испорчено и не работает.
Изначально я тоже пробовал что-то подобное, думая, что это имеет смысл - но нет:
attrs = $sxml->nowplaying_info[0]->property['@name']['track_artist_name'];
echo $attrs . "\n\n";
Я знаю, что могу получить значения с чем-то вроде этого:
$sxml->nowplaying_info[0]->property[2];
Иногда в результатах XML больше строк, чем в других случаях, и поэтому из-за этого он нарушает вычисления неверными данными.
Может кто-нибудь пролить свет на мою проблему? Я просто пытаюсь переименовать художника в переменную. Большое спасибо.
*** ОБНОВЛЕНИЕ РАБОТЫ: **
Я не знал, что существуют разные методы интерпретатора XML, и использовал следующую версию интерпретатора XML:
// read feed into SimpleXML object
$sxml = new SimpleXMLElement($json);
Это не сработало, но теперь обновлено до следующего (для этого раздела кода) благодаря помощи здесь.
$sxml_new = simplexml_load_string($json_raw);
if ( $sxml_new->xpath("/nowplaying-info-list/nowplaying-info/property[@name='track_artist_name']") != null )
{
$results = $sxml_new->xpath("/nowplaying-info-list/nowplaying-info/property[@name='track_artist_name']");
//print_r($results);
$artist = (string) $results[0];
// var_dump($artist);
echo "Artist: " . $artist . "\n";
}