2014-02-21 19 views
0

我一直在檢查如何解決這個錯誤,但沒有太多的運氣。我基本上有幾個XML文件,可能有或沒有特定的字段。我正在運行一些功能來檢查這些字段並將信息打印出來。我的目標是,如果該字段存在,打印信息,否則跳過它並移動到下一個記錄。調用一個非對象的成員函數getElementsByTagName()

這裏是我已經運行功能通過XML遍歷:

function pull_xml($id, $gettag = false, $tagname = 'field', $checkatt = array(), $attname = false, $gettextnode = false) { 
    $xml = new DOMDocument(); 
    $xml->loadXML(PRIVATE_DIR. "jobs/$id/job.xml"); 
    try { 
     if ($xml) { 
      if (!$gettag) 
       return $xml; 
      $tags = ''; 
      $makecsv = true; 
      echo $tagname; 
      if ($xml->documentElement->getElementsByTagName($tagname)!= 0) { 
       $tags = $xml->documentElement->getElementsByTagName($tagname); 
       foreach ($tags as $tag) { 
        if ($checkatt) { 
         if (!$tag->getAttribute($checkatt[0]) || (string)$tag->getAttribute($checkatt[0])!= $checkatt[1]) { 
          continue; 
         } 
        } 
        if ($attname) { 
         foreach ($tag->attributes as $k => $v) { 
          if ((string)$k == $attname) 
           return (string)$v; 
         } 
        } 
        else if ($gettextnode) { 
         return $tag->textContent; 
        } 
       } 
      } 
      else 
       $makecsv = false; 
     } 
     else 
      $makecsv = false; 
     if (!$makecsv) 
      return '--'; 
    } catch (Exception $e) { 
     echo $e->getMessage(); 
    } 
} 

下面是我如何調用該函數的例子:

foreach ($jobs as $job) { 

    $id = (string)$job['job_id']; 
    $total = (float)pull_xml($id, true, 'field', array(
      'id', 
      'app_dv'), 'value', false); 
    $job_totals[$id] = $total; 
    $overall_total += $total; 

    $casenum = pull_xml($id, true, 'field', array(
      'label', 
      'Case Number'), 'value', false); 
    $lease_end = pull_xml($id, true, 'field', array(
      'id', 
      'lease_end'), 'value', false); 
    $date_range = pull_xml($id, true, 'field', array(
      'label', 
      'Tax Year'), 'value', false); 

    $detail_csv[] = array(
      $comp, 
      $casenum, 
      $total, 
      $lease_end, 
      $date_range); 
} 

任何輸入都將不勝感激!

+2

嘗試刪除' - > documentElement'部分,只是'$ xml-> getElem ...' –

+1

'$ xml-> documentElement'不是一個對象。 – h2ooooooo

回答

1

我認爲這個問題是這樣的比較:

如果($ XML-> documentElement->的getElementsByTagName($標記名)!= 0)

如果一無所獲,的getElements返回一個空數組是從不等於數字0,所以這總是評估爲真。試試對getElementsBy的結果調用.length ...

相關問題