刚刚弄了下XML,解析的时候别的都很顺利,结果到了<Connection Action='UploadASMResult'><VehicleInfo></VehicleInfo><ASMResult 2540NO='2'></ASMResult></Connection>这句开始出错,我找了下原因,发现在 ASMResult节点里有个 2540NO的属性,我如果给改成 NO2540,不让其以数字开头,那么我在LoadXML的时候就正确了,,不明白为什么,我用其他的XML解析起实验,可以读出以数字开头的属性啊,为什么我的就不行,大家给我个方法哈???
IXMLDOMElementPtr pElem=IXMLDOMElementPtr(i_pNode);
VARIANT varID=pElem->getAttribute(_bstr_t(i_sAttName));
varID=="1ID_DOC_DRAFT";
你跟踪一下,出问题的代码放上来
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");
就这句
XML文件中的内容名称不能是前面带数字,就像VC中的变量
但是后面的字符串内容就可以前面带数字了,就像VC中的字符串
这个帖子是我得分最多的,以前一个问我STL的map问题得了190,还有一个Unicode编码的问题得了180,另外的一个数据库的问题得了155。
希望以后得个300分以上的帖子:)