刚刚弄了下XML,解析的时候别的都很顺利,结果到了<Connection Action='UploadASMResult'><VehicleInfo></VehicleInfo><ASMResult 2540NO='2'></ASMResult></Connection>这句开始出错,我找了下原因,发现在  ASMResult节点里有个 2540NO的属性,我如果给改成 NO2540,不让其以数字开头,那么我在LoadXML的时候就正确了,,不明白为什么,我用其他的XML解析起实验,可以读出以数字开头的属性啊,为什么我的就不行,大家给我个方法哈???

解决方案 »

  1.   

    我这里没问题啊
    IXMLDOMElementPtr pElem=IXMLDOMElementPtr(i_pNode);
    VARIANT varID=pElem->getAttribute(_bstr_t(i_sAttName));
    varID=="1ID_DOC_DRAFT";
    你跟踪一下,出问题的代码放上来
      

  2.   


    CoInitialize(NULL); //初始化COM 环境 
    HRESULT hr =pDoc.CreateInstance(__uuidof(MSXML::DOMDocument)); 
    if(!SUCCEEDED(hr))
    {
    m_Error.Format("%s","无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!");
    m_LogFile.Open("Log.txt",FALSE);
    m_LogFile.AppendString(lHandle,m_Error,TRUE);
    m_LogFile.Close();
    return "0" ;
    }

    if(!pDoc->loadXML(bstrXML))     //跟踪到这的时候,就给返回错了,但是我改为以字母开头的话就没有错了
    {
    m_Error.Format("XML字符串错误:%d",GetLastError());
    m_LogFile.Open("Log.txt",FALSE);
    m_LogFile.AppendString(lHandle,m_Error,TRUE);
    m_LogFile.Close();
    return "0";
    }
    _variant_t var; MSXML::IXMLDOMElementPtr pElement=pDoc->selectSingleNode("Connection"); var=pElement->getAttribute("Action");
      

  3.   

    能再把你出问题的尽量简化的xml文件(最好只有一个xml语句:))放上来吗?
      

  4.   

    我是调用的字符串哈,不是文件的<Connection Action='UploadASMResult'><VehicleInfo></VehicleInfo><ASMResult 2540NO='2'></ASMResult></Connection>
    就这句
      

  5.   

    用的 LoadXML不是Load已经精简的差不多了
      

  6.   

    XML文件语法问题
    XML文件中的内容名称不能是前面带数字,就像VC中的变量
    但是后面的字符串内容就可以前面带数字了,就像VC中的字符串
      

  7.   

    :)
    这个帖子是我得分最多的,以前一个问我STL的map问题得了190,还有一个Unicode编码的问题得了180,另外的一个数据库的问题得了155。
    希望以后得个300分以上的帖子:)