1

我是 PHP 和 stackoverflow 的新手。我创建了一个脚本,它从表单中获取内容并搜索与给定类别和主题相对应的文件列表。现在,启动脚本时 xPath 部分会引发错误。它说:

致命错误:在第 10 行对非对象调用成员函数 getElementsByTagName()。

这是代码:

if (isset($_GET["subject"])){
    $subject = $_GET["subject"];
    $category = $_GET["category"];
    $doc = new DOMDocument();
    $doc->load('Files.xml');
    $xpath = new DOMXPath($doc);
    //subject
    $subjectpath = 'subject[@name="' . $subject . '"]';
    $ssubjectfiles = $xpath->query($subjectpath)->item(0);
    $subjectfiles = $ssubjectfiles->getElementsByTagName('file');
    //category
    $categorypath = 'subject[@name="' . $subject . '"]/category[@name="' . $category . '"]';
    $scategoryfiles = $xpath->query($categoryfiles)->item(0);
    $categoryfiles = $scategoryfiles->getElementsByTagName('file');
    function getFiles($files){
    foreach($files as $file){
        $filevalue = $file->nodeValue;
        echo '<li>' . $filevalue . '</li>';
    }
    }
    switch($category){
    case 'Select a category or leave to get all the results':
        getFiles($subjectfiles);
    break;
    default:
        getFiles($categoryfiles);
    }
}

为什么它不起作用?我必须以某种方式转换对象吗?

谢谢!


编辑

看起来问题出在相对链接上。我把它改成它http://localhost/Files.xml似乎工作。总之谢谢大家。

4

1 回答 1

1

$xpath->query($subjectpath) - 返回不是一个空的 DOMNodeList,所以 $xpath->query($subjectpath)->item(0) 返回 null,然后当你调用 $ssubjectfiles->getElementsByTagName('file') , $ssubjectfiles 为空,这里发生错误。

请阅读手册http://www.php.net/manual/en/book.dom.php

于 2012-11-06T20:18:50.720 回答