Skip to content

Instantly share code, notes, and snippets.

@thinkhy
Created July 22, 2011 01:30
Show Gist options
  • Save thinkhy/1098668 to your computer and use it in GitHub Desktop.
Save thinkhy/1098668 to your computer and use it in GitHub Desktop.
MSXML InsertAfter
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, NULL);
ASSERT(SUCCEEDED(hr));
}
return true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment