一,建立一个基于对话框的程序,工程名为xml;二, 初始化OLE.BOOL CXmlApp::InitInstance(){ AfxOleInit();…….} 三, 在对话框中增加一个按钮,ID为IDC_CREATE,我们在这个按钮的响应函数中生成一个xml文件.void CXmlDlg::OnCreate() { MSXML2::IXMLDOMDocumentPtr pDoc; MSXML2::IXMLDOMElementPtr xmlRoot ; //创建DOMDocument对象
//????不知道为什么创建不起??????? HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(!SUCCEEDED(hr))
{
//程序始终进到这里了,不知道为什么会建立不起domdocument对象
//我用的是vc6+win2000ADSserver 装了.netframe 而且在stdafx.h中引用了
//#import "msxml4.dll" 第一次接触,请大家指教 MessageBox("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!");
return ;//从这里返回了 } //根节点的名称为china pDoc->raw_createElement((_bstr_t)(char*)"china", &xmlRoot); pDoc->raw_appendChild(xmlRoot, NULL); MSXML2::IXMLDOMElementPtr childNode ; pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode); childNode->Puttext("WuHan");//节点值 childNode->setAttribute("population","8,000,000");//属性名,属性值 childNode->setAttribute("area","10000"); xmlRoot->appendChild(childNode); pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode); childNode->Puttext("ShangHai"); childNode->setAttribute("population","12,000,000"); childNode->setAttribute("area","12000"); xmlRoot->appendChild(childNode); //保存到文件 //如果不存在就建立,存在就覆盖 pDoc->save("f:\\he.xml"); }
//????不知道为什么创建不起??????? HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(!SUCCEEDED(hr))
{
//程序始终进到这里了,不知道为什么会建立不起domdocument对象
//我用的是vc6+win2000ADSserver 装了.netframe 而且在stdafx.h中引用了
//#import "msxml4.dll" 第一次接触,请大家指教 MessageBox("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!");
return ;//从这里返回了 } //根节点的名称为china pDoc->raw_createElement((_bstr_t)(char*)"china", &xmlRoot); pDoc->raw_appendChild(xmlRoot, NULL); MSXML2::IXMLDOMElementPtr childNode ; pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode); childNode->Puttext("WuHan");//节点值 childNode->setAttribute("population","8,000,000");//属性名,属性值 childNode->setAttribute("area","10000"); xmlRoot->appendChild(childNode); pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode); childNode->Puttext("ShangHai"); childNode->setAttribute("population","12,000,000"); childNode->setAttribute("area","12000"); xmlRoot->appendChild(childNode); //保存到文件 //如果不存在就建立,存在就覆盖 pDoc->save("f:\\he.xml"); }
IXMLDOMDocument2Ptr pDoc;
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(pDoc){
pDoc->async = false;
pDoc->resolveExternals = false;
pDoc->validateOnParse = true;
}
else{
TRACE(_T("Can not Create XML Document \r\n"));
return FALSE;
}
之前,或者说调用任何xml接口函数之前,你必须对com进行initialize:
HRESULT hr;
hr = CoInitialize(NULL);在所有的调用结束之后,必须进行反初始化:
CoUninitialize();你是否做了这个工作,否则,绝对无法调用成功.
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));