PHPUnit的测试中,我有这显然是基本代码:的XPath在与Zend
$docSrc =
'<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title /></head>
<body><p>Test paragraph.</p></body>
</html>';
$domDoc = new DOMDocument();
$domDoc->loadXML($docSrc);
$xpath = new DOMXPath($domDoc);
$nodeList = $xpath->query('//p');
$this->assertTrue($nodeList->length == 1);
应该成功,但失败草草收场,长度为0,我一直整天寻找一个解决方案,但无济于事。
哇谢谢!有用!不幸的是,我的原始代码:
$query = new Zend_Dom_Query($docSrc);
$xpathQuery = '//p';
$result = $query->queryXpath($xpathQuery);
$this->assertTrue($result->count() == 1);
认为它是一个XML并执行loadXML。你有什么想法为什么发生这种情况?
好吧,我发现罪魁祸首某处Zend库中:
if ('<' . '?xml' == substr(trim($document), 0, 5)) {
return $this->setDocumentXml($document, $encoding);
}
我不知道这是否是正确的,因为它是一个XML文件,但是加载XML不起作用。
好的,我正在做一些研究。显然,这个问题是与命名空间...
无关建议:使用更具体assertEquals()等断言将产生更多的信息失败消息。以上就变成了'self :: assertEquals(1,$ result-> count());'所以失败会说“期望1但是3”而不是“期望真实但是错误”。 – 2011-05-14 00:19:58