用msxml生成xml文件时,第一次生成很正常,第二次生成的时候出现错误,弹出对话框:   RunTime Error!
   This application has requested the RunTime to terminate it in an unusual way.
   Please contact the application's support them for more information关键代码如下:
m_pXmlRoot = m_pDom->createElement(_T("Param"));//根节点
m_pDom->appendChild(m_pXmlRoot); m_pXmlRoot->Release();
m_pXmlRoot = NULL;第二次运行到m_pDom->createElement(_T("Param"));时调用了
inline void __cdecl CTrace::TraceV(const char *pszFileName, int nLine,
DWORD_PTR dwCategory, UINT nLevel, LPCWSTR pszFmt, va_list args) const
{
AtlTraceVU(m_dwModule, pszFileName, nLine, dwCategory, nLevel, pszFmt, args);
}
出错!
 怎么处理啊!
啥原因出的错?

解决方案 »

  1.   

    这个xml文件是不是已经存在了啊。不允许重复?
      

  2.   

    我没有保存文件啊,生成xml以后就直接调用
    strXml = (LPCSTR)m_pDom->Getxml();
    给发出去了
      

  3.   

    你的m_pDom没有指向某个XML文件?这个文件中如果已经存在名为Param的根节点,应该有问题吧
      

  4.   

    那我的m_pDom应该在析构函数中释放吗?
    即:
         if (m_pDom)
    {
    m_pDom->Release();
    }
    刚才的问题解决了,这是你所说的,我在生成strXml 后调用
              m_pDom->removeChild(m_pXmlRoot);
    就没有错了。
    不过在析构中这句话有错,啥原因??
      

  5.   

    老大,问题找到了!m_pDom->Release();是错误的
    应该是
    m_pDom.Release();但是我不找到为什么应该是用  .  而不是 ->  呢?m_pDom为 IXMLDOMDocumentPtr 类型的