用MSXML读XML文件精华

XML的读法: 1.CoInitialize(NULL) 2.IXMLDOMDocument *pDoc; CoCreateInstance(CLSID_DOMDocument,NULL,CLSCTX_INPROC_SERVER,IID_IXMLDOMDocument,reinterpret_cast &pDoc))); 3.CComVariant vFile(strFileName); VARIANT_BOOL vBool; pDoc->load(vFile,&vBool); //检查是否成功用vBool == VARIANT_TRUE 4. IXMLDOMNode *pNode; pDoc->QueryInterface(IID_IXMLDOMNode, reinterpret_cast (&pNode)); 5. Node导航 (1)CComPtr pResultNode; pNode->selectSingleNode(L"//TOOLBARS/FAMILY", &pResultNode);//"//TOOLBARS/FAMILY", 为XML文件中具体的路径 (2) pNode->get_firstChild(&pChild); while( pChild ) { //可以读取本pChild的信息了 //移动到下一个兄弟结点 pChild->get_nextSibling(&pNext); pChild->Release(); pChild = pNext; } 6.Node信息 pNode->get_nodeName(&bstrNodeName); pNode->get_nodeTypeString(&bstrNodeType); pNode->get_nodeType(&eEnum); CString strValue; if ( eEnum == NODE_TEXT ) { BSTR bstrValue; pNode->get_text(&bstrValue); strOutput.Format(_T("%S"),bstrValue); SysFreeString(bstrValue); } else if ( eEnum == NODE_COMMENT ) { VARIANT vValue; pNode->get_nodeValue(&vValue); CString strValue; if ( vValue.vt == VT_BSTR ) strOutput.Format(_T("%S"),V_BSTR(&vValue)); else strOutput.Format(_T("Unknown comment type")); VariantClear(&vValue); } else if ( eEnum == NODE_PROCESSING_INSTRUCTION ) { strOutput.Format(_T("%S"), bstrNodeName); } else if ( eEnum == NODE_ELEMENT ) { strOutput.Format(_T("%S"), bstrNodeName); } else { // // Other types, include the type name. // strOutput.Format(_T("%S - %s"), bstrNodeName,strType); } SysFreeString(bstrNodeName); 7.Node Attributes信息. IXMLDOMNamedNodeMap *pAttrs; pNode->get_attributes(&pAttrs)); //Node Attributes导航: IXMLDOMNode *pChild; pAttrs->nextNode(&pChild); while(pChild) { pChild->get_nodeName(&bstrName); pChild->get_nodeValue(&vValue); pAttrs->nextNode(&pChild); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值