【发布时间】:2012-10-26 19:50:44
【问题描述】:
我是 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,它似乎工作。总之谢谢大家。
【问题讨论】:
-
根节点下可能没有主题,但是你能显示你的XML吗?
-
@Gordon 看起来像。您可以在对它们进行任何其他操作之前尝试打印每个查询的结果。
标签: php xpath xml-parsing domxpath