2013-11-15 84 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)){ 

} 
相關問題