簡體   English   中英

DOMXPath :: evaluate():錯誤文檔中的節點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM