加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

用Perl实现XML DOM的insertAfter函数

发布时间:2020-12-16 00:37:03 所属栏目:大数据 来源:网络整理
导读:《JavaScriptDOM编程艺术》一书中曾经用JS实现过MSXML不支持的insertAfter函数,刚才我用Perl在Windows平台实现这个函数: use Win32:: OLE qw(in with) ; use strict ; use constant MSXMLDOM = "MSXML2.DOMDOCUMENT.4.0" ; sub insertAfter { ???? my ( $n

《JavaScriptDOM编程艺术》一书中曾经用JS实现过MSXML不支持的insertAfter函数,刚才我用Perl在Windows平台实现这个函数:

  
  
use Win32:: OLE qw(in with) ;
use strict ;

use constant MSXMLDOM => "MSXML2.DOMDOCUMENT.4.0" ;

sub insertAfter {
???? my ( $newElement , $targetElement ) = @_ ;
???? # my $lastChild = $parent->{lastChild};

???? # Next line can NOT work in Perl.
???? # if($lastChild && $lastChild == $targetElement)

???? if ( ! $targetElement -> nextSibling ())

???? {
???????? $parent -> appendChild ( $newElement );
???? }
???? else
???? {
???????? $parent -> insertBefore ( $targetElement -> nextSibling ());
???? }
}


Perl编译器:ActiverPerl 5.12
最新代码见: https://gist.github.com/1074492


---------------------------------------------------------------------------------------------------------------------------------------
11/07/22 今天又用C++实现了一遍,代码如下:

   
   
bool CXmlUtil :: InsertAfter ( const XMLDOMNodePtr & nodeNew ,
const XMLDOMNodePtr & nodeTarget )
{
if ( ! nodeNew || ! nodeTarget )
{
return false ;
}

XMLDOMNodePtr nodeParent ;
HRESULT hr = nodeTarget -> get_parentNode ( & nodeParent );

if ( FAILED ( hr ) || nodeParent == NULL )
{
return false ;
}

XMLDOMNodePtr nodeSibling ;
hr = nodeTarget -> get_nextSibling ( & nodeSibling );
ASSERT ( SUCCEEDED ( hr ));

if ( nodeSibling )
{
hr = nodeParent -> insertBefore ( nodeNew , _variant_t ( nodeSibling . GetInterfacePtr ()), NULL );
ASSERT ( SUCCEEDED ( hr ));
}
else
{
hr = nodeParent -> appendChild ( nodeNew ,179); ">NULL );
ASSERT ( SUCCEEDED ( hr ));
}

return true ;
}

??

环境说明: MSXML4.0 + Visual Studio 2008
Last version:? https://gist.github.com/1098668

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读