2009-10-17 3 views
0

Я разбираю XML-файл из API, который я преобразовал в DOMDocument в php. Это в основном хорошо, но одна проблема у меня есть, когда я делаю это:DOMDocument parsing (php)

$feeditem->getElementsByTagName('extra'); 

как часть ForAll даного и элемент дополнительной не существует в одном из feeditems я переборе в состоянии ForAll тогда Я получаю сообщение об ошибке.

Я попытался это:

if (!empty($feeditem->getElementsByTagName('extra'))){ 
$extratag = $feeditem->getElementsByTagName('extra'); 
    $extraname = $extratag->item(0)->getAttribute('name'); 
echo $extraname 
    } 

Но я получаю ошибку

getAttribute() on a non-object 

Примечание: Когда элемент «экстра» содержится в каждом FeedItem то код работает идеально. это просто, когда один из элементов фида не содержит элемент «лишний», я получаю ошибку.

+0

К сожалению я имел в виду как Еогеасп заявление на четвертой строчке –

+0

Вы можете обновить (изменить) свой пост, чтобы отразить правильный код –

ответ

2

Попробуйте сделать использование length собственностью DOMNodeList:

$nodes = $feeditem->getElementsByTagName('extra'); 
if ($nodes->length > 0) { 
    $extraname = $extratag->item(0)->getAttribute('name'); 
} 
+0

вы не очень нужна проверка '> 0', но это сделает то, что вы хотите. –

+0

СПАСИБО СМОТРЕТЬ! Застрял на нем со вчерашнего дня! Работает! –

+0

@meder вы khow, почему иногда я получаю необъектную ошибку, но объект существует в xml? http://stackoverflow.com/questions/18096972/how-to-parse-xml-with-php-domdocument-and-be-sure-to-get-objects/18097678?noredirect=1#18097678 – Pooya