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);
}
任何輸入都將不勝感激!
嘗試刪除' - > documentElement'部分,只是'$ xml-> getElem ...' –
'$ xml-> documentElement'不是一個對象。 – h2ooooooo