[英]DOMXPath::evaluate(): Node From Wrong Document
好吧,這是一個有趣的故事,我一生都無法理解。
我做了一些擴展PHPs DOMNode類的類,並且在嘗試對其進行測試時,標題出現錯誤,並且我不明白為什么,因為Node肯定是從我理解的正確文檔中得出的。
我的PHPUhit測試如下:
class XPathTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$this->doc = new Document();
$this->xpath = new XPath($this->doc);
}
/**
* A single node should be returned from this expression
*/
public function testEvaluate()
{
$xml = '<data><test>node</test></data>';
$this->doc->loadXML($xml);
$result = $this->xpath->evaluate('/data/test/text()', $this->doc);
$this->assertInstanceOf('\\DOMText', $result);
$this->assertEquals($result->nodeValue, 'node');
}
}
目前,我的擴展類沒有什么特別的,它們具有父級的默認功能。
DOMXPath::evaluate(): Node From Wrong Document
有人遇到過這個錯誤嗎?
如果我不將$this->doc
傳遞給xpath評估函數,那么我什么都沒有。
事實證明, 在將DOMDocument加載了XML 之后 ,必須將DOMXPath對象添加到DOMDocument中。
因此,以下是實例化此測試的正確方法:
class XPathTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$this->doc = new Document();
$xml = '<data><test>node</test></data>';
$this->doc->loadXML($xml);
$this->xpath = new XPath($this->doc);
}
/**
* A single node should be returned from this expression
*/
public function testEvaluate()
{
$result = $this->xpath->evaluate('//test/text()');
$this->assertInstanceOf('\\Manneken\\Dom\\Text', $result);
$this->assertEquals($result->nodeValue, 'node');
}
}
咄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.