如果xmlReader属性值为空,如何捕获?

时间:2013-11-15 12:54:13

标签: php xmlreader

如果xmlReader类中的属性值为空,我如何捕获? 我尝试了$reader->value == ''empty($reader->value)但是没有用。

这就是看我的代码:

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

2 个答案:

答案 0 :(得分:0)

您是否尝试过isset()

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

}

答案 1 :(得分: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中,空格被认为是节点值的一部分。