MFC里可以直接使用DOM,不需要手动添加额外的头文件,只需要在CWinApp::InitInstance()里调用CoInitialize(NULL)初始化COM,在CWinApp::ExitInstance里调用CoUninitialize()释放COM就行了。
XML
<root>
<childnode>
<test attribut1=" att1" attribut2="att2" attribut3="att3"attribut4="att4"/>
</childnode>
</root>
//
//修改attribut4的值
CComPtr<IXMLDOMDocument> pDoc;
HRESULT hr= pDoc.CoCreateInstance(CLSID_DOMDocument);
if (Failed(hr))
{
return S_FALSE;
}
VARIANT_BOOL varBool;
COleVariant oleXmlFile=xmlFile; //cstring xmlFile xml文件的路径
pDoc->load(oleXmlFile,&varBool);
CComPtr<IXMLDOMNodeList> pNodeList;
pDoc->getElementsByTagName(L"test",&pNodeList); //找到test元素
CComPtr<IXMLDOMNode> pNode;
long nLen;
pNodeList->get_length(&nLen);
pNodeList->get_item(0,&pNode);
CComBSTR bstrName;
pNode->get_nodeName(&bstrName); //得到节点名称“test”
CComPtr<IXMLDOMNamedNodeMap> pNamenodeMap;
pNode->get_attributes(&pNamenodeMap); //得到节点的所有属性
CComPtr<IXMLDOMNode>pAttribNode;
pNamenodeMap->get_item(3,&pAttribNode); //得到attribut4属性,也是一个IXMLDOMNode类型
pAttribNode->get_nodeName(&bstrName); //得到节点名称“attribut4” pAttribNode->put_nodeValue(olePlmPwd); //修改属性值 pDoc->save(oleXmlFile); //保存