源码如下: pDoc->load("d:\\he.xml"); 
MSXML2::IXMLDOMNodePtr  pNode;
pNode=pDoc->selectSingleNode("//Book");
MSXML2::DOMNodeType nodeType; 
          pNode->get_nodeType(&nodeType); 
MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap=NULL;
MSXML2::IXMLDOMNodePtr pAttrItem;
_variant_t variantValue;
pNode->get_attributes(&pAttrMap);
long count;
count=pAttrMap->get_length(&count);
pAttrMap->get_item(0,&pAttrItem);
//取得节点的值
pAttrItem->get_nodeTypedValue(&variantValue);
m_strId=(char *)(_bstr_t)variantValue;
xml文件:
<Book id="a" is="a">
   <Author>aa</Author>
   <Title>aaa</Title>
</Book>
问题:
    1.按照上述xml文件,下面代码
         pNode->get_attributes(&pAttrMap);
long count;
count=pAttrMap->get_length(&count);
pAttrMap->get_item(0,&pAttrItem);
//取得节点的值
pAttrItem->get_nodeTypedValue(&variantValue);
m_strId=(char *)(_bstr_t)variantValue;
     取得的count应该是2吧,我怎么一直是0?  如果是2,怎么把这列属性依次取出来呢?    2. 上述去属性程序如果放到一个树节点循环中好像到第二次就报内存异常,是没释放还是咋的?谢谢高人指点,结贴快!
     

解决方案 »

  1.   

    看你的pAttrMap是否正确获取到
      

  2.   

    我发的是网上最常见的例子程序,经测试就是上述现象,我觉得做过xml属性解析的人应该会发现这个地方有点问题,但我就是不明白问题出在哪
      

  3.   

    其实网上的例子也不一定是完全正确的,我觉得还是你那代码的问题,可参考
    http://topic.csdn.net/u/20080410/17/3443c5d7-c0bb-447d-99e4-cf93f1233915.html