Javascript 尝试获取非对象php DOM的属性
我是DOMs的新手,我正在开发一个网站,当人们点击比如福特,链接会指向cars.php?model=FORD并显示所有福特车主。我把php放在如下位置:Javascript 尝试获取非对象php DOM的属性,javascript,php,xml,dom,Javascript,Php,Xml,Dom,我是DOMs的新手,我正在开发一个网站,当人们点击比如福特,链接会指向cars.php?model=FORD并显示所有福特车主。我把php放在如下位置: <?php //retrieve xml constants include("includes/constants.php"); //create instance of xml doc $ldoc = new DOMDocument(); //load login fild into $ldoc $ldoc ->
<?php
//retrieve xml constants
include("includes/constants.php");
//create instance of xml doc
$ldoc = new DOMDocument();
//load login fild into $ldoc
$ldoc -> load($LoginFile);
$xpath = new DOMXPath($ldoc);
$model = $_GET["model"];
$query = "//loginData/member/model[. = '".$model."']";
$queryResult = $xpath->query($query);
$queryNode = $queryResult->item(0)->parentNode;
foreach($queryNode as $parent)
{
$login = $parent->getElementsByTagName("login");
$loginValue = $login->item(0)->nodeValue;
echo ($loginValue);
}
?>
首先使用DOMXpath::evaluate()而不是DOMXpath::query()。使用evaluate()可以使用所有类型的Xpath表达式,使用query()只能返回一次节点列表 说到节点列表。表达式返回一个节点列表,其中包含
$queryNode=$queryResult->item(0)->parentNode代码>尝试读取返回节点列表中第一个节点的父节点。您的节点列表似乎为空,因此失败
使用xpath,您可以直接获取所有福特车型车主
$members = $this->evaluate("//loginData/member[model='FORD']");
这将返回所有成员元素,其子节点为“model”,文本内容为“FORD”。在您的描述中,您使用大写的“FORD”,在URL中使用小写的“FORD”。是哪一个
使用evaluate()/query()的第二个参数,可以为Xpath表达式提供上下文节点。将其与evaluate()一起使用可以直接从XML节点获取字符串值
foreach ($members as $member) {
var_dump(
$xpath->evaluate('string(//model)', $member)
);
}
这对我有用。尽管如此,我还是想指出,节点似乎不是空的,我仍然收到了PHP的通知:尝试获取非对象的属性。同样,evaluate的使用效果良好。非常感谢。