2013-11-15 57 views
0

如果xmlReader类中的属性值为空,该如何捕获? 我试过$reader->value == ''empty($reader->value)但它不起作用。如何捕获如果xmlReader属性值为空?

这是怎么看我的代码:

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++; 
    } 
    } 
+0

空($ reader-> value)应该工作..你期待什么? –

回答

0

使用XMLReader::getAttribute();文档没有提及你可以使用这些属性来访问属性。

看你的代码,empty($reader->value) || !isset($reader->value)是多余的。 isset只会核对null,而empty将在空字符串返回true(如value总是在XMLReader定义)。

您可以使用empty($reader->value)!$reader->value作为条件,但您切换了个案。

if (empty($reader->value)) { // or simply: !$reader->value 
    $zdjName = 'no_photo'; 
} else { 
    $zdj = explode('\\',$reader->value); 
    $zdjName = end($zdj); 
} 

+提示:你应该知道,在XML,认为白色空间是节点的值的一部分。

+0

如果'zdjecie'我需要尝试,如果这个节点的值是空的。它不是冒犯的。但是当我尝试'$ reader-> value =='''statment * if *即使节点为空也返回false。 – matterix

+0

我的不好,我马上更新我的答案。 – pozs

0

你试过isset(),用于读取属性

if(empty($reader->value) || !isset($reader->value)){ 

} 
相关问题