本文整理汇总了C++中IXMLDOMNode::hasChildNodes方法的典型用法代码示例。如果您正苦于以下问题:C++ IXMLDOMNode::hasChildNodes方法的具体用法?C++ IXMLDOMNode::hasChildNodes怎么用?C++ IXMLDOMNode::hasChildNodes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IXMLDOMNode
的用法示例。
在下文中一共展示了IXMLDOMNode::hasChildNodes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Save
//.........这里部分代码省略.........
{
_ASSERTE(bsType!=NULL);
SetAttr(pChild, pAttrs, L"type", bsType);
::SysFreeString(bsType); bsType = NULL;
}
// Теперь собственно значение
if (nType != REG_MULTI_SZ)
{
_ASSERTE(bsValue != NULL);
SetAttr(pChild, pAttrs, L"data", bsValue);
::SysFreeString(bsValue); bsValue = NULL;
}
else // Тут нужно формировать список элементов <list>
{
VARIANT_BOOL bHasChild = VARIANT_FALSE;
DOMNodeType nodeType = NODE_INVALID;
// Если ранее был параметр "data" - удалить его из списка атрибутов
hr = pAttrs->getNamedItem(L"data", &pNode);
if (SUCCEEDED(hr) && pNode)
{
hr = pChild->removeChild(pNode, &pNodeRmv);
pNode->Release(); pNode = NULL;
if (pNodeRmv) { pNodeRmv->Release(); pNodeRmv = NULL; }
}
//TODO: может оставить перевод строки?
// Сначала почистим
#ifdef _DEBUG
hr = pChild->get_nodeType(&nodeType);
#endif
hr = pChild->hasChildNodes(&bHasChild);
if (bHasChild)
{
while((hr = pChild->get_firstChild(&pNode)) == S_OK && pNode)
{
hr = pNode->get_nodeType(&nodeType);
#ifdef _DEBUG
BSTR bsDebug = NULL;
pNode->get_text(&bsDebug);
if (bsDebug) ::SysFreeString(bsDebug); bsDebug = NULL;
#endif
hr = pChild->removeChild(pNode, &pNodeRmv);
if (pNodeRmv) { pNodeRmv->Release(); pNodeRmv = NULL; }
pNode->Release(); pNode = NULL;
}
}
// Теперь - добавляем список
wchar_t* psz = (wchar_t*)value;
BSTR bsNodeType = ::SysAllocString(L"line");
VARIANT vtType; vtType.vt = VT_I4; vtType.lVal = NODE_ELEMENT;
long nAllLen = nSize/2; // длина в wchar_t
long nLen = 0;
while(psz && *psz && nAllLen > 0)
{
hr = mp_File->createNode(vtType, bsNodeType, L"", &pNode);