这是我的代码,我正在尝试使用Xpath显示xml的值,但是当我运行此代码时,我的代码中出现错误。
这是代码
<?php
$load = new DOMDocument();
$load = simplexml_load_file("testing.xml");
var_dump($load);
$xpath = new DOMXpath($load);
var_dump($xpath);
$path1 = "/clip/metadata[name=keywords]/value";
$query = $xpath->query($path1);
var_dump("$query");
?>
这是错误,我正在
Catchable fatal error: Argument 1 passed to DOMXPath::__construct() must be an instance of DOMDocument, instance of SimpleXMLElement given in C:\xampp\htdocs\xml-text\index.php on line 5
答案 0 :(得分:2)
如错误所述,您没有向构造函数传递适当的参数。 simplexml_load_file
会返回SimpleXmlElement
个对象,而不是DOMDocument
个对象。
答案 1 :(得分:1)
如错误中所述,您传递的是SimpleXmlElement
对象,而不是DOMDocument
个对象。
我之前的回答是不正确的。它显示了如何将SimpleXmlElement
转换为DOMElement
而不是DOMDocument
。
http://php.net/manual/en/domdocument.load.php是如何将xml文件正确加载到DOMDocument
对象中。
$load = new DOMDocument();
$load->load("testing.xml");
$xpath = new DOMXpath($load);
具体来说,为了获得名称为“关键字”的节点的值,您可以执行类似这样的操作
$load = new DOMDocument();
$load->preserveWhiteSpace = false;
$load->load(__DIR__ . "/testing.xml");
$xpath = new DOMXpath($load);
$path1 = '//clip/metadata/name[ . = "Keywords"]';
$query = $xpath->query($path1);
foreach($query as $entry) {
$value = $entry->parentNode->childNodes->item(1)->nodeValue;
}