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

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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?