《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
(
ottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; color: rgb(0,
$targetElement
->
nextSibling
());
}
}
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
(
ottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; color: rgb(0,
$targetElement
->
nextSibling
());
}
}
Perl编译器:ActiverPerl 5.12
---------------------------------------------------------------------------------------------------------------------------------------
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 );
{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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。