64,637
社区成员
发帖
与我相关
我的任务
分享
MSXML2::IXMLDOMElementPtr pRoot = pDoc->GetfirstChild();
// find the sub node "root2"
MSXML2::IXMLDOMNodePtr pNode = pRoot->selectSingleNode("root2");
// find sub node "XXX1"
pNode = pNode->selectSingleNode("XXX1");
// get node "XXX1"'s value
VARIANT varVal;
pNode->get_nodeTypedValue(&varVal);
std::cout << (char*)(_bstr_t)varVal << std::endl;
好好看下上面提到的几篇文章, 其实都很简单的void ReadXML(MSXML2::IXMLDOMElementPtr pRoot)
{
MSXML2::IXMLDOMNodeListPtr pNodeList = pRoot->GetchildNodes();
int nodeCount = pNodeList->length;
if (nodeCount > 1)
{
MSXML2::IXMLDOMElementPtr xmlNode;
for (int i = 0; i < nodeCount; i++)
{
xmlNode = pNodeList->item[i];
ReadXML(xmlNode);
}
xmlNode.Release();
}
else
{
std::cout << (char*)pRoot->nodeName << ": ";
VARIANT varVal;
pRoot->get_nodeTypedValue(&varVal);
std::cout << (char*)(_bstr_t)varVal << std::endl;
}
pNodeList.Release();
}
int _tmain(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL);
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if (FAILED(hr))
{
return 0;
}
if (!pDoc->load("C:\\1.xml"))
{
pDoc.Release();
::CoUninitialize();
return 0;
}
MSXML2::IXMLDOMElementPtr pRoot = pDoc->GetfirstChild();
ReadXML(pRoot);
pRoot.Release();
pDoc.Release();
::CoUninitialize();
system("pause");
return 0;
}
XMl的内容为:
<root1>
<root2>
<XXX1>11</XXX1>
<XXX2>22</XXX2>
</root2>
<root3>
<XXX1>33</XXX1>
<XXX2>44</XXX2>
</root3>
<root3>
<XXX1>55</XXX1>
<XXX2>66</XXX2>
</root3>
</root1>
另外推荐楼主看这几篇, 之后基本的xml操作应该没问题:
http://chuansu.iteye.com/blog/1445628
http://bbs.csdn.net/topics/60016534
http://blog.csdn.net/loveandangle/article/details/6639901