2012-06-06 11 views
6

mam niektóre XML używam klasy PHP SimpleXML zi mam elementy wewnątrz XML, takich jak:sprawdzenie czy atrybut obiektu jest ustawiona - SimpleXML

<condition id="1" name="New"></condition> 
<condition id="2" name="Used"></condition> 

Jednak nie zawsze są tam, więc trzeba sprawdzić, czy istnieją w pierwszej kolejności.

Próbowałem ..

if (is_object($bookInfo->page->offers->condition['used'])) { 
    echo 'yes'; 
} 

jak ..

if (isset($bookInfo->page->offers->condition['used'])) { 
    echo 'yes'; 
} 

Ale ani pracy. Działają tylko wtedy, gdy usunę część atrybutu.

Jak mogę sprawdzić, czy atrybut jest ustawiony jako część obiektu?

Odpowiedz

12

Co ty patrzysz na to wartość atrybutu. Trzeba spojrzeć na atrybucie (name w tym przypadku) się:

if (isset($bookInfo->page->offers->condition['name']) && $bookInfo->page->offers->condition['name'] == 'Used') 
    //-- the rest is up to you 
+0

dobry punkt - dzięki ! – Brett

6

Faktycznie, naprawdę powinieneś używać SimpleXMLElement::attributes(), ale należy sprawdzić Object potem używając isset():

$attr = $bookInfo->page->offers->condition->attributes(); 
if (isset($attr['name'])) { 
    //your attribute is contained, no matter if empty or with a value 
} 
else { 
    //this key does not exist in your attributes list 
} 
Powiązane problemy