doutangliang7769 2010-07-30 09:43
浏览 136
已采纳

PHP DOMDocument:如何获得直接节点子节点

I've got the following:

http://pastie.org/1066861

I've got a Javascript function, that tells me to delete a given node from the parent, let's assume position 1 ( from 0 or 1, since we've got two child nodes on parent ), When doing $parent->getElementsByTagName and trying to remove the the $child->item( 1 ), I notice that PHP GetElementsByTagName is giving me a diferent position, for that specific node. So, there's no way to access the right node, that JS told.

I guess I should stay away of getElementsByTagName, and use getElementsById, but right now I would like to learn and understand why this doesnt work properly.

Here's some code: http://pastie.org/1066857

Thanks a lot for your atention ;D

  • 写回答

1条回答 默认 最新

  • douyanguo7964 2010-07-30 10:40
    关注

    Found a solution,

    /*
     * deleteNode() removes given node, in position X.
     */
    function deleteNode( $html, $strParent, $intNodePosition ) {
    
        $domhtml = DOMDocument::loadHTML($html); 
    
        $xpath = new DOMXPath($domhtml);
    
        $divs = $xpath->query( "*/div[@id='maindiv']/div" );
    
        $node = $divs->item( $intNodePosition );
    
        $node->parentNode->removeChild( $node );
    
        /*
        this wont work, but why ? It should
        $divs->removeChild( $node );
        */
    
    return $domhtml->saveHTML();
    
    }//fim deleteNode
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?