VC++对XML文件操作(二)

2014-07-19 23:02:51 · 作者: · 浏览: 192

 

  //加载文件

  pDoc->load("d://he.xml");

  /* 方法一

  MSXML2::IXMLDOMNodePtr  pNode;

  //在树中查找名为Book的节点,"//"表示在任意一层查找

  pNode=pDoc->selectSingleNode("//Book");

  MSXML2::DOMNodeType nodeType;

  //得到节点类型

  pNode->get_nodeType(&nodeType);

  //节点名称

  CString strName;

  strName=(char  *)pNode->GetnodeName();

  //节点属性,放在链表中

  MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap=NULL;

  MSXML2::IXMLDOMNodePtr   pAttrItem;

  _variant_t variantvalue;

  pNode->get_attributes(&pAttrMap);

  long count;

  count=pAttrMap->get_length(&count);

  pAttrMap->get_item(count,& pAttrItem);

  //pAttrMap->get_item(0,& pAttrItem);  //同上,验证count值

  //取得节点的值

  pAttrItem->get_nodeTypedValue(&variantvalue);

  m_strId=(char *)(_bstr_t)variantvalue;

  /* 测试

  CString s;

  s.Format(_T("%d"),count);

  m_strAuthor=(char *)(_bstr_t)s;

  */

  //方法二

  //MSXML2::IXMLDOMElementPtr pRootNode = pDoc->documentElement;

  //查找Book节点

  MSXML2::IXMLDOMNodePtr pBookNode = pDoc->selectSingleNode(_T("Book"));

  //CString s;

  //long size = pBookNode->length;

  MSXML2::IXMLDOMNodePtr pAuthorNode = pBookNode->selectSingleNode(_T("Author"));

  MSXML2::IXMLDOMNodePtr pTitleNode = pBookNode->selectSingleNode(_T("Title"));

  //s.Format(_T("%sauthor: %s\ttitle: %s\r\n"),s,(LPCTSTR)pAuthorNode->text,(LPCTSTR)pTitleNode->text);

  MSXML2::DOMNodeType nodeType;

  //得到节点类型

  pBookNode->get_nodeType(&nodeType);

  MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap=NULL;

  MSXML2::IXMLDOMNodePtr   pAttrItem;

  pBookNode->get_attributes(&pAttrMap);  //获取节点所有属性

  long count;

  count=pAttrMap->get_length(&count);

  pAttrMap->get_item(count,& pAttrItem); //获得第count个item值

  _variant_t variantvalue;

  pAttrItem->get_nodeTypedValue(&variantvalue);

  //m_strId = (char *)(_bstr_t)variantvalue;