Почему после 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)
Кстати, вы теряете много памяти (outNewChild
а также newName
)
Других решений пока нет …