How can I catch if the property value is empty in xmlReader class?
i have tried $reader->value == ''
and empty($reader->value)
but it doesn't worked.
This is how look my code:
while ($reader->read()) {
if($reader->nodeType == XMLReader::ELEMENT) {
$name = $reader->name;
}
if($reader->nodeType == XMLReader::TEXT || $reader->nodeType == XMLReader::CDATA){
switch ($name) {
case 'zdjecie':
if (empty($reader->value) || !isset($reader->value)) {
$zdj = explode('\\',$reader->value);
$zdjName = end($zdj);
}else{
$zdjName = 'no_photo';
}
break;
}
}
if($reader->nodeType == XMLReader::END_ELEMENT && $reader->name == 'produkt'){
$reader->next();
$i++;
}
}
Use XMLReader::getAttribute()
for reading an attribute; the docs does not mention you can use the properties to access attributes.
Looking your code, empty($reader->value) || !isset($reader->value)
is redundant. isset
will only check against null
, while empty
will return true
on empty strings too (as value
is always defined on XMLReader
).
You can use empty($reader->value)
or !$reader->value
as condition, but you switched the cases.
if (empty($reader->value)) { // or simply: !$reader->value
$zdjName = 'no_photo';
} else {
$zdj = explode('\\',$reader->value);
$zdjName = end($zdj);
}
+
Hint: You should be aware, that in XML, white-spaces considered to be part of the node's value.