Проблема с пространством имен PHP SimpleXML

Я пытаюсь получить значение entry->id и entry->cap:parameter-> для каждой записи в RSS-канале... ниже приведен код, который я использую. Он правильно отображает идентификатор, но не отображает поле значения .... пожалуйста, помогите.

$url = 'http://alerts.weather.gov/cap/us.php?x=1';
$cap = simplexml_load_file($url);
foreach($cap->entry as $entry){
    echo 'ID: ', $entry->id, "\n";
    echo 'VTEC: ', $entry->children('cap', true)->parameter->value, "\n"; 
echo "<hr>";
}

Спасибо за помощь заранее.


person Zachary Lassiter    schedule 17.05.2011    source источник
comment
Вы можете опубликовать образец XML-документа?   -  person stevevls    schedule 17.05.2011


Ответы (1)


Элемент <value> не находится в том же пространстве имен, что и <cap:parameter>:

<cap:parameter>
    <valueName>VTEC</valueName>
    <value>/O.CON.KMPX.FL.W.0012.000000T0000Z-110517T1800Z/</value>
</cap:parameter>

Итак, вам нужно снова позвонить children().

Код (демонстрация)

$feed = simplexml_load_file('http://alerts.weather.gov/cap/us.php?x=1');
foreach ($feed->entry as $entry){
    printf(
        "ID: %s\nVTEC: %s\n<hr>",
        $entry->id,
        $entry->children('cap', true)->parameter->children()->value
    );
}
person Gordon    schedule 17.05.2011
comment
Я только что попытался запустить это, и он не печатает элемент ‹value›. Его выходной идентификатор: VTEC: ID: ..... - person Zachary Lassiter; 17.05.2011
comment
@Zachary делает то, о чем ты просил. Смотрите демонстрационную ссылку. - person Gordon; 17.05.2011
comment
@Gordon... он не возвращает значение $entry-›children('cap', true)-›parameter-›children()-› - person Zachary Lassiter; 17.05.2011
comment
@Zachary Возвращает все /feed/entry/id и /feed/entry/cap:parameter/value - person Gordon; 17.05.2011
comment
@Gordon.... он не возвращает /feed/entry/cap:parameter/value.... попробуйте запустить его! - person Zachary Lassiter; 17.05.2011
comment
@Гордон... приношу свои извинения... я неправильно вставил. Спасибо за помощь! - person Zachary Lassiter; 17.05.2011
comment
Это сложный ответ среди всех других вопросов о SimpleXML/пространстве имен. Но это было правильно в моем случае. Большое спасибо. - person Ryan; 03.11.2012