gpt4 book ai didi

c++ - appendChild xml c++ 无法按需工作

转载 作者:数据小太阳 更新时间:2023-10-29 02:36:14 26 4
gpt4 key购买 nike

为什么在执行appendChild后,我无法读取下一个节点?

(newChildList->get_item(count,&pNewChild))

appendChild API 没有正常工作。放置此行后,我无法在循环中获取下一个 get_item()。它返回 pNewChild,它是 NULL。为什么会这样?

IXMLDOMNode *pNewChild=NULL,*outNewChild;
IXMLDOMNodeList *newChildList=NULL;
BSTR newName;
long len=0;
HRESULT hr=S_OK;

//aggregate attribute
//CHK_HR(aggregateAttribute(pNodeNew,pXMLDomSrc,pXMLDomNew));

//read the list of child
CHK_HR(pNodeNew->get_childNodes(&newChildList));
CHK_HR(newChildList->get_length(&len));
//go over all the children
for(long count=0;count<len;count++)
{
hr =newChildList->get_item(count,&pNewChild);
CHK_HR(pNewChild->get_nodeName(&newName));

USES_CONVERSION;
string temp= W2T(newName);
temp = temp.substr(temp.find_first_of("/:")+1);
if (!temp.compare("tuple"))
{
//CHK_HR(aggregateTuple(pXMLDomSrc,pNewChild));
}
else
{
CHK_HR(pXMLElement->appendChild(pNewChild,&outNewChild));
}
SAFE_RELEASE(pNewChild);
//SysFreeString(newName);
}

CleanUp:
//SAFE_RELEASE(newChildList);
SAFE_RELEASE(pNewChild);
return hr;

最佳答案

appendChild 将节点移动到别处,每次都将子列表减一。

试试这个:

// reverse loop from index base 0 "len-1" to 0
for(long count=len-1;count>=0;--count)

附带说明一下,您泄漏了大量内存(outNewChildnewName)

关于c++ - appendChild xml c++ 无法按需工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14919199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com