<?xml version="1.0" encoding="utf-8" ?>
<DataSet>
<talbe1>
<col1>111</col1>
<col2>222</col2>
</talbe1>
<talbe1>
<col1>aaa</col1>
<col2>bbb</col2>
</talbe1>
<talbe1>
<col1>www</col1>
<col2>eee</col2>
</talbe1>
</DataSet>如何访问上述xml呢]?
CMarkup a;
a.Load("c:\\myxml.xml");
然后怎么办,怎么读出指定节点的数据?

解决方案 »

  1.   

    here is a post introducing CMarkup
    http://www.codeproject.com/soap/upclass.asp
      

  2.   

    CMarkup 没用过  它是干什么用的?
      

  3.   

    我写了个类封装它,可以看看用法
    /读取,初始化配置文件
    BOOL CXMLConfig::InitCXMLConfig( const TCHAR *fileName)
    {
    CString m_csText;
    unsigned char* pBuffer = NULL;
    int nFileLen = 0;
    CString lpszPathName = fileName/*L"image0.xml"*/;

    try
    {
    CFile file( lpszPathName, CFile::modeRead );
    nFileLen = file.GetLength();

    // Allocate Buffer for Ansi file data
    pBuffer = new unsigned char[nFileLen + 1];
    nFileLen = file.Read( pBuffer, nFileLen );
    file.Close();
    pBuffer[nFileLen] = '\0';
    }
    catch (CFileException*)
    {
    if ( pBuffer )
    delete pBuffer;
    }

    #if defined(_UNICODE)
    // Convert file to UNICODE if necessary
    int nWideSize = MultiByteToWideChar(CP_UTF8,0,(const char*)pBuffer,nFileLen,m_csText.GetBuffer(nFileLen),nFileLen);
    m_csText.ReleaseBuffer(nWideSize);
    #else
    m_csText = (char*)pBuffer;
    #endif

    // Convert newlines to CRLFs for CEdit
    CString csCRLFText;
    const _TCHAR* pSource = (LPCTSTR)m_csText;
    _TCHAR* pDest = csCRLFText.GetBuffer(m_csText.GetLength() * 2);
    int nSrcChar = 0, nDestChar = 0;
    while ( pSource[nSrcChar] )
    {
    if ( pSource[nSrcChar] == '\n' && (nSrcChar == 0 || pSource[nSrcChar-1]!='\r') )
    pDest[nDestChar++] = '\r';
    pDest[nDestChar++] = pSource[nSrcChar++];
    }
    csCRLFText.ReleaseBuffer(nDestChar);
    m_csText = csCRLFText;
    m_Markup.SetDoc(m_csText);
    m_Markup.ResetPos();
    delete [] pBuffer;
    m_Markup.FindElem(_T("Skins")); return TRUE;
    }
      

  4.   

    ?xml version="1.0" ?> 
    <Config>
      <DataBase>
        <Path></Path>
      </DataBase>
      <COM>
        <KYCOM></KYCOM>
        <MCCOM></MCCOM>
      </COM>
      <Skin>
        <SkinNum></SkinNum>
        <SKinFile1>Skin1.xml</SKinFile1>
      </Skin>
    </Config>
      

  5.   

    m_Markup.IntoElem();要对应上m_Markup.OutOfElem();才能继续同一级的搜索
    不然要复位再进行Findelement,Findcild什么的,