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を返し、uが$ ssubjectfiles-> getElementsByTagName('file')を呼び出すと、$ ssubjectfilesがnullであり、ここでエラーが発生します。

plzはマニュアルを読むhttp://www.php.net/manual/en/book.dom.php

于 2012-11-06T20:18:50.720 に答える