Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试获取非对象php DOM的属性_Javascript_Php_Xml_Dom - Fatal编程技术网

Javascript 尝试获取非对象php DOM的属性

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 ->

我是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 -> 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的使用效果良好。非常感谢。