Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. XML Document always empty... why?

XML Document always empty... why?

Scheduled Pinned Locked Moved C / C++ / MFC
xmljsonhelpquestionannouncement
2 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    Chris Ulliott
    wrote on last edited by
    #1

    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

    D 1 Reply Last reply
    0
    • C Chris Ulliott

      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

      D Offline
      D Offline
      Doug Mitchell
      wrote on last edited by
      #2

      You need to append the top level node to the m_pXMLDoc->documentElement.

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups