这个是cloneNode,它第一个参数为TRUE时,为复制参数节点的子节点,但我下面的程序却不复制子节点,问了好久都没有答案?
下面程序可直接运行#include <stdio.h>
#include <windows.h>
#import <msxml4.dll> raw_interfaces_only
using namespace MSXML2;// Helper function to create a DOM instance.
IXMLDOMDocument * DomFromCOM()
{
IXMLDOMDocument *pxmldoc = NULL; CoCreateInstance(__uuidof(DOMDocument40),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IXMLDOMDocument),
(void**)&pxmldoc); pxmldoc->put_async(VARIANT_FALSE);
pxmldoc->put_validateOnParse(VARIANT_FALSE);
pxmldoc->put_resolveExternals(VARIANT_FALSE);
pxmldoc->put_preserveWhiteSpace(VARIANT_TRUE); return pxmldoc;}
int main(int argc, char* argv[])
{
IXMLDOMDocument *pXMLDom=NULL;
CoInitialize(NULL);
pXMLDom = DomFromCOM(); IXMLDOMNode *pNode1 = NULL;
_variant_t varTyp1((short)NODE_ELEMENT);
_bstr_t varName1(L"BOOK");
pXMLDom->createNode( varTyp1, varName1, L"", &pNode1 );
IXMLDOMNode *pNode2 =NULL;
_variant_t varTyp2((short)NODE_TEXT);
_bstr_t varName2(L"book");
pXMLDom->createNode( varTyp2, varName2, L"", &pNode2 );
pNode2->put_text(L"I like read book!"); IXMLDOMNode *pNode3 = NULL;
pNode1->appendChild( pNode2, &pNode3 ); BSTR bstr1;
pNode1->get_xml( &bstr1 );
printf("%S\n", bstr1 ); //复制节点
IXMLDOMNode *pNode4 = NULL;
pNode1->cloneNode( TRUE, &pNode4 ); //TRUE说明复制子节点
BSTR bstr2;
pNode4->get_xml( &bstr2 );
printf("%S\n", bstr2 );
CoUninitialize();
return 0;
}
下面程序可直接运行#include <stdio.h>
#include <windows.h>
#import <msxml4.dll> raw_interfaces_only
using namespace MSXML2;// Helper function to create a DOM instance.
IXMLDOMDocument * DomFromCOM()
{
IXMLDOMDocument *pxmldoc = NULL; CoCreateInstance(__uuidof(DOMDocument40),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IXMLDOMDocument),
(void**)&pxmldoc); pxmldoc->put_async(VARIANT_FALSE);
pxmldoc->put_validateOnParse(VARIANT_FALSE);
pxmldoc->put_resolveExternals(VARIANT_FALSE);
pxmldoc->put_preserveWhiteSpace(VARIANT_TRUE); return pxmldoc;}
int main(int argc, char* argv[])
{
IXMLDOMDocument *pXMLDom=NULL;
CoInitialize(NULL);
pXMLDom = DomFromCOM(); IXMLDOMNode *pNode1 = NULL;
_variant_t varTyp1((short)NODE_ELEMENT);
_bstr_t varName1(L"BOOK");
pXMLDom->createNode( varTyp1, varName1, L"", &pNode1 );
IXMLDOMNode *pNode2 =NULL;
_variant_t varTyp2((short)NODE_TEXT);
_bstr_t varName2(L"book");
pXMLDom->createNode( varTyp2, varName2, L"", &pNode2 );
pNode2->put_text(L"I like read book!"); IXMLDOMNode *pNode3 = NULL;
pNode1->appendChild( pNode2, &pNode3 ); BSTR bstr1;
pNode1->get_xml( &bstr1 );
printf("%S\n", bstr1 ); //复制节点
IXMLDOMNode *pNode4 = NULL;
pNode1->cloneNode( TRUE, &pNode4 ); //TRUE说明复制子节点
BSTR bstr2;
pNode4->get_xml( &bstr2 );
printf("%S\n", bstr2 );
CoUninitialize();
return 0;
}
解决方案 »
- 关于CTypedPtrList<CObList, CFriend*> m_frdList;
- 如何用VC实现当Vmware虚拟机关机后自动关闭vmware.exe文件
- 关于聊天客户端UDP通信的多端口实现
- MFC ActiveX控件消息及刷新的问题,凡是路过的请进来坐坐
- 再提高难度问题,关于用鼠标拖动窗口移动
- 关于sql语句的一个简单问题,很急,在线等!
- 急问位图文件如何显示(Win32 Application),请指点!!!!!!!!!!!!!!!
- live555 客户端?
- 有谁在看<<com本质论>>? P145的后向指针计算不大明白,给讲一下
- VC++如何实现IE7.0以上版本,对页面进行扩大缩小一定比例
- VC中的修改问题
- 这二个程序有什么不同?(一个可正常运行,一个会出错)
pNode1->appendChild( pNode2, &pNode3 );
这个执行怎么样?