XML Document always empty... why?
-
Code below... cant understand why saved document is always completely empty. Any help appreciated, Thank you in advance.
hr = m_pXMLDoc->put_async(VARIANT_FALSE); if (FAILED(hr)) { ErrHandler(hr); } // We do not wish to validate when parsing in hr = m_pXMLDoc->put_validateOnParse(VARIANT_FALSE); if (FAILED(hr)) { ErrHandler(hr); } // During parse do not resolve external files hr = m_pXMLDoc->put_resolveExternals(VARIANT_FALSE); if (FAILED(hr)) { ErrHandler(hr); } ... CComVariant vType(MSXML2::NODE_ELEMENT); m_pXMLDoc->createNode(vType,_T("ROOT"), _T(""), &DOMRootNodePtr); for(nRecord = nRecord; nRecord < paryData->GetSize(); nRecord++) { pRow = paryData->GetAt(nRecord); if(pRow) { if(m_straryFields.GetSize() != pRow->fields.GetSize()) return -1; for(nLoop=0; nLoop < pRow->fields.GetSize(); nLoop++) { // output field name and data to export file str = pRow->fields.GetAt(nLoop); str.Replace(_T(' '), _T('_')); str.Replace(_T('('), _T('_')); str.Replace(_T(')'), _T('_')); strField = m_straryFields.GetAt(nLoop); strField.Replace(_T(' '), _T('_')); strField.Replace(_T('('), _T('_')); strField.Replace(_T(')'), _T('_')); bstr = str.AllocSysString(); bstrField = strField.AllocSysString(); CComVariant vType(MSXML2::NODE_ELEMENT); m_pXMLDoc->createNode(vType,bstrField, _T(""), &DOMNodePtr); hr = DOMRootNodePtr->appendChild(DOMNodePtr, &DOMNodePtr); if(FAILED(hr)) ErrHandler(hr); else { CComVariant vTextType(MSXML2::NODE_TEXT); hr = m_pXMLDoc->createTextNode(bstr, &DOMTextNodePtr); if(FAILED(hr)) ErrHandler(hr); else { DOMNodePtr->appendChild(DOMTextNodePtr, NULL); } } } } } try { VARIANT var; VariantInit(&var); V_BSTR(&var) = SysAllocString(m_strFilename); V_VT(&var) = VT_BSTR; hr=m_pXMLDoc->save(var); if(FAILED(hr)) ErrHandler(hr); hr=m_pXMLDoc->Release(); } catch(...) { ASSERT(FALSE); }
I get no errors at all but the xml document that is created is always empty. Thank you in advance, Chris -
Code below... cant understand why saved document is always completely empty. Any help appreciated, Thank you in advance.
hr = m_pXMLDoc->put_async(VARIANT_FALSE); if (FAILED(hr)) { ErrHandler(hr); } // We do not wish to validate when parsing in hr = m_pXMLDoc->put_validateOnParse(VARIANT_FALSE); if (FAILED(hr)) { ErrHandler(hr); } // During parse do not resolve external files hr = m_pXMLDoc->put_resolveExternals(VARIANT_FALSE); if (FAILED(hr)) { ErrHandler(hr); } ... CComVariant vType(MSXML2::NODE_ELEMENT); m_pXMLDoc->createNode(vType,_T("ROOT"), _T(""), &DOMRootNodePtr); for(nRecord = nRecord; nRecord < paryData->GetSize(); nRecord++) { pRow = paryData->GetAt(nRecord); if(pRow) { if(m_straryFields.GetSize() != pRow->fields.GetSize()) return -1; for(nLoop=0; nLoop < pRow->fields.GetSize(); nLoop++) { // output field name and data to export file str = pRow->fields.GetAt(nLoop); str.Replace(_T(' '), _T('_')); str.Replace(_T('('), _T('_')); str.Replace(_T(')'), _T('_')); strField = m_straryFields.GetAt(nLoop); strField.Replace(_T(' '), _T('_')); strField.Replace(_T('('), _T('_')); strField.Replace(_T(')'), _T('_')); bstr = str.AllocSysString(); bstrField = strField.AllocSysString(); CComVariant vType(MSXML2::NODE_ELEMENT); m_pXMLDoc->createNode(vType,bstrField, _T(""), &DOMNodePtr); hr = DOMRootNodePtr->appendChild(DOMNodePtr, &DOMNodePtr); if(FAILED(hr)) ErrHandler(hr); else { CComVariant vTextType(MSXML2::NODE_TEXT); hr = m_pXMLDoc->createTextNode(bstr, &DOMTextNodePtr); if(FAILED(hr)) ErrHandler(hr); else { DOMNodePtr->appendChild(DOMTextNodePtr, NULL); } } } } } try { VARIANT var; VariantInit(&var); V_BSTR(&var) = SysAllocString(m_strFilename); V_VT(&var) = VT_BSTR; hr=m_pXMLDoc->save(var); if(FAILED(hr)) ErrHandler(hr); hr=m_pXMLDoc->Release(); } catch(...) { ASSERT(FALSE); }
I get no errors at all but the xml document that is created is always empty. Thank you in advance, ChrisYou need to append the top level node to the m_pXMLDoc->documentElement.