2008-03-31 11:32 A.M.
|
void
CMonitorEmulationView::LoadTree()
{ HTREEITEM CityTree,CompTree; char path[256]; memset(path,0,256); GetModuleFileName(NULL,path,256); LPCTSTR urf="TreeXML.xml"; strcat(p,urf);![]() xml::IXMLDOMDocumentPtr pXMLDoc(__uuidof(xml::DOMDocument));![]() if(!PathFileExists(path)) return; try { pXMLDoc->load(path); }![]() catch(_com_error& e) { MessageBox("文件读取失败: " + e.Description(), "错误", MB_ICONWARNING); return; } xml::IXMLDOMNodeListPtr pNodeList=NULL;![]() xml::IXMLDOMElementPtr spElement; HRESULT hr = pXMLDoc->get_documentElement(&spElement); //获取根结点![]() CComBSTR strTagName;![]() hr = spElement->get_tagName(&strTagName);![]() xml::IXMLDOMNodeListPtr spNodeList;![]() hr = spElement->get_childNodes(&spNodeList); //获取子结点列表![]() long lCount; ![]() hr = spNodeList->get_length(&lCount);![]() for (long i=0; i<lCount; ++i) { CComVariant varNodeValue;![]() xml::IXMLDOMNodePtr spNode; xml::DOMNodeType NodeType; xml::IXMLDOMNodeListPtr spChildNodeList; hr = spNodeList->get_item(i, &spNode); //获取结点 hr = spNode->get_nodeType(&NodeType); //获取结点信息的类型 xml::IXMLDOMNamedNodeMapPtr pAttrs = NULL; xml::IXMLDOMNodePtr pAttrItem; spNode->get_attributes(&pAttrs); long nCount ; pAttrs->get_length(&nCount); for(int i = 0 ; i < nCount ; i++) { pAttrs->get_item(i,&pAttrItem); //我们可以通过函数get_nodeName,get_nodeTypedValue得到属性名和属性值 //也可以直接得到 CString strAttrName = (char*)(_bstr_t)pAttrItem->nodeName; CString strAttrValue = (char*)(_bstr_t)pAttrItem->nodeTypedValue; CityTree=m_wndTreeCtrl.InsertItem(_bstr_t(strAttrValue),userItem[0]);//父项1插入子项 }![]() ![]() if (NODE_ELEMENT == NodeType) { hr = spNode->get_childNodes(&spChildNodeList); long childLen; hr = spChildNodeList->get_length(&childLen); for (int j=0; j<childLen; ++j) { xml::IXMLDOMNodePtr spChildNode; CComBSTR value; hr = spChildNodeList->get_item(j, &spChildNode); hr = spChildNode->get_nodeName(&value); //获取结点名字 hr = spChildNode->get_text(&value); //获取结点的值 CString strValue=(char*)(_bstr_t)value; strValue.TrimRight();![]() CompTree=m_wndTreeCtrl.InsertItem((_bstr_t)strValue,CityTree);//父项1插入子项![]() spChildNode.Release(); } } spNode.Release(); spChildNodeList.Release(); } spNodeList.Release(); spElement.Release(); pXMLDoc.Release(); }
|
最后
以上就是平淡大雁最近收集整理的关于VC++读取XML文件生成树的全部内容,更多相关VC++读取XML文件生成树内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。


HTREEITEM CityTree,CompTree;
}
}
发表评论 取消回复