- 文章转自:http://xuchang163email.blog.163.com/blog/static/75963966200810723431234/
- XML文件为:
-
- <?xml version="1.0"?>
- <BitComet Author="RnySmile" Version="0.1">
- <Settings>
- <LastSaveLocation>E:\电子书</LastSaveLocation>
- <ListenPort>8497</ListenPort>
- <GlobalMaxUploadRate>3072</GlobalMaxUploadRate>
- <LastAdCacheClearDate>13104</LastAdCacheClearDate>
- <LastTrackerKey>16547</LastTrackerKey>
- <TotalUpload>303008</TotalUpload>
- <TotalDownload>1180107</TotalDownload>
- <LastExitTime>1132203124</LastExitTime>
- </Settings>
- </BitComet>
- 代码为:
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- #include <msxml.h>
- #include <atlstr.h>
- #import "msxml.dll" raw_interfaces_only
- int _tmain(int argc, _TCHAR* argv[])
- {
- ::CoInitialize(NULL);
- CComPtr<MSXML::IXMLDOMDocument> spDoc;
- HRESULT hr = spDoc.CoCreateInstance(__uuidof(MSXML::DOMDocument)); //创建文档对象
- VARIANT_BOOL bFlag;
- hr = spDoc->load(CComVariant(L"BitComet.xml"), &bFlag); //load xml文件
- CComPtr<MSXML::IXMLDOMElement> spElement;
- hr = spDoc->get_documentElement(&spElement); //获取根结点
- CComBSTR strTagName;
- hr = spElement->get_tagName(&strTagName);
- cout << "------TagName------" << endl;
- cout << CString(strTagName) << endl;
- CComPtr<MSXML::IXMLDOMNodeList> spNodeList;
- hr = spElement->get_childNodes(&spNodeList); //获取子结点列表
- long lCount;
- hr = spNodeList->get_length(&lCount);
- for (long i=0; i<lCount; ++i)
- {
- CComVariant varNodeValue;
- CComPtr<MSXML::IXMLDOMNode> spNode;
- MSXML::DOMNodeType NodeType;
- CComPtr<MSXML::IXMLDOMNodeList> spChildNodeList;
- hr = spNodeList->get_item(i, &spNode); //获取结点
- hr = spNode->get_nodeType(&NodeType); //获取结点信息的类型
- if (NODE_ELEMENT == NodeType)
- {
- hr = spNode->get_childNodes(&spChildNodeList);
- long childLen;
- hr = spChildNodeList->get_length(&childLen);
- cout << "------NodeList------" << endl;
- for (int j=0; j<childLen; ++j)
- {
- CComPtr<MSXML::IXMLDOMNode> spChildNode;
- CComBSTR value;
- hr = spChildNodeList->get_item(j, &spChildNode);
- hr = spChildNode->get_nodeName(&value); //获取结点名字
- cout << CString(value) << endl;
- hr = spChildNode->get_text(&value); //获取结点的值
- cout << CString(value) << endl << endl;
- spChildNode.Release();
- }
- }
- spNode.Release();
- spChildNodeList.Release();
- }
- spNodeList.Release();
- spElement.Release();
- spDoc.Release();
- ::CoUninitialize();
- return 0;
- }
MFC读XML文件
最新推荐文章于 2020-08-31 12:28:55 发布